{"version":3,"sources":["node_modules/@angular/material/fesm2022/autocomplete.mjs","node_modules/marked/lib/marked.esm.js","node_modules/ngx-markdown/fesm2022/ngx-markdown.mjs","libs/galaxy/pipes/src/sentence-case/sentence-case.pipe.ts","libs/galaxy/pipes/src/address/address.pipe.ts","libs/galaxy/pipes/src/async-status/async-status.pipe.ts","node_modules/currency-symbol-map/map.js","node_modules/currency-symbol-map/currency-symbol-map.js","node_modules/locale-currency/map.js","node_modules/locale-currency/index.js","node_modules/date-fns/esm/locale/cs/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/cs/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/cs/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/cs/_lib/localize/index.js","node_modules/date-fns/esm/locale/cs/_lib/match/index.js","node_modules/date-fns/esm/locale/cs/index.js","node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/de/_lib/localize/index.js","node_modules/date-fns/esm/locale/de/_lib/match/index.js","node_modules/date-fns/esm/locale/de/index.js","node_modules/date-fns/esm/locale/en-CA/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/en-CA/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/en-CA/index.js","node_modules/date-fns/esm/locale/es/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/es/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/es/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/es/_lib/localize/index.js","node_modules/date-fns/esm/locale/es/_lib/match/index.js","node_modules/date-fns/esm/locale/es/index.js","node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","node_modules/date-fns/esm/locale/fr/_lib/match/index.js","node_modules/date-fns/esm/locale/fr/index.js","node_modules/date-fns/esm/locale/fr-CA/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/fr-CA/index.js","node_modules/date-fns/esm/locale/nl/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/nl/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/nl/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/nl/_lib/localize/index.js","node_modules/date-fns/esm/locale/nl/_lib/match/index.js","node_modules/date-fns/esm/locale/nl/index.js","node_modules/date-fns/esm/locale/index.js","libs/galaxy/utility/locale/src/locale-utils.ts","libs/galaxy/utility/locale/public_api.ts","libs/galaxy/utility/locale/index.ts","libs/galaxy/utility/currency-utils/src/currency-utils.ts","libs/galaxy/utility/currency-utils/public_api.ts","libs/galaxy/utility/currency-utils/index.ts","libs/galaxy/pipes/src/currency/currency.pipe.ts","libs/galaxy/utility/date-utils/src/interface.ts","libs/galaxy/utility/date-utils/src/date-utils.ts","libs/galaxy/utility/date-utils/public_api.ts","libs/galaxy/utility/date-utils/index.ts","libs/galaxy/pipes/src/date/date.pipe.ts","libs/galaxy/utility/ordinal-utils/src/ordinal-utils.ts","libs/galaxy/utility/ordinal-utils/public_api.ts","libs/galaxy/utility/ordinal-utils/index.ts","libs/galaxy/pipes/src/ordinal/ordinal.pipe.ts","libs/galaxy/pipes/src/i-trust-this-html/i-trust-this-html.pipe.ts","node_modules/autolinker/dist/es2015/version.js","node_modules/autolinker/dist/es2015/utils.js","node_modules/autolinker/dist/es2015/regex-lib.js","node_modules/autolinker/dist/es2015/html-tag.js","node_modules/autolinker/dist/es2015/truncate/truncate-smart.js","node_modules/autolinker/dist/es2015/truncate/truncate-middle.js","node_modules/autolinker/dist/es2015/truncate/truncate-end.js","node_modules/autolinker/dist/es2015/anchor-tag-builder.js","node_modules/autolinker/dist/es2015/match/abstract-match.js","node_modules/autolinker/dist/es2015/parser/tld-regex.js","node_modules/autolinker/dist/es2015/parser/uri-utils.js","node_modules/autolinker/dist/es2015/match/url-match.js","node_modules/autolinker/dist/es2015/parser/email-utils.js","node_modules/autolinker/dist/es2015/match/email-match.js","node_modules/autolinker/dist/es2015/parser/hashtag-utils.js","node_modules/autolinker/dist/es2015/match/hashtag-match.js","node_modules/autolinker/dist/es2015/parser/mention-utils.js","node_modules/autolinker/dist/es2015/match/mention-match.js","node_modules/autolinker/dist/es2015/parser/phone-number-utils.js","node_modules/autolinker/dist/es2015/match/phone-match.js","node_modules/autolinker/dist/es2015/parser/parse-matches.js","node_modules/autolinker/dist/es2015/htmlParser/parse-html.js","node_modules/autolinker/dist/es2015/autolinker.js","node_modules/autolinker/dist/es2015/match/match.js","node_modules/autolinker/dist/es2015/match/index.js","node_modules/autolinker/dist/es2015/parser/index.js","node_modules/autolinker/dist/es2015/index.js","libs/galaxy/pipes/src/linky/linky.pipe.ts","libs/galaxy/pipes/src/format-stat/format-stat.pipe.ts","libs/galaxy/pipes/src/truncate-url/truncate-url.pipe.ts","libs/galaxy/pipes/src/markdown/markdown.pipe.ts","libs/galaxy/pipes/src/pipes.module.ts","libs/galaxy/pipes/public_api.ts","libs/galaxy/pipes/index.ts","node_modules/libphonenumber-js/metadata.min.json.js","node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","node_modules/libphonenumber-js/es6/constants.js","node_modules/libphonenumber-js/es6/ParseError.js","node_modules/libphonenumber-js/es6/tools/semver-compare.js","node_modules/libphonenumber-js/es6/helpers/isObject.js","node_modules/libphonenumber-js/es6/metadata.js","node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","node_modules/libphonenumber-js/es6/helpers/parseDigits.js","node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","node_modules/libphonenumber-js/es6/getCountryCallingCode.js","node_modules/libphonenumber-js/es6/helpers/mergeArrays.js","node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","node_modules/libphonenumber-js/es6/isPossible.js","node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","node_modules/libphonenumber-js/es6/helpers/getNumberType.js","node_modules/libphonenumber-js/es6/isValid.js","node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js","node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","node_modules/libphonenumber-js/es6/helpers/RFC3966.js","node_modules/libphonenumber-js/es6/format.js","node_modules/libphonenumber-js/es6/PhoneNumber.js","node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js","node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","node_modules/libphonenumber-js/es6/parse.js","node_modules/libphonenumber-js/es6/normalizeArguments.js","node_modules/libphonenumber-js/es6/legacy/parse.js","node_modules/libphonenumber-js/index.es6.exports/parse.js","node_modules/libphonenumber-js/es6/legacy/format.js","node_modules/libphonenumber-js/index.es6.exports/format.js","node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js","node_modules/libphonenumber-js/es6/parsePhoneNumberWithError.js","node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","node_modules/libphonenumber-js/es6/parsePhoneNumber.js","node_modules/libphonenumber-js/es6/getCountries.js","node_modules/libphonenumber-js/core/index.js","node_modules/libphonenumber-js/min/exports/parsePhoneNumberWithError.js","node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","node_modules/libphonenumber-js/min/exports/getCountries.js","node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js","node_modules/libphonenumber-js/es6/legacy/getNumberType.js","node_modules/libphonenumber-js/es6/legacy/isValidNumber.js","node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js","node_modules/libphonenumber-js/index.js"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, ChangeDetectorRef, ElementRef, EventEmitter, booleanAttribute, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ContentChildren, Input, Output, Directive, forwardRef, EnvironmentInjector, ViewContainerRef, NgZone, Renderer2, afterNextRender, NgModule } from '@angular/core';\nimport { MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nconst _c0 = [\"panel\"];\nconst _c1 = [\"*\"];\nfunction MatAutocomplete_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1, 0);\n i0.ɵɵlistener(\"@panelAnimation.done\", function MatAutocomplete_ng_template_0_Template_div_animation_panelAnimation_done_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._animationDone.next($event));\n });\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const formFieldId_r3 = ctx.id;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1._classList);\n i0.ɵɵclassProp(\"mat-mdc-autocomplete-visible\", ctx_r1.showPanel)(\"mat-mdc-autocomplete-hidden\", !ctx_r1.showPanel)(\"mat-primary\", ctx_r1._color === \"primary\")(\"mat-accent\", ctx_r1._color === \"accent\")(\"mat-warn\", ctx_r1._color === \"warn\");\n i0.ɵɵproperty(\"id\", ctx_r1.id)(\"@panelAnimation\", ctx_r1.isOpen ? \"visible\" : \"hidden\");\n i0.ɵɵattribute(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1._getPanelAriaLabelledby(formFieldId_r3));\n }\n}\nexport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { _IdGenerator, ActiveDescendantKeyManager, removeAriaReferencedId, addAriaReferencedId } from '@angular/cdk/a11y';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport { trigger, state, style, transition, group, animate } from '@angular/animations';\nimport { Subscription, Subject, merge, of, defer, Observable } from 'rxjs';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { hasModifierKey, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { filter, map, startWith, switchMap, tap, delay, take } from 'rxjs/operators';\n\n// Animation values come from\n// TODO(mmalerba): Ideally find a way to import the values from MDC's code.\nconst panelAnimation = /*#__PURE__*/trigger('panelAnimation', [/*#__PURE__*/state('void, hidden', /*#__PURE__*/style({\n opacity: 0,\n transform: 'scaleY(0.8)'\n})), /*#__PURE__*/transition(':enter, hidden => visible', [/*#__PURE__*/group([/*#__PURE__*/animate('0.03s linear', /*#__PURE__*/style({\n opacity: 1\n})), /*#__PURE__*/animate('0.12s cubic-bezier(0, 0, 0.2, 1)', /*#__PURE__*/style({\n transform: 'scaleY(1)'\n}))])]), /*#__PURE__*/transition(':leave, visible => hidden', [/*#__PURE__*/animate('0.075s linear', /*#__PURE__*/style({\n opacity: 0\n}))])]);\n\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n source;\n option;\n constructor(/** Reference to the autocomplete panel that emitted the event. */\n source, /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return {\n autoActiveFirstOption: false,\n autoSelectActiveOption: false,\n hideSingleSelectionIndicator: false,\n requireSelection: false\n };\n}\n/** Autocomplete component. */\nlet MatAutocomplete = /*#__PURE__*/(() => {\n class MatAutocomplete {\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS);\n _activeOptionChanges = Subscription.EMPTY;\n /** Emits when the panel animation is done. Null if the panel doesn't animate. */\n _animationDone = new EventEmitter();\n /** Manages active item in option list based on key events. */\n _keyManager;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n showPanel = false;\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n _isOpen = false;\n /** Latest trigger that opened the autocomplete. */\n _latestOpeningTrigger;\n /** @docs-private Sets the theme color of the panel. */\n _setColor(value) {\n this._color = value;\n this._changeDetectorRef.markForCheck();\n }\n /** @docs-private theme color of the panel */\n _color;\n // The @ViewChild query for TemplateRef here needs to be static because some code paths\n // lead to the overlay being created before change detection has finished for this component.\n // Notably, another component may trigger `focus` on the autocomplete-trigger.\n /** @docs-private */\n template;\n /** Element for the panel containing the autocomplete options. */\n panel;\n /** Reference to all options within the autocomplete. */\n options;\n /** Reference to all option groups within the autocomplete. */\n optionGroups;\n /** Aria label of the autocomplete. */\n ariaLabel;\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n ariaLabelledby;\n /** Function that maps an option's control value to its display value in the trigger. */\n displayWith = null;\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n autoActiveFirstOption;\n /** Whether the active option should be selected as the user is navigating. */\n autoSelectActiveOption;\n /**\n * Whether the user is required to make a selection when they're interacting with the\n * autocomplete. If the user moves away from the autocomplete without selecting an option from\n * the list, the value will be reset. If the user opens the panel and closes it without\n * interacting or selecting a value, the initial value will be kept.\n */\n requireSelection;\n /**\n * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will\n * match the width of its host.\n */\n panelWidth;\n /** Whether ripples are disabled within the autocomplete panel. */\n disableRipple;\n /** Event that is emitted whenever an option from the list is selected. */\n optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n optionActivated = new EventEmitter();\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n this._classList = value;\n this._elementRef.nativeElement.className = '';\n }\n _classList;\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n _hideSingleSelectionIndicator;\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n id = inject(_IdGenerator).getId('mat-autocomplete-');\n /**\n * Tells any descendant `mat-optgroup` to use the inert a11y pattern.\n * @docs-private\n */\n inertGroups;\n constructor() {\n const platform = inject(Platform);\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this.autoActiveFirstOption = !!this._defaults.autoActiveFirstOption;\n this.autoSelectActiveOption = !!this._defaults.autoSelectActiveOption;\n this.requireSelection = !!this._defaults.requireSelection;\n this._hideSingleSelectionIndicator = this._defaults.hideSingleSelectionIndicator ?? false;\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap().skipPredicate(this._skipPredicate);\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({\n source: this,\n option: this.options.toArray()[index] || null\n });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._activeOptionChanges.unsubscribe();\n this._animationDone.complete();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate() {\n return false;\n }\n static ɵfac = function MatAutocomplete_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatAutocomplete)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatAutocomplete,\n selectors: [[\"mat-autocomplete\"]],\n contentQueries: function MatAutocomplete_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.options = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n }\n },\n viewQuery: function MatAutocomplete_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 7);\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-autocomplete\"],\n inputs: {\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n displayWith: \"displayWith\",\n autoActiveFirstOption: [2, \"autoActiveFirstOption\", \"autoActiveFirstOption\", booleanAttribute],\n autoSelectActiveOption: [2, \"autoSelectActiveOption\", \"autoSelectActiveOption\", booleanAttribute],\n requireSelection: [2, \"requireSelection\", \"requireSelection\", booleanAttribute],\n panelWidth: \"panelWidth\",\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n classList: [0, \"class\", \"classList\"],\n hideSingleSelectionIndicator: [2, \"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute]\n },\n outputs: {\n optionSelected: \"optionSelected\",\n opened: \"opened\",\n closed: \"closed\",\n optionActivated: \"optionActivated\"\n },\n exportAs: [\"matAutocomplete\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatAutocomplete\n }]), i0.ɵɵInputTransformsFeature],\n ngContentSelectors: _c1,\n decls: 1,\n vars: 0,\n consts: [[\"panel\", \"\"], [\"role\", \"listbox\", 1, \"mat-mdc-autocomplete-panel\", \"mdc-menu-surface\", \"mdc-menu-surface--open\", 3, \"id\"]],\n template: function MatAutocomplete_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatAutocomplete_ng_template_0_Template, 3, 16, \"ng-template\");\n }\n },\n styles: [\"div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}\"],\n encapsulation: 2,\n data: {\n animation: [panelAnimation]\n },\n changeDetection: 0\n });\n }\n return MatAutocomplete;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nlet MatAutocompleteOrigin = /*#__PURE__*/(() => {\n class MatAutocompleteOrigin {\n elementRef = inject(ElementRef);\n constructor() {}\n static ɵfac = function MatAutocompleteOrigin_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatAutocompleteOrigin)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAutocompleteOrigin,\n selectors: [[\"\", \"matAutocompleteOrigin\", \"\"]],\n exportAs: [\"matAutocompleteOrigin\"]\n });\n }\n return MatAutocompleteOrigin;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => MatAutocompleteTrigger),\n multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' + 'Make sure that the id passed to the `matAutocomplete` is correct and that ' + \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('mat-autocomplete-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY\n};\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nlet MatAutocompleteTrigger = /*#__PURE__*/(() => {\n class MatAutocompleteTrigger {\n _environmentInjector = inject(EnvironmentInjector);\n _element = inject(ElementRef);\n _overlay = inject(Overlay);\n _viewContainerRef = inject(ViewContainerRef);\n _zone = inject(NgZone);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _dir = inject(Directionality, {\n optional: true\n });\n _formField = inject(MAT_FORM_FIELD, {\n optional: true,\n host: true\n });\n _document = inject(DOCUMENT);\n _viewportRuler = inject(ViewportRuler);\n _scrollStrategy = inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY);\n _renderer = inject(Renderer2);\n _defaults = inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, {\n optional: true\n });\n _overlayRef;\n _portal;\n _componentDestroyed = false;\n _initialized = new Subject();\n _keydownSubscription;\n _outsideClickSubscription;\n _cleanupWindowBlur;\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n _previousValue;\n /** Value of the input element when the panel was attached (even if there are no options). */\n _valueOnAttach;\n /** Value on the previous keydown event. */\n _valueOnLastKeydown;\n /** Strategy that is used to position the panel. */\n _positionStrategy;\n /** Whether or not the label state is being overridden. */\n _manuallyFloatingLabel = false;\n /** The subscription for closing actions (some are bound to document). */\n _closingActionsSubscription;\n /** Subscription to viewport size changes. */\n _viewportSubscription = Subscription.EMPTY;\n /** Implements BreakpointObserver to be used to detect handset landscape */\n _breakpointObserver = inject(BreakpointObserver);\n _handsetLandscapeSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n _canOpenOnNextFocus = true;\n /** Value inside the input before we auto-selected an option. */\n _valueBeforeAutoSelection;\n /**\n * Current option that we have auto-selected as the user is navigating,\n * but which hasn't been propagated to the model value yet.\n */\n _pendingAutoselectedOption;\n /** Stream of keyboard events that can close the panel. */\n _closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n _windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus = this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n _onChange = () => {};\n /** `View -> model callback called when autocomplete has been touched` */\n _onTouched = () => {};\n /** The autocomplete panel to be attached to this trigger. */\n autocomplete;\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n position = 'auto';\n /**\n * Reference relative to which to position the autocomplete panel.\n * Defaults to the autocomplete trigger element.\n */\n connectedTo;\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n autocompleteAttribute = 'off';\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n autocompleteDisabled;\n constructor() {}\n /** Class to apply to the panel when it's above the input. */\n _aboveClass = 'mat-mdc-autocomplete-panel-above';\n ngAfterViewInit() {\n this._initialized.next();\n this._initialized.complete();\n this._cleanupWindowBlur = this._renderer.listen('window', 'blur', this._windowBlurHandler);\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n this._cleanupWindowBlur?.();\n this._handsetLandscapeSubscription.unsubscribe();\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n this._clearFromModal();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n _overlayAttached = false;\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._openPanelInternal();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // `afterNextRender` always runs outside of the Angular zone, so all the subscriptions from\n // `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n // Only reset if this trigger is the latest one that opened the\n // autocomplete since another may have taken it over.\n if (this.autocomplete._latestOpeningTrigger === this) {\n this.autocomplete._isOpen = false;\n this.autocomplete._latestOpeningTrigger = null;\n }\n this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._updatePanelState();\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n // Remove aria-owns attribute when the autocomplete is no longer visible.\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', this.autocomplete.id);\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => event instanceof MatOptionSelectionChange ? event : null));\n }\n /** Stream of changes to the selection state of the autocomplete options. */\n optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._initialized.pipe(switchMap(() => this.optionSelections));\n });\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return new Observable(observer => {\n const listener = event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField.getConnectedOverlayOrigin().nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n if (this._overlayAttached && clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement && (!formField || !formField.contains(clickTarget)) && (!customOrigin || !customOrigin.contains(clickTarget)) && !!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget)) {\n observer.next(event);\n }\n };\n const cleanups = [this._renderer.listen('document', 'click', listener), this._renderer.listen('document', 'auxclick', listener), this._renderer.listen('document', 'touchend', listener)];\n return () => {\n cleanups.forEach(current => current());\n };\n });\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n this._valueOnLastKeydown = this._element.nativeElement.value;\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n } else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || isArrowKey && !hasModifier && this.panelOpen) {\n this.autocomplete._keyManager.onKeydown(event);\n } else if (isArrowKey && this._canOpen()) {\n this._openPanelInternal(this._valueOnLastKeydown);\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._valueOnLastKeydown;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n // If selection is required we don't write to the CVA while the user is typing.\n // At the end of the selection either the user will have picked something\n // or we'll reset the value back to null.\n if (!this.autocomplete || !this.autocomplete.requireSelection) {\n this._onChange(value);\n }\n if (!value) {\n this._clearPreviousSelectedOption(null, false);\n } else if (this.panelOpen && !this.autocomplete.requireSelection) {\n // Note that we don't reset this when `requireSelection` is enabled,\n // because the option will be reset when the panel is closed.\n const selectedOption = this.autocomplete.options?.find(option => option.selected);\n if (selectedOption) {\n const display = this._getDisplayValue(selectedOption.value);\n if (value !== display) {\n selectedOption.deselect(false);\n }\n }\n }\n if (this._canOpen() && this._document.activeElement === event.target) {\n // When the `input` event fires, the input's value will have already changed. This means\n // that if we take the `this._element.nativeElement.value` directly, it'll be one keystroke\n // behind. This can be a problem when the user selects a value, changes a character while\n // the input still has focus and then clicks away (see #28432). To work around it, we\n // capture the value in `keydown` so we can use it here.\n const valueOnAttach = this._valueOnLastKeydown ?? this._element.nativeElement.value;\n this._valueOnLastKeydown = null;\n this._openPanelInternal(valueOnAttach);\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n } else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay(this._previousValue);\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this._openPanelInternal();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n } else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n if (this._formField) {\n this._formField.floatLabel = 'auto';\n }\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const initialRender = new Observable(subscriber => {\n afterNextRender(() => {\n subscriber.next();\n }, {\n injector: this._environmentInjector\n });\n });\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()),\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the options are initially rendered, and when the option list changes...\n return merge(initialRender, optionChanges).pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => this._zone.run(() => {\n // `afterNextRender` always runs outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this._updatePanelState();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this._emitOpened();\n } else {\n this.autocomplete.closed.emit();\n }\n }\n return this.panelClosingActions;\n })),\n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event));\n }\n /**\n * Emits the opened event once it's known that the panel will be shown and stores\n * the state of the trigger right before the opening sequence was finished.\n */\n _emitOpened() {\n this.autocomplete.opened.emit();\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n /** Given a value, returns the string that should be shown within the input. */\n _getDisplayValue(value) {\n const autocomplete = this.autocomplete;\n return autocomplete && autocomplete.displayWith ? autocomplete.displayWith(value) : value;\n }\n _assignOptionValue(value) {\n const toDisplay = this._getDisplayValue(value);\n if (value == null) {\n this._clearPreviousSelectedOption(null, false);\n }\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n } else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const panel = this.autocomplete;\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n // TODO(crisbeto): this should wait until the animation is done, otherwise the value\n // gets reset while the panel is still animating which looks glitchy. It'll likely break\n // some tests to change it at this point.\n this._onChange(toSelect.value);\n panel._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n } else if (panel.requireSelection && this._element.nativeElement.value !== this._valueOnAttach) {\n this._clearPreviousSelectedOption(null);\n this._assignOptionValue(null);\n // Wait for the animation to finish before clearing the form control value, otherwise\n // the options might change while the animation is running which looks glitchy.\n if (panel._animationDone) {\n panel._animationDone.pipe(take(1)).subscribe(() => this._onChange(null));\n } else {\n this._onChange(null);\n }\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip, emitEvent) {\n // Null checks are necessary here, because the autocomplete\n // or its options may not have been assigned yet.\n this.autocomplete?.options?.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect(emitEvent);\n }\n });\n }\n _openPanelInternal(valueOnAttach = this._element.nativeElement.value) {\n this._attachOverlay(valueOnAttach);\n this._floatLabel();\n // Add aria-owns attribute when the autocomplete becomes visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n addAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n _attachOverlay(valueOnAttach) {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId()\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({\n width: this._getPanelWidth()\n });\n }\n });\n // Subscribe to the breakpoint events stream to detect when screen is in\n // handsetLandscape.\n this._handsetLandscapeSubscription = this._breakpointObserver.observe(Breakpoints.HandsetLandscape).subscribe(result => {\n const isHandsetLandscape = result.matches;\n // Check if result.matches Breakpoints.HandsetLandscape. Apply HandsetLandscape\n // settings to prevent overlay cutoff in that breakpoint. Fixes b/284148377\n if (isHandsetLandscape) {\n this._positionStrategy.withFlexibleDimensions(true).withGrowAfterOpen(true).withViewportMargin(8);\n } else {\n this._positionStrategy.withFlexibleDimensions(false).withGrowAfterOpen(false).withViewportMargin(0);\n }\n });\n } else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({\n width: this._getPanelWidth()\n });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._valueOnAttach = valueOnAttach;\n this._valueOnLastKeydown = null;\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._isOpen = this._overlayAttached = true;\n this.autocomplete._latestOpeningTrigger = this;\n this.autocomplete._setColor(this._formField?.color);\n this._updatePanelState();\n this._applyModalPanelOwnership();\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this._emitOpened();\n }\n }\n /** Handles keyboard events coming from the overlay panel. */\n _handlePanelKeydown = event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE && !hasModifierKey(event) || event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey')) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n };\n /** Updates the panel's visibility state and any trigger state tied to id. */\n _updatePanelState() {\n this.autocomplete._setVisibility();\n // Note that here we subscribe and unsubscribe based on the panel's visiblity state,\n // because the act of subscribing will prevent events from reaching other overlays and\n // we don't want to block the events if there are no options.\n if (this.panelOpen) {\n const overlayRef = this._overlayRef;\n if (!this._keydownSubscription) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);\n }\n if (!this._outsideClickSubscription) {\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();\n }\n } else {\n this._keydownSubscription?.unsubscribe();\n this._outsideClickSubscription?.unsubscribe();\n this._keydownSubscription = this._outsideClickSubscription = null;\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir ?? undefined,\n panelClass: this._defaults?.overlayPanelClass\n });\n }\n _getOverlayPosition() {\n // Set default Overlay Position\n const strategy = this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(false).withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [{\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass\n }, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass\n }];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n } else if (this.position === 'below') {\n positions = belowPositions;\n } else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Reset the active item to -1. This is so that pressing arrow keys will activate the correct\n * option.\n *\n * If the consumer opted-in to automatically activatating the first option, activate the first\n * *enabled* option.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < autocomplete.options.length; index++) {\n const option = autocomplete.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n autocomplete._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this.autocompleteDisabled;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n } else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n _trackedModal = null;\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = this.autocomplete.id;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the references to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n }\n static ɵfac = function MatAutocompleteTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatAutocompleteTrigger)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAutocompleteTrigger,\n selectors: [[\"input\", \"matAutocomplete\", \"\"], [\"textarea\", \"matAutocomplete\", \"\"]],\n hostAttrs: [1, \"mat-mdc-autocomplete-trigger\"],\n hostVars: 7,\n hostBindings: function MatAutocompleteTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focusin\", function MatAutocompleteTrigger_focusin_HostBindingHandler() {\n return ctx._handleFocus();\n })(\"blur\", function MatAutocompleteTrigger_blur_HostBindingHandler() {\n return ctx._onTouched();\n })(\"input\", function MatAutocompleteTrigger_input_HostBindingHandler($event) {\n return ctx._handleInput($event);\n })(\"keydown\", function MatAutocompleteTrigger_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n })(\"click\", function MatAutocompleteTrigger_click_HostBindingHandler() {\n return ctx._handleClick();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"autocomplete\", ctx.autocompleteAttribute)(\"role\", ctx.autocompleteDisabled ? null : \"combobox\")(\"aria-autocomplete\", ctx.autocompleteDisabled ? null : \"list\")(\"aria-activedescendant\", ctx.panelOpen && ctx.activeOption ? ctx.activeOption.id : null)(\"aria-expanded\", ctx.autocompleteDisabled ? null : ctx.panelOpen.toString())(\"aria-controls\", ctx.autocompleteDisabled || !ctx.panelOpen ? null : ctx.autocomplete == null ? null : ctx.autocomplete.id)(\"aria-haspopup\", ctx.autocompleteDisabled ? null : \"listbox\");\n }\n },\n inputs: {\n autocomplete: [0, \"matAutocomplete\", \"autocomplete\"],\n position: [0, \"matAutocompletePosition\", \"position\"],\n connectedTo: [0, \"matAutocompleteConnectedTo\", \"connectedTo\"],\n autocompleteAttribute: [0, \"autocomplete\", \"autocompleteAttribute\"],\n autocompleteDisabled: [2, \"matAutocompleteDisabled\", \"autocompleteDisabled\", booleanAttribute]\n },\n exportAs: [\"matAutocompleteTrigger\"],\n features: [i0.ɵɵProvidersFeature([MAT_AUTOCOMPLETE_VALUE_ACCESSOR]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n return MatAutocompleteTrigger;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatAutocompleteModule = /*#__PURE__*/(() => {\n class MatAutocompleteModule {\n static ɵfac = function MatAutocompleteModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatAutocompleteModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatAutocompleteModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CdkScrollableModule, MatOptionModule, MatCommonModule]\n });\n }\n return MatAutocompleteModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, getMatAutocompleteMissingPanelError };\n","/**\n * marked v12.0.2 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = ch => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = {\n exec: () => null\n};\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, t => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {\n // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) {\n // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n list.items[list.items.length - 1].text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n } else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n } else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!/>$/.test(trimmedUrl)) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !/>$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [{\n type: 'text',\n raw: text,\n text\n }]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [{\n type: 'text',\n raw: text,\n text\n }]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n } else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/).replace(/bull/g, bullet) // lists can interrupt\n.replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n.replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n.replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n.replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n.replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n.getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/).replace('label', _blockLabel).replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, bullet).getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n+ '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n+ '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n+ '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n+ ')', 'i').replace('comment', _comment).replace('tag', _tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nconst paragraph = edit(_paragraph).replace('hr', hr).replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)').replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n.replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n.getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace('paragraph', paragraph).getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n.replace('hr', hr).replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n.replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n.getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph).replace('hr', hr).replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)').replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', _comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph).replace('hr', hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', lheading).replace('|table', '').replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').replace('|tag', '').getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}\\\\p{S}';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u').replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u').replace(/punct/g, _punctuation).getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n+ '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n.replace(/punct/g, _punctuation).getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n+ '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n.replace(/punct/g, _punctuation).getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu').replace(/punct/g, _punctuation).getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment' + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n+ '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n+ '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n+ '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n+ '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n.replace('comment', _inlineComment).replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/).replace('label', _inlineLabel).replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/).replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/).replace('label', _inlineLabel).replace('ref', _blockLabel).getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/).replace('ref', _blockLabel).getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g').replace('reflink', reflink).replace('nolink', nolink).getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest,\n // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', _inlineLabel).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', _inlineLabel).getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i').replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text).replace('\\\\b_', '\\\\b_| {2,}\\\\n').replace(/\\{2,\\}/g, '*').getRegex()\n};\n/**\n * exports\n */\nconst block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nconst inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(extTokenizer => {\n if (token = extTokenizer.call({\n lexer: this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(getStartIndex => {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({\n src,\n tokens\n });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(extTokenizer => {\n if (token = extTokenizer.call({\n lexer: this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(getStartIndex => {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>' + (escaped ? code : escape$1(code, true)) + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-' + escape$1(lang) + '\">' + (escaped ? code : escape$1(code, true)) + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input ' + (checked ? 'checked=\"\" ' : '') + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body) body = `<tbody>${body}</tbody>`;\n return '<table>\\n' + '<thead>\\n' + header + '</thead>\\n' + body + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align ? `<${type} align=\"${flags.align}\">` : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({\n parser: this\n }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n case 'heading':\n {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code':\n {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table':\n {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), {\n header: true,\n align: tableToken.align[j]\n });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: tableToken.align[k]\n });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote':\n {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list':\n {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n } else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html':\n {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph':\n {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text':\n {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default:\n {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape':\n {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html':\n {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link':\n {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image':\n {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong':\n {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em':\n {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan':\n {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br':\n {\n out += renderer.br();\n break;\n }\n case 'del':\n {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text':\n {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default:\n {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set(['preprocess', 'postprocess', 'processAllTokens']);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table':\n {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list':\n {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default:\n {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach(childTokens => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n args.forEach(pack => {\n // copy options to new object\n const opts = {\n ...pack\n };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach(ext => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) {\n // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = arg => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = {\n ...this.defaults,\n ...opts\n };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = {\n ...this.defaults,\n ...opt\n };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = {\n ...options\n };\n const opt = {\n ...this.defaults,\n ...origOpt\n };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(src => lexer(src, opt)).then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then(tokens => parser(tokens, opt)).then(html => opt.hooks ? opt.hooks.postprocess(html) : html).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return e => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>' + escape$1(e.message + '', true) + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options = marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import { AsyncPipe, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, InjectionToken, Pipe, PLATFORM_ID, Injectable, Inject, Optional, EventEmitter, Input, Output, SecurityContext, NgModule } from '@angular/core';\nimport { Subject, of, timer, merge } from 'rxjs';\nimport { mapTo, switchMap, distinctUntilChanged, shareReplay, startWith, map, takeUntil, first } from 'rxjs/operators';\nimport { Renderer, marked } from 'marked';\nconst _c0 = [\"*\"];\nexport { Renderer as MarkedRenderer } from 'marked';\nimport * as i1 from '@angular/common/http';\nimport * as i2 from '@angular/platform-browser';\nconst BUTTON_TEXT_COPY = 'Copy';\nconst BUTTON_TEXT_COPIED = 'Copied';\nlet ClipboardButtonComponent = /*#__PURE__*/(() => {\n class ClipboardButtonComponent {\n constructor() {\n this._buttonClick$ = new Subject();\n this.copied$ = this._buttonClick$.pipe(switchMap(() => merge(of(true), timer(3000).pipe(mapTo(false)))), distinctUntilChanged(), shareReplay(1));\n this.copiedText$ = this.copied$.pipe(startWith(false), map(copied => copied ? BUTTON_TEXT_COPIED : BUTTON_TEXT_COPY));\n }\n onCopyToClipboardClick() {\n this._buttonClick$.next();\n }\n static {\n this.ɵfac = function ClipboardButtonComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ClipboardButtonComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ClipboardButtonComponent,\n selectors: [[\"markdown-clipboard\"]],\n decls: 4,\n vars: 7,\n consts: [[1, \"markdown-clipboard-button\", 3, \"click\"]],\n template: function ClipboardButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 0);\n i0.ɵɵpipe(1, \"async\");\n i0.ɵɵlistener(\"click\", function ClipboardButtonComponent_Template_button_click_0_listener() {\n return ctx.onCopyToClipboardClick();\n });\n i0.ɵɵtext(2);\n i0.ɵɵpipe(3, \"async\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"copied\", i0.ɵɵpipeBind1(1, 3, ctx.copied$));\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, ctx.copiedText$));\n }\n },\n dependencies: [AsyncPipe],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return ClipboardButtonComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst CLIPBOARD_OPTIONS = new InjectionToken('CLIPBOARD_OPTIONS');\n\n/* eslint-disable */\nclass KatexSpecificOptions {}\nlet LanguagePipe = /*#__PURE__*/(() => {\n class LanguagePipe {\n transform(value, language) {\n if (value == null) {\n value = '';\n }\n if (language == null) {\n language = '';\n }\n if (typeof value !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid value type [${typeof value}]`);\n return value;\n }\n if (typeof language !== 'string') {\n console.error(`LanguagePipe has been invoked with an invalid parameter [${typeof language}]`);\n return value;\n }\n return '```' + language + '\\n' + value + '\\n```';\n }\n static {\n this.ɵfac = function LanguagePipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LanguagePipe)();\n };\n }\n static {\n this.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"language\",\n type: LanguagePipe,\n pure: true\n });\n }\n }\n return LanguagePipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar PrismPlugin = /*#__PURE__*/function (PrismPlugin) {\n PrismPlugin[\"CommandLine\"] = \"command-line\";\n PrismPlugin[\"LineHighlight\"] = \"line-highlight\";\n PrismPlugin[\"LineNumbers\"] = \"line-numbers\";\n return PrismPlugin;\n}(PrismPlugin || {});\nconst MARKED_EXTENSIONS = new InjectionToken('MARKED_EXTENSIONS');\nconst MARKED_OPTIONS = new InjectionToken('MARKED_OPTIONS');\n\n/* eslint-disable max-len */\nconst errorJoyPixelsNotLoaded = '[ngx-markdown] When using the `emoji` attribute you *have to* include Emoji-Toolkit files to `angular.json` or use imports. See README for more information';\nconst errorKatexNotLoaded = '[ngx-markdown] When using the `katex` attribute you *have to* include KaTeX files to `angular.json` or use imports. See README for more information';\nconst errorMermaidNotLoaded = '[ngx-markdown] When using the `mermaid` attribute you *have to* include Mermaid files to `angular.json` or use imports. See README for more information';\nconst errorClipboardNotLoaded = '[ngx-markdown] When using the `clipboard` attribute you *have to* include Clipboard files to `angular.json` or use imports. See README for more information';\nconst errorClipboardViewContainerRequired = '[ngx-markdown] When using the `clipboard` attribute you *have to* provide the `viewContainerRef` parameter to `MarkdownService.render()` function';\nconst errorSrcWithoutHttpClient = '[ngx-markdown] When using the `src` attribute you *have to* pass the `HttpClient` as a parameter of the `forRoot` method. See README for more information';\n/* eslint-enable max-len */\nconst SECURITY_CONTEXT = new InjectionToken('SECURITY_CONTEXT');\nclass ExtendedRenderer extends Renderer {\n constructor() {\n super(...arguments);\n this.ɵNgxMarkdownRendererExtendedForExtensions = false;\n this.ɵNgxMarkdownRendererExtendedForMermaid = false;\n }\n}\nlet MarkdownService = /*#__PURE__*/(() => {\n class MarkdownService {\n get options() {\n return this._options;\n }\n set options(value) {\n this._options = {\n ...this.DEFAULT_MARKED_OPTIONS,\n ...value\n };\n }\n get renderer() {\n return this.options.renderer;\n }\n set renderer(value) {\n this.options.renderer = value;\n }\n constructor(clipboardOptions, extensions, options, platform, securityContext, http, sanitizer) {\n this.clipboardOptions = clipboardOptions;\n this.extensions = extensions;\n this.platform = platform;\n this.securityContext = securityContext;\n this.http = http;\n this.sanitizer = sanitizer;\n this.DEFAULT_MARKED_OPTIONS = {\n renderer: new Renderer()\n };\n this.DEFAULT_KATEX_OPTIONS = {\n delimiters: [{\n left: '$$',\n right: '$$',\n display: true\n }, {\n left: '$',\n right: '$',\n display: false\n }, {\n left: '\\\\(',\n right: '\\\\)',\n display: false\n }, {\n left: '\\\\begin{equation}',\n right: '\\\\end{equation}',\n display: true\n }, {\n left: '\\\\begin{align}',\n right: '\\\\end{align}',\n display: true\n }, {\n left: '\\\\begin{alignat}',\n right: '\\\\end{alignat}',\n display: true\n }, {\n left: '\\\\begin{gather}',\n right: '\\\\end{gather}',\n display: true\n }, {\n left: '\\\\begin{CD}',\n right: '\\\\end{CD}',\n display: true\n }, {\n left: '\\\\[',\n right: '\\\\]',\n display: true\n }]\n };\n this.DEFAULT_MERMAID_OPTIONS = {\n startOnLoad: false\n };\n this.DEFAULT_CLIPBOARD_OPTIONS = {\n buttonComponent: undefined\n };\n this.DEFAULT_PARSE_OPTIONS = {\n decodeHtml: false,\n inline: false,\n emoji: false,\n mermaid: false,\n markedOptions: undefined,\n disableSanitizer: false\n };\n this.DEFAULT_RENDER_OPTIONS = {\n clipboard: false,\n clipboardOptions: undefined,\n katex: false,\n katexOptions: undefined,\n mermaid: false,\n mermaidOptions: undefined\n };\n this._reload$ = new Subject();\n this.reload$ = this._reload$.asObservable();\n this.options = options;\n }\n parse(markdown, parseOptions = this.DEFAULT_PARSE_OPTIONS) {\n const {\n decodeHtml,\n inline,\n emoji,\n mermaid,\n disableSanitizer\n } = parseOptions;\n const markedOptions = {\n ...this.options,\n ...parseOptions.markedOptions\n };\n const renderer = markedOptions.renderer || this.renderer || new Renderer();\n if (this.extensions) {\n this.renderer = this.extendsRendererForExtensions(renderer);\n }\n if (mermaid) {\n this.renderer = this.extendsRendererForMermaid(renderer);\n }\n const trimmed = this.trimIndentation(markdown);\n const decoded = decodeHtml ? this.decodeHtml(trimmed) : trimmed;\n const emojified = emoji ? this.parseEmoji(decoded) : decoded;\n const marked = this.parseMarked(emojified, markedOptions, inline);\n const sanitized = disableSanitizer ? marked : this.sanitizer.sanitize(this.securityContext, marked);\n return sanitized || '';\n }\n render(element, options = this.DEFAULT_RENDER_OPTIONS, viewContainerRef) {\n const {\n clipboard,\n clipboardOptions,\n katex,\n katexOptions,\n mermaid,\n mermaidOptions\n } = options;\n if (katex) {\n this.renderKatex(element, {\n ...this.DEFAULT_KATEX_OPTIONS,\n ...katexOptions\n });\n }\n if (mermaid) {\n this.renderMermaid(element, {\n ...this.DEFAULT_MERMAID_OPTIONS,\n ...mermaidOptions\n });\n }\n if (clipboard) {\n this.renderClipboard(element, viewContainerRef, {\n ...this.DEFAULT_CLIPBOARD_OPTIONS,\n ...this.clipboardOptions,\n ...clipboardOptions\n });\n }\n this.highlight(element);\n }\n reload() {\n this._reload$.next();\n }\n getSource(src) {\n if (!this.http) {\n throw new Error(errorSrcWithoutHttpClient);\n }\n return this.http.get(src, {\n responseType: 'text'\n }).pipe(map(markdown => this.handleExtension(src, markdown)));\n }\n highlight(element) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof Prism === 'undefined' || typeof Prism.highlightAllUnder === 'undefined') {\n return;\n }\n if (!element) {\n element = document;\n }\n const noLanguageElements = element.querySelectorAll('pre code:not([class*=\"language-\"])');\n Array.prototype.forEach.call(noLanguageElements, x => x.classList.add('language-none'));\n Prism.highlightAllUnder(element);\n }\n decodeHtml(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n const textarea = document.createElement('textarea');\n textarea.innerHTML = html;\n return textarea.value;\n }\n extendsRendererForExtensions(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtendedForExtensions === true) {\n return renderer;\n }\n if (this.extensions?.length > 0) {\n marked.use(...this.extensions);\n }\n extendedRenderer.ɵNgxMarkdownRendererExtendedForExtensions = true;\n return renderer;\n }\n extendsRendererForMermaid(renderer) {\n const extendedRenderer = renderer;\n if (extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid === true) {\n return renderer;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const defaultCode = renderer.code;\n renderer.code = function (code, language, isEscaped) {\n return language === 'mermaid' ? `<div class=\"mermaid\">${code}</div>` : defaultCode.call(this, code, language, isEscaped);\n };\n extendedRenderer.ɵNgxMarkdownRendererExtendedForMermaid = true;\n return renderer;\n }\n handleExtension(src, markdown) {\n const urlProtocolIndex = src.lastIndexOf('://');\n const urlWithoutProtocol = urlProtocolIndex > -1 ? src.substring(urlProtocolIndex + 4) : src;\n const lastSlashIndex = urlWithoutProtocol.lastIndexOf('/');\n const lastUrlSegment = lastSlashIndex > -1 ? urlWithoutProtocol.substring(lastSlashIndex + 1).split('?')[0] : '';\n const lastDotIndex = lastUrlSegment.lastIndexOf('.');\n const extension = lastDotIndex > -1 ? lastUrlSegment.substring(lastDotIndex + 1) : '';\n return !!extension && extension !== 'md' ? '```' + extension + '\\n' + markdown + '\\n```' : markdown;\n }\n parseMarked(html, markedOptions, inline = false) {\n if (markedOptions.renderer) {\n // clone renderer and remove extended flags otherwise\n // marked throws an error thinking it is a renderer prop\n const renderer = {\n ...markedOptions.renderer\n };\n delete renderer.ɵNgxMarkdownRendererExtendedForExtensions;\n delete renderer.ɵNgxMarkdownRendererExtendedForMermaid;\n // remove renderer from markedOptions because if renderer is\n // passed to marked.parse method, it will ignore all extensions\n delete markedOptions.renderer;\n marked.use({\n renderer\n });\n }\n return inline ? marked.parseInline(html, markedOptions) : marked.parse(html, markedOptions);\n }\n parseEmoji(html) {\n if (!isPlatformBrowser(this.platform)) {\n return html;\n }\n if (typeof joypixels === 'undefined' || typeof joypixels.shortnameToUnicode === 'undefined') {\n throw new Error(errorJoyPixelsNotLoaded);\n }\n return joypixels.shortnameToUnicode(html);\n }\n renderKatex(element, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof katex === 'undefined' || typeof renderMathInElement === 'undefined') {\n throw new Error(errorKatexNotLoaded);\n }\n renderMathInElement(element, options);\n }\n renderClipboard(element, viewContainerRef, options) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof ClipboardJS === 'undefined') {\n throw new Error(errorClipboardNotLoaded);\n }\n if (!viewContainerRef) {\n throw new Error(errorClipboardViewContainerRequired);\n }\n const {\n buttonComponent,\n buttonTemplate\n } = options;\n // target every <pre> elements\n const preElements = element.querySelectorAll('pre');\n for (let i = 0; i < preElements.length; i++) {\n const preElement = preElements.item(i);\n // create <pre> wrapper element\n const preWrapperElement = document.createElement('div');\n preWrapperElement.style.position = 'relative';\n preElement.parentNode.insertBefore(preWrapperElement, preElement);\n preWrapperElement.appendChild(preElement);\n // create toolbar element\n const toolbarWrapperElement = document.createElement('div');\n toolbarWrapperElement.style.position = 'absolute';\n toolbarWrapperElement.style.top = '.5em';\n toolbarWrapperElement.style.right = '.5em';\n toolbarWrapperElement.style.opacity = '0';\n toolbarWrapperElement.style.transition = 'opacity 250ms ease-out';\n toolbarWrapperElement.style.zIndex = '1';\n preWrapperElement.insertAdjacentElement('beforeend', toolbarWrapperElement);\n // register listener to show/hide toolbar\n preElement.onmouseover = () => toolbarWrapperElement.style.opacity = '1';\n preElement.onmouseout = () => toolbarWrapperElement.style.opacity = '0';\n // declare embeddedViewRef holding variable\n let embeddedViewRef;\n // use provided component via input property\n // or provided via ClipboardOptions provider\n if (buttonComponent) {\n const componentRef = viewContainerRef.createComponent(buttonComponent);\n embeddedViewRef = componentRef.hostView;\n componentRef.changeDetectorRef.markForCheck();\n }\n // use provided template via input property\n else if (buttonTemplate) {\n embeddedViewRef = viewContainerRef.createEmbeddedView(buttonTemplate);\n }\n // use default component\n else {\n const componentRef = viewContainerRef.createComponent(ClipboardButtonComponent);\n embeddedViewRef = componentRef.hostView;\n componentRef.changeDetectorRef.markForCheck();\n }\n // declare clipboard instance variable\n let clipboardInstance;\n // attach clipboard.js to root node\n embeddedViewRef.rootNodes.forEach(node => {\n node.onmouseover = () => toolbarWrapperElement.style.opacity = '1';\n toolbarWrapperElement.appendChild(node);\n clipboardInstance = new ClipboardJS(node, {\n text: () => preElement.innerText\n });\n });\n // destroy clipboard instance when view is destroyed\n embeddedViewRef.onDestroy(() => clipboardInstance.destroy());\n }\n }\n renderMermaid(element, options = this.DEFAULT_MERMAID_OPTIONS) {\n if (!isPlatformBrowser(this.platform)) {\n return;\n }\n if (typeof mermaid === 'undefined' || typeof mermaid.initialize === 'undefined') {\n throw new Error(errorMermaidNotLoaded);\n }\n const mermaidElements = element.querySelectorAll('.mermaid');\n if (mermaidElements.length === 0) {\n return;\n }\n mermaid.initialize(options);\n mermaid.run({\n nodes: mermaidElements\n });\n }\n trimIndentation(markdown) {\n if (!markdown) {\n return '';\n }\n let indentStart;\n return markdown.split('\\n').map(line => {\n let lineIdentStart = indentStart;\n if (line.length > 0) {\n lineIdentStart = isNaN(lineIdentStart) ? line.search(/\\S|$/) : Math.min(line.search(/\\S|$/), lineIdentStart);\n }\n if (isNaN(indentStart)) {\n indentStart = lineIdentStart;\n }\n return lineIdentStart ? line.substring(lineIdentStart) : line;\n }).join('\\n');\n }\n static {\n this.ɵfac = function MarkdownService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownService)(i0.ɵɵinject(CLIPBOARD_OPTIONS, 8), i0.ɵɵinject(MARKED_EXTENSIONS, 8), i0.ɵɵinject(MARKED_OPTIONS, 8), i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(SECURITY_CONTEXT), i0.ɵɵinject(i1.HttpClient, 8), i0.ɵɵinject(i2.DomSanitizer));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MarkdownService,\n factory: MarkdownService.ɵfac\n });\n }\n }\n return MarkdownService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MarkdownComponent = /*#__PURE__*/(() => {\n class MarkdownComponent {\n get disableSanitizer() {\n return this._disableSanitizer;\n }\n set disableSanitizer(value) {\n this._disableSanitizer = this.coerceBooleanProperty(value);\n }\n get inline() {\n return this._inline;\n }\n set inline(value) {\n this._inline = this.coerceBooleanProperty(value);\n }\n // Plugin - clipboard\n get clipboard() {\n return this._clipboard;\n }\n set clipboard(value) {\n this._clipboard = this.coerceBooleanProperty(value);\n }\n // Plugin - emoji\n get emoji() {\n return this._emoji;\n }\n set emoji(value) {\n this._emoji = this.coerceBooleanProperty(value);\n }\n // Plugin - katex\n get katex() {\n return this._katex;\n }\n set katex(value) {\n this._katex = this.coerceBooleanProperty(value);\n }\n // Plugin - mermaid\n get mermaid() {\n return this._mermaid;\n }\n set mermaid(value) {\n this._mermaid = this.coerceBooleanProperty(value);\n }\n // Plugin - lineHighlight\n get lineHighlight() {\n return this._lineHighlight;\n }\n set lineHighlight(value) {\n this._lineHighlight = this.coerceBooleanProperty(value);\n }\n // Plugin - lineNumbers\n get lineNumbers() {\n return this._lineNumbers;\n }\n set lineNumbers(value) {\n this._lineNumbers = this.coerceBooleanProperty(value);\n }\n // Plugin - commandLine\n get commandLine() {\n return this._commandLine;\n }\n set commandLine(value) {\n this._commandLine = this.coerceBooleanProperty(value);\n }\n constructor(element, markdownService, viewContainerRef) {\n this.element = element;\n this.markdownService = markdownService;\n this.viewContainerRef = viewContainerRef;\n // Event emitters\n this.error = new EventEmitter();\n this.load = new EventEmitter();\n this.ready = new EventEmitter();\n this._clipboard = false;\n this._commandLine = false;\n this._disableSanitizer = false;\n this._emoji = false;\n this._inline = false;\n this._katex = false;\n this._lineHighlight = false;\n this._lineNumbers = false;\n this._mermaid = false;\n this.destroyed$ = new Subject();\n }\n ngOnChanges() {\n this.loadContent();\n }\n loadContent() {\n if (this.data != null) {\n this.handleData();\n return;\n }\n if (this.src != null) {\n this.handleSrc();\n return;\n }\n }\n ngAfterViewInit() {\n if (!this.data && !this.src) {\n this.handleTransclusion();\n }\n this.markdownService.reload$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.loadContent());\n }\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n async render(markdown, decodeHtml = false) {\n const parsedOptions = {\n decodeHtml,\n inline: this.inline,\n emoji: this.emoji,\n mermaid: this.mermaid,\n disableSanitizer: this.disableSanitizer\n };\n const renderOptions = {\n clipboard: this.clipboard,\n clipboardOptions: {\n buttonComponent: this.clipboardButtonComponent,\n buttonTemplate: this.clipboardButtonTemplate\n },\n katex: this.katex,\n katexOptions: this.katexOptions,\n mermaid: this.mermaid,\n mermaidOptions: this.mermaidOptions\n };\n const parsed = await this.markdownService.parse(markdown, parsedOptions);\n this.element.nativeElement.innerHTML = parsed;\n this.handlePlugins();\n this.markdownService.render(this.element.nativeElement, renderOptions, this.viewContainerRef);\n this.ready.emit();\n }\n coerceBooleanProperty(value) {\n return value != null && `${String(value)}` !== 'false';\n }\n handleData() {\n this.render(this.data);\n }\n handleSrc() {\n this.markdownService.getSource(this.src).subscribe({\n next: markdown => {\n this.render(markdown).then(() => {\n this.load.emit(markdown);\n });\n },\n error: error => this.error.emit(error)\n });\n }\n handleTransclusion() {\n this.render(this.element.nativeElement.innerHTML, true);\n }\n handlePlugins() {\n if (this.commandLine) {\n this.setPluginClass(this.element.nativeElement, PrismPlugin.CommandLine);\n this.setPluginOptions(this.element.nativeElement, {\n dataFilterOutput: this.filterOutput,\n dataHost: this.host,\n dataPrompt: this.prompt,\n dataOutput: this.output,\n dataUser: this.user\n });\n }\n if (this.lineHighlight) {\n this.setPluginOptions(this.element.nativeElement, {\n dataLine: this.line,\n dataLineOffset: this.lineOffset\n });\n }\n if (this.lineNumbers) {\n this.setPluginClass(this.element.nativeElement, PrismPlugin.LineNumbers);\n this.setPluginOptions(this.element.nativeElement, {\n dataStart: this.start\n });\n }\n }\n setPluginClass(element, plugin) {\n const preElements = element.querySelectorAll('pre');\n for (let i = 0; i < preElements.length; i++) {\n const classes = plugin instanceof Array ? plugin : [plugin];\n preElements.item(i).classList.add(...classes);\n }\n }\n setPluginOptions(element, options) {\n const preElements = element.querySelectorAll('pre');\n for (let i = 0; i < preElements.length; i++) {\n Object.keys(options).forEach(option => {\n const attributeValue = options[option];\n if (attributeValue) {\n const attributeName = this.toLispCase(option);\n preElements.item(i).setAttribute(attributeName, attributeValue.toString());\n }\n });\n }\n }\n toLispCase(value) {\n const upperChars = value.match(/([A-Z])/g);\n if (!upperChars) {\n return value;\n }\n let str = value.toString();\n for (let i = 0, n = upperChars.length; i < n; i++) {\n str = str.replace(new RegExp(upperChars[i]), '-' + upperChars[i].toLowerCase());\n }\n if (str.slice(0, 1) === '-') {\n str = str.slice(1);\n }\n return str;\n }\n static {\n this.ɵfac = function MarkdownComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MarkdownService), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MarkdownComponent,\n selectors: [[\"markdown\"], [\"\", \"markdown\", \"\"]],\n inputs: {\n data: \"data\",\n src: \"src\",\n disableSanitizer: \"disableSanitizer\",\n inline: \"inline\",\n clipboard: \"clipboard\",\n clipboardButtonComponent: \"clipboardButtonComponent\",\n clipboardButtonTemplate: \"clipboardButtonTemplate\",\n emoji: \"emoji\",\n katex: \"katex\",\n katexOptions: \"katexOptions\",\n mermaid: \"mermaid\",\n mermaidOptions: \"mermaidOptions\",\n lineHighlight: \"lineHighlight\",\n line: \"line\",\n lineOffset: \"lineOffset\",\n lineNumbers: \"lineNumbers\",\n start: \"start\",\n commandLine: \"commandLine\",\n filterOutput: \"filterOutput\",\n host: \"host\",\n prompt: \"prompt\",\n output: \"output\",\n user: \"user\"\n },\n outputs: {\n error: \"error\",\n load: \"load\",\n ready: \"ready\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MarkdownComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n }\n }\n return MarkdownComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MarkdownPipe = /*#__PURE__*/(() => {\n class MarkdownPipe {\n constructor(domSanitizer, elementRef, markdownService, viewContainerRef, zone) {\n this.domSanitizer = domSanitizer;\n this.elementRef = elementRef;\n this.markdownService = markdownService;\n this.viewContainerRef = viewContainerRef;\n this.zone = zone;\n }\n async transform(value, options) {\n if (value == null) {\n return '';\n }\n if (typeof value !== 'string') {\n console.error(`MarkdownPipe has been invoked with an invalid value type [${typeof value}]`);\n return value;\n }\n const markdown = await this.markdownService.parse(value, options);\n this.zone.onStable.pipe(first()).subscribe(() => this.markdownService.render(this.elementRef.nativeElement, options, this.viewContainerRef));\n return this.domSanitizer.bypassSecurityTrustHtml(markdown);\n }\n static {\n this.ɵfac = function MarkdownPipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownPipe)(i0.ɵɵdirectiveInject(i2.DomSanitizer, 16), i0.ɵɵdirectiveInject(i0.ElementRef, 16), i0.ɵɵdirectiveInject(MarkdownService, 16), i0.ɵɵdirectiveInject(i0.ViewContainerRef, 16), i0.ɵɵdirectiveInject(i0.NgZone, 16));\n };\n }\n static {\n this.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"markdown\",\n type: MarkdownPipe,\n pure: true\n });\n }\n }\n return MarkdownPipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction provideMarkdown(markdownModuleConfig) {\n return [MarkdownService, markdownModuleConfig?.loader ?? [], markdownModuleConfig?.clipboardOptions ?? [], markdownModuleConfig?.markedOptions ?? [], {\n provide: MARKED_EXTENSIONS,\n useValue: markdownModuleConfig?.markedExtensions ?? []\n }, {\n provide: SECURITY_CONTEXT,\n useValue: markdownModuleConfig?.sanitize ?? SecurityContext.HTML\n }];\n}\nconst sharedDeclarations = [ClipboardButtonComponent, LanguagePipe, MarkdownComponent, MarkdownPipe];\nlet MarkdownModule = /*#__PURE__*/(() => {\n class MarkdownModule {\n static forRoot(markdownModuleConfig) {\n return {\n ngModule: MarkdownModule,\n providers: [provideMarkdown(markdownModuleConfig)]\n };\n }\n static forChild() {\n return {\n ngModule: MarkdownModule\n };\n }\n static {\n this.ɵfac = function MarkdownModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MarkdownModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MarkdownModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n }\n }\n return MarkdownModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/* eslint-disable */\nvar MermaidAPI;\n(function (MermaidAPI) {\n let SecurityLevel;\n (function (SecurityLevel) {\n /**\n * (default) tags in text are encoded, click functionality is disabled\n */\n SecurityLevel[\"Strict\"] = \"strict\";\n /**\n * tags in text are allowed, click functionality is enabled\n */\n SecurityLevel[\"Loose\"] = \"loose\";\n /**\n * html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n SecurityLevel[\"Antiscript\"] = \"antiscript\";\n /**\n * with this security level all rendering takes place in a sandboxed iframe.\n * This prevent any javascript running in the context.\n * This may hinder interactive functionality of the diagram like scripts,\n * popups in sequence diagram or links to other tabs/targets etc.\n */\n SecurityLevel[\"Sandbox\"] = \"sandbox\";\n })(SecurityLevel = MermaidAPI.SecurityLevel || (MermaidAPI.SecurityLevel = {}));\n let Theme;\n (function (Theme) {\n /**\n * Designed to modified, as the name implies it is supposed to be used as the base for making custom themes.\n */\n Theme[\"Base\"] = \"base\";\n /**\n * A theme full of light greens that is easy on the eyes.\n */\n Theme[\"Forest\"] = \"forest\";\n /**\n * A theme that would go well with other dark colored elements.\n */\n Theme[\"Dark\"] = \"dark\";\n /**\n * The default theme for all diagrams.\n */\n Theme[\"Default\"] = \"default\";\n /**\n * The theme to be used for black and white printing\n */\n Theme[\"Neutral\"] = \"neutral\";\n })(Theme = MermaidAPI.Theme || (MermaidAPI.Theme = {}));\n let LogLevel;\n (function (LogLevel) {\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n LogLevel[LogLevel[\"Warn\"] = 3] = \"Warn\";\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\n LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\n })(LogLevel = MermaidAPI.LogLevel || (MermaidAPI.LogLevel = {}));\n})(MermaidAPI || (MermaidAPI = {}));\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CLIPBOARD_OPTIONS, ClipboardButtonComponent, ExtendedRenderer, KatexSpecificOptions, LanguagePipe, MARKED_EXTENSIONS, MARKED_OPTIONS, MarkdownComponent, MarkdownModule, MarkdownPipe, MarkdownService, MermaidAPI, PrismPlugin, SECURITY_CONTEXT, errorClipboardNotLoaded, errorClipboardViewContainerRequired, errorJoyPixelsNotLoaded, errorKatexNotLoaded, errorMermaidNotLoaded, errorSrcWithoutHttpClient, provideMarkdown };\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TitleCasePipe } from '@angular/common';\n\n/*\nsentenceCase pipe will put all words in lowercase except the first word and any exceptions provided\nOnly use when the i18n translations (en_devel) file, or the source of the strings cannot be directly edited.\nExample usage: if display names are fetched from vstore.\n */\n@Pipe({\n name: 'sentenceCase',\n standalone: true,\n})\nexport class SentenceCasePipe implements PipeTransform {\n constructor(private readonly titleCase: TitleCasePipe) {}\n transform(sentence: string, ignoredWords?: string[]): string {\n if (!sentence) return sentence;\n let words = sentence.split(' ');\n words = words.map((word, index) => {\n if (ignoredWords?.includes(word.replace(/[^\\w]/g, ''))) {\n return word;\n }\n if (index === 0) {\n return this.titleCase.transform(word);\n }\n return word.toLocaleLowerCase();\n });\n return words.join(' ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\ninterface Address {\n address?: string;\n address2?: string;\n city?: string;\n state?: string;\n country?: string;\n zip?: string;\n}\n// glxyAddress formats address information into a comma separate string\n@Pipe({\n name: 'glxyAddress',\n standalone: false,\n})\nexport class GalaxyAddressPipe implements PipeTransform {\n transform(address: Address): string {\n if (!address) {\n return '';\n }\n return [\n address.address?.trim(),\n address.address2?.trim(),\n address.city?.trim(),\n address.state?.trim(),\n address.country?.trim(),\n address.zip?.trim(),\n ]\n .filter((v) => !!v)\n .join(', ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, catchError, defaultIfEmpty, map, of, startWith } from 'rxjs';\n\n// Based on https://medium.com/angular-in-depth/9d8e5497dd8\n// Thanks Alexey Zuev!\n\nexport enum Status {\n loading = 'loading',\n loaded = 'loaded',\n error = 'error',\n empty = 'empty',\n}\n\nexport type GlxyAsyncStatus<T> =\n | {\n status: Status.loading;\n }\n | {\n status: Status.error;\n error?: string | Error;\n }\n | {\n status: Status.loaded;\n value: T;\n $implicit?: T;\n }\n | {\n status: Status.empty;\n };\n\nexport function isGalaxyAsyncStatus<T>(value: unknown): value is GlxyAsyncStatus<T> {\n // must have a status entry to be a valid GlxyAsyncStatus\n const statusKey = 'status';\n if (value === null || typeof value !== 'object') return false;\n if (!(statusKey in value)) return false;\n if (typeof value[statusKey] !== 'string') return false;\n if (!Object.values(Status).includes(value[statusKey] as Status)) return false;\n\n // if there is an error key, make sure it is the correct type\n if (value.status === Status.error) {\n const errorKey = 'error';\n if (errorKey in value && typeof value[errorKey] !== 'string' && !(value[errorKey] instanceof Error)) return false;\n }\n\n // if loaded status, make sure there is a value key, and that it is not undefined\n const valueKey = 'value';\n const implicitKey = '$implicit';\n if (value.status === Status.loaded) {\n if (!(valueKey in value)) return false;\n if (typeof value[valueKey] === 'undefined') return false;\n } else {\n if (valueKey in value && typeof value[valueKey] !== 'undefined') return false;\n if (implicitKey in value && typeof value[implicitKey] !== 'undefined') return false;\n }\n\n return true;\n}\n\nconst defaultError = 'Something went wrong';\n\n@Pipe({\n name: 'glxyAsyncStatus',\n standalone: false,\n})\nexport class GalaxyAsyncStatusPipe implements PipeTransform {\n transform<T>(val: Observable<GlxyAsyncStatus<T> | T>): Observable<GlxyAsyncStatus<T>> {\n return val.pipe(\n map((value) => {\n if (\n value === null ||\n typeof value === 'undefined' ||\n (typeof value === 'object' && Object.keys(value).length == 0) ||\n (Array.isArray(value) && value.length === 0)\n ) {\n return {\n status: Status.empty,\n } as GlxyAsyncStatus<T>;\n }\n\n if (isGalaxyAsyncStatus<T>(value)) {\n if (value.status === Status.error && !value.error) {\n return {\n status: Status.error,\n error: defaultError,\n } as GlxyAsyncStatus<T>;\n }\n\n if (value.status === Status.loaded && !value.$implicit) {\n return {\n status: Status.loaded,\n value: value.value,\n $implicit: value.value,\n } as GlxyAsyncStatus<T>;\n }\n\n return value;\n }\n\n return {\n status: Status.loaded,\n value,\n $implicit: value,\n } as GlxyAsyncStatus<T>;\n }),\n defaultIfEmpty({ status: Status.empty } as GlxyAsyncStatus<T>),\n startWith({ status: Status.loading } as GlxyAsyncStatus<T>),\n catchError((error) => {\n let errorText = defaultError;\n if (typeof error === 'string') {\n errorText = error;\n } else if (error instanceof Error) {\n errorText = error.message;\n }\n\n console.log('glxyAsyncStatus Error - ' + error.name + ': ' + errorText);\n return of({\n status: Status.error,\n error: errorText,\n } as GlxyAsyncStatus<T>);\n }),\n );\n }\n}\n","module.exports = {\n AED: 'د.إ',\n AFN: '؋',\n ALL: 'L',\n AMD: '֏',\n ANG: 'ƒ',\n AOA: 'Kz',\n ARS: '$',\n AUD: '$',\n AWG: 'ƒ',\n AZN: '₼',\n BAM: 'KM',\n BBD: '$',\n BDT: '৳',\n BGN: 'лв',\n BHD: '.د.ب',\n BIF: 'FBu',\n BMD: '$',\n BND: '$',\n BOB: '$b',\n BOV: 'BOV',\n BRL: 'R$',\n BSD: '$',\n BTC: '₿',\n BTN: 'Nu.',\n BWP: 'P',\n BYN: 'Br',\n BYR: 'Br',\n BZD: 'BZ$',\n CAD: '$',\n CDF: 'FC',\n CHE: 'CHE',\n CHF: 'CHF',\n CHW: 'CHW',\n CLF: 'CLF',\n CLP: '$',\n CNH: '¥',\n CNY: '¥',\n COP: '$',\n COU: 'COU',\n CRC: '₡',\n CUC: '$',\n CUP: '₱',\n CVE: '$',\n CZK: 'Kč',\n DJF: 'Fdj',\n DKK: 'kr',\n DOP: 'RD$',\n DZD: 'دج',\n EEK: 'kr',\n EGP: '£',\n ERN: 'Nfk',\n ETB: 'Br',\n ETH: 'Ξ',\n EUR: '€',\n FJD: '$',\n FKP: '£',\n GBP: '£',\n GEL: '₾',\n GGP: '£',\n GHC: '₵',\n GHS: 'GH₵',\n GIP: '£',\n GMD: 'D',\n GNF: 'FG',\n GTQ: 'Q',\n GYD: '$',\n HKD: '$',\n HNL: 'L',\n HRK: 'kn',\n HTG: 'G',\n HUF: 'Ft',\n IDR: 'Rp',\n ILS: '₪',\n IMP: '£',\n INR: '₹',\n IQD: 'ع.د',\n IRR: '﷼',\n ISK: 'kr',\n JEP: '£',\n JMD: 'J$',\n JOD: 'JD',\n JPY: '¥',\n KES: 'KSh',\n KGS: 'лв',\n KHR: '៛',\n KMF: 'CF',\n KPW: '₩',\n KRW: '₩',\n KWD: 'KD',\n KYD: '$',\n KZT: '₸',\n LAK: '₭',\n LBP: '£',\n LKR: '₨',\n LRD: '$',\n LSL: 'M',\n LTC: 'Ł',\n LTL: 'Lt',\n LVL: 'Ls',\n LYD: 'LD',\n MAD: 'MAD',\n MDL: 'lei',\n MGA: 'Ar',\n MKD: 'ден',\n MMK: 'K',\n MNT: '₮',\n MOP: 'MOP$',\n MRO: 'UM',\n MRU: 'UM',\n MUR: '₨',\n MVR: 'Rf',\n MWK: 'MK',\n MXN: '$',\n MXV: 'MXV',\n MYR: 'RM',\n MZN: 'MT',\n NAD: '$',\n NGN: '₦',\n NIO: 'C$',\n NOK: 'kr',\n NPR: '₨',\n NZD: '$',\n OMR: '﷼',\n PAB: 'B/.',\n PEN: 'S/.',\n PGK: 'K',\n PHP: '₱',\n PKR: '₨',\n PLN: 'zł',\n PYG: 'Gs',\n QAR: '﷼',\n RMB: '¥',\n RON: 'lei',\n RSD: 'Дин.',\n RUB: '₽',\n RWF: 'R₣',\n SAR: '﷼',\n SBD: '$',\n SCR: '₨',\n SDG: 'ج.س.',\n SEK: 'kr',\n SGD: 'S$',\n SHP: '£',\n SLL: 'Le',\n SOS: 'S',\n SRD: '$',\n SSP: '£',\n STD: 'Db',\n STN: 'Db',\n SVC: '$',\n SYP: '£',\n SZL: 'E',\n THB: '฿',\n TJS: 'SM',\n TMT: 'T',\n TND: 'د.ت',\n TOP: 'T$',\n TRL: '₤',\n TRY: '₺',\n TTD: 'TT$',\n TVD: '$',\n TWD: 'NT$',\n TZS: 'TSh',\n UAH: '₴',\n UGX: 'USh',\n USD: '$',\n UYI: 'UYI',\n UYU: '$U',\n UYW: 'UYW',\n UZS: 'лв',\n VEF: 'Bs',\n VES: 'Bs.S',\n VND: '₫',\n VUV: 'VT',\n WST: 'WS$',\n XAF: 'FCFA',\n XBT: 'Ƀ',\n XCD: '$',\n XOF: 'CFA',\n XPF: '₣',\n XSU: 'Sucre',\n XUA: 'XUA',\n YER: '﷼',\n ZAR: 'R',\n ZMW: 'ZK',\n ZWD: 'Z$',\n ZWL: '$'\n};","const currencySymbolMap = require('./map');\nmodule.exports = function getSymbolFromCurrency(currencyCode) {\n if (typeof currencyCode !== 'string') {\n return undefined;\n }\n const code = currencyCode.toUpperCase();\n if (!Object.prototype.hasOwnProperty.call(currencySymbolMap, code)) {\n return undefined;\n }\n return currencySymbolMap[code];\n};\nmodule.exports.currencySymbolMap = currencySymbolMap;","// Generated using ShowCurrencies.java\nvar map = {\n AD: 'EUR',\n AE: 'AED',\n AF: 'AFN',\n AG: 'XCD',\n AI: 'XCD',\n AL: 'ALL',\n AM: 'AMD',\n AN: 'ANG',\n AO: 'AOA',\n AR: 'ARS',\n AS: 'USD',\n AT: 'EUR',\n AU: 'AUD',\n AW: 'AWG',\n AX: 'EUR',\n AZ: 'AZN',\n BA: 'BAM',\n BB: 'BBD',\n BD: 'BDT',\n BE: 'EUR',\n BF: 'XOF',\n BG: 'BGN',\n BH: 'BHD',\n BI: 'BIF',\n BJ: 'XOF',\n BL: 'EUR',\n BM: 'BMD',\n BN: 'BND',\n BO: 'BOB',\n BQ: 'USD',\n BR: 'BRL',\n BS: 'BSD',\n BT: 'BTN',\n BV: 'NOK',\n BW: 'BWP',\n BY: 'BYR',\n BZ: 'BZD',\n CA: 'CAD',\n CC: 'AUD',\n CD: 'CDF',\n CF: 'XAF',\n CG: 'XAF',\n CH: 'CHF',\n CI: 'XOF',\n CK: 'NZD',\n CL: 'CLP',\n CM: 'XAF',\n CN: 'CNY',\n CO: 'COP',\n CR: 'CRC',\n CU: 'CUP',\n CV: 'CVE',\n CW: 'ANG',\n CX: 'AUD',\n CY: 'EUR',\n CZ: 'CZK',\n DE: 'EUR',\n DJ: 'DJF',\n DK: 'DKK',\n DM: 'XCD',\n DO: 'DOP',\n DZ: 'DZD',\n EC: 'USD',\n EE: 'EUR',\n EG: 'EGP',\n EH: 'MAD',\n ER: 'ERN',\n ES: 'EUR',\n ET: 'ETB',\n FI: 'EUR',\n FJ: 'FJD',\n FK: 'FKP',\n FM: 'USD',\n FO: 'DKK',\n FR: 'EUR',\n GA: 'XAF',\n GB: 'GBP',\n GD: 'XCD',\n GE: 'GEL',\n GF: 'EUR',\n GG: 'GBP',\n GH: 'GHS',\n GI: 'GIP',\n GL: 'DKK',\n GM: 'GMD',\n GN: 'GNF',\n GP: 'EUR',\n GQ: 'XAF',\n GR: 'EUR',\n GS: 'GBP',\n GT: 'GTQ',\n GU: 'USD',\n GW: 'XOF',\n GY: 'GYD',\n HK: 'HKD',\n HM: 'AUD',\n HN: 'HNL',\n HR: 'HRK',\n HT: 'HTG',\n HU: 'HUF',\n ID: 'IDR',\n IE: 'EUR',\n IL: 'ILS',\n IM: 'GBP',\n IN: 'INR',\n IO: 'USD',\n IQ: 'IQD',\n IR: 'IRR',\n IS: 'ISK',\n IT: 'EUR',\n JE: 'GBP',\n JM: 'JMD',\n JO: 'JOD',\n JP: 'JPY',\n KE: 'KES',\n KG: 'KGS',\n KH: 'KHR',\n KI: 'AUD',\n KM: 'KMF',\n KN: 'XCD',\n KP: 'KPW',\n KR: 'KRW',\n KW: 'KWD',\n KY: 'KYD',\n KZ: 'KZT',\n LA: 'LAK',\n LB: 'LBP',\n LC: 'XCD',\n LI: 'CHF',\n LK: 'LKR',\n LR: 'LRD',\n LS: 'LSL',\n LT: 'LTL',\n LU: 'EUR',\n LV: 'LVL',\n LY: 'LYD',\n MA: 'MAD',\n MC: 'EUR',\n MD: 'MDL',\n ME: 'EUR',\n MF: 'EUR',\n MG: 'MGA',\n MH: 'USD',\n MK: 'MKD',\n ML: 'XOF',\n MM: 'MMK',\n MN: 'MNT',\n MO: 'MOP',\n MP: 'USD',\n MQ: 'EUR',\n MR: 'MRO',\n MS: 'XCD',\n MT: 'EUR',\n MU: 'MUR',\n MV: 'MVR',\n MW: 'MWK',\n MX: 'MXN',\n MY: 'MYR',\n MZ: 'MZN',\n NA: 'NAD',\n NC: 'XPF',\n NE: 'XOF',\n NF: 'AUD',\n NG: 'NGN',\n NI: 'NIO',\n NL: 'EUR',\n NO: 'NOK',\n NP: 'NPR',\n NR: 'AUD',\n NU: 'NZD',\n NZ: 'NZD',\n OM: 'OMR',\n PA: 'PAB',\n PE: 'PEN',\n PF: 'XPF',\n PG: 'PGK',\n PH: 'PHP',\n PK: 'PKR',\n PL: 'PLN',\n PM: 'EUR',\n PN: 'NZD',\n PR: 'USD',\n PS: 'ILS',\n PT: 'EUR',\n PW: 'USD',\n PY: 'PYG',\n QA: 'QAR',\n RE: 'EUR',\n RO: 'RON',\n RS: 'RSD',\n RU: 'RUB',\n RW: 'RWF',\n SA: 'SAR',\n SB: 'SBD',\n SC: 'SCR',\n SD: 'SDG',\n SE: 'SEK',\n SG: 'SGD',\n SH: 'SHP',\n SI: 'EUR',\n SJ: 'NOK',\n SK: 'EUR',\n SL: 'SLL',\n SM: 'EUR',\n SN: 'XOF',\n SO: 'SOS',\n SR: 'SRD',\n ST: 'STD',\n SV: 'SVC',\n SX: 'ANG',\n SY: 'SYP',\n SZ: 'SZL',\n TC: 'USD',\n TD: 'XAF',\n TF: 'EUR',\n TG: 'XOF',\n TH: 'THB',\n TJ: 'TJS',\n TK: 'NZD',\n TL: 'USD',\n TM: 'TMT',\n TN: 'TND',\n TO: 'TOP',\n TR: 'TRY',\n TT: 'TTD',\n TV: 'AUD',\n TW: 'TWD',\n TZ: 'TZS',\n UA: 'UAH',\n UG: 'UGX',\n UM: 'USD',\n US: 'USD',\n UY: 'UYU',\n UZ: 'UZS',\n VA: 'EUR',\n VC: 'XCD',\n VE: 'VEF',\n VG: 'USD',\n VI: 'USD',\n VN: 'VND',\n VU: 'VUV',\n WF: 'XPF',\n WS: 'WST',\n YE: 'YER',\n YT: 'EUR',\n ZA: 'ZAR',\n ZM: 'ZMK',\n ZW: 'ZWL'\n};\nmodule.exports = map;","var map = require(\"./map\");\nvar getCountryCode = function (localeString) {\n var components = localeString.split(\"_\");\n if (components.length == 2) {\n return components.pop();\n }\n components = localeString.split(\"-\");\n if (components.length == 2) {\n return components.pop();\n }\n return localeString;\n};\nexports.getCurrency = function (locale) {\n var countryCode = getCountryCode(locale).toUpperCase();\n if (countryCode in map) {\n return map[countryCode];\n }\n return null;\n};\nexports.getLocales = function (currencyCode) {\n currencyCode = currencyCode.toUpperCase();\n var locales = [];\n for (countryCode in map) {\n if (map[countryCode] === currencyCode) {\n locales.push(countryCode);\n }\n }\n return locales;\n};","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: {\n regular: 'méně než sekunda',\n past: 'před méně než sekundou',\n future: 'za méně než sekundu'\n },\n few: {\n regular: 'méně než {{count}} sekundy',\n past: 'před méně než {{count}} sekundami',\n future: 'za méně než {{count}} sekundy'\n },\n many: {\n regular: 'méně než {{count}} sekund',\n past: 'před méně než {{count}} sekundami',\n future: 'za méně než {{count}} sekund'\n }\n },\n xSeconds: {\n one: {\n regular: 'sekunda',\n past: 'před sekundou',\n future: 'za sekundu'\n },\n few: {\n regular: '{{count}} sekundy',\n past: 'před {{count}} sekundami',\n future: 'za {{count}} sekundy'\n },\n many: {\n regular: '{{count}} sekund',\n past: 'před {{count}} sekundami',\n future: 'za {{count}} sekund'\n }\n },\n halfAMinute: {\n type: 'other',\n other: {\n regular: 'půl minuty',\n past: 'před půl minutou',\n future: 'za půl minuty'\n }\n },\n lessThanXMinutes: {\n one: {\n regular: 'méně než minuta',\n past: 'před méně než minutou',\n future: 'za méně než minutu'\n },\n few: {\n regular: 'méně než {{count}} minuty',\n past: 'před méně než {{count}} minutami',\n future: 'za méně než {{count}} minuty'\n },\n many: {\n regular: 'méně než {{count}} minut',\n past: 'před méně než {{count}} minutami',\n future: 'za méně než {{count}} minut'\n }\n },\n xMinutes: {\n one: {\n regular: 'minuta',\n past: 'před minutou',\n future: 'za minutu'\n },\n few: {\n regular: '{{count}} minuty',\n past: 'před {{count}} minutami',\n future: 'za {{count}} minuty'\n },\n many: {\n regular: '{{count}} minut',\n past: 'před {{count}} minutami',\n future: 'za {{count}} minut'\n }\n },\n aboutXHours: {\n one: {\n regular: 'přibližně hodina',\n past: 'přibližně před hodinou',\n future: 'přibližně za hodinu'\n },\n few: {\n regular: 'přibližně {{count}} hodiny',\n past: 'přibližně před {{count}} hodinami',\n future: 'přibližně za {{count}} hodiny'\n },\n many: {\n regular: 'přibližně {{count}} hodin',\n past: 'přibližně před {{count}} hodinami',\n future: 'přibližně za {{count}} hodin'\n }\n },\n xHours: {\n one: {\n regular: 'hodina',\n past: 'před hodinou',\n future: 'za hodinu'\n },\n few: {\n regular: '{{count}} hodiny',\n past: 'před {{count}} hodinami',\n future: 'za {{count}} hodiny'\n },\n many: {\n regular: '{{count}} hodin',\n past: 'před {{count}} hodinami',\n future: 'za {{count}} hodin'\n }\n },\n xDays: {\n one: {\n regular: 'den',\n past: 'před dnem',\n future: 'za den'\n },\n few: {\n regular: '{{count}} dny',\n past: 'před {{count}} dny',\n future: 'za {{count}} dny'\n },\n many: {\n regular: '{{count}} dní',\n past: 'před {{count}} dny',\n future: 'za {{count}} dní'\n }\n },\n aboutXWeeks: {\n one: {\n regular: 'přibližně týden',\n past: 'přibližně před týdnem',\n future: 'přibližně za týden'\n },\n few: {\n regular: 'přibližně {{count}} týdny',\n past: 'přibližně před {{count}} týdny',\n future: 'přibližně za {{count}} týdny'\n },\n many: {\n regular: 'přibližně {{count}} týdnů',\n past: 'přibližně před {{count}} týdny',\n future: 'přibližně za {{count}} týdnů'\n }\n },\n xWeeks: {\n one: {\n regular: 'týden',\n past: 'před týdnem',\n future: 'za týden'\n },\n few: {\n regular: '{{count}} týdny',\n past: 'před {{count}} týdny',\n future: 'za {{count}} týdny'\n },\n many: {\n regular: '{{count}} týdnů',\n past: 'před {{count}} týdny',\n future: 'za {{count}} týdnů'\n }\n },\n aboutXMonths: {\n one: {\n regular: 'přibližně měsíc',\n past: 'přibližně před měsícem',\n future: 'přibližně za měsíc'\n },\n few: {\n regular: 'přibližně {{count}} měsíce',\n past: 'přibližně před {{count}} měsíci',\n future: 'přibližně za {{count}} měsíce'\n },\n many: {\n regular: 'přibližně {{count}} měsíců',\n past: 'přibližně před {{count}} měsíci',\n future: 'přibližně za {{count}} měsíců'\n }\n },\n xMonths: {\n one: {\n regular: 'měsíc',\n past: 'před měsícem',\n future: 'za měsíc'\n },\n few: {\n regular: '{{count}} měsíce',\n past: 'před {{count}} měsíci',\n future: 'za {{count}} měsíce'\n },\n many: {\n regular: '{{count}} měsíců',\n past: 'před {{count}} měsíci',\n future: 'za {{count}} měsíců'\n }\n },\n aboutXYears: {\n one: {\n regular: 'přibližně rok',\n past: 'přibližně před rokem',\n future: 'přibližně za rok'\n },\n few: {\n regular: 'přibližně {{count}} roky',\n past: 'přibližně před {{count}} roky',\n future: 'přibližně za {{count}} roky'\n },\n many: {\n regular: 'přibližně {{count}} roků',\n past: 'přibližně před {{count}} roky',\n future: 'přibližně za {{count}} roků'\n }\n },\n xYears: {\n one: {\n regular: 'rok',\n past: 'před rokem',\n future: 'za rok'\n },\n few: {\n regular: '{{count}} roky',\n past: 'před {{count}} roky',\n future: 'za {{count}} roky'\n },\n many: {\n regular: '{{count}} roků',\n past: 'před {{count}} roky',\n future: 'za {{count}} roků'\n }\n },\n overXYears: {\n one: {\n regular: 'více než rok',\n past: 'před více než rokem',\n future: 'za více než rok'\n },\n few: {\n regular: 'více než {{count}} roky',\n past: 'před více než {{count}} roky',\n future: 'za více než {{count}} roky'\n },\n many: {\n regular: 'více než {{count}} roků',\n past: 'před více než {{count}} roky',\n future: 'za více než {{count}} roků'\n }\n },\n almostXYears: {\n one: {\n regular: 'skoro rok',\n past: 'skoro před rokem',\n future: 'skoro za rok'\n },\n few: {\n regular: 'skoro {{count}} roky',\n past: 'skoro před {{count}} roky',\n future: 'skoro za {{count}} roky'\n },\n many: {\n regular: 'skoro {{count}} roků',\n past: 'skoro před {{count}} roky',\n future: 'skoro za {{count}} roků'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var pluralResult;\n var tokenValue = formatDistanceLocale[token];\n\n // cs pluralization\n if (tokenValue.type === 'other') {\n pluralResult = tokenValue.other;\n } else if (count === 1) {\n pluralResult = tokenValue.one;\n } else if (count > 1 && count < 5) {\n pluralResult = tokenValue.few;\n } else {\n pluralResult = tokenValue.many;\n }\n\n // times\n var suffixExist = (options === null || options === void 0 ? void 0 : options.addSuffix) === true;\n var comparison = options === null || options === void 0 ? void 0 : options.comparison;\n var timeResult;\n if (suffixExist && comparison === -1) {\n timeResult = pluralResult.past;\n } else if (suffixExist && comparison === 1) {\n timeResult = pluralResult.future;\n } else {\n timeResult = pluralResult.regular;\n }\n return timeResult.replace('{{count}}', String(count));\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d. MMMM yyyy',\n long: 'd. MMMM yyyy',\n medium: 'd. M. yyyy',\n short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n full: 'H:mm:ss zzzz',\n long: 'H:mm:ss z',\n medium: 'H:mm:ss',\n short: 'H:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'v' {{time}}\",\n long: \"{{date}} 'v' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var accusativeWeekdays = ['neděli', 'pondělí', 'úterý', 'středu', 'čtvrtek', 'pátek', 'sobotu'];\nvar formatRelativeLocale = {\n lastWeek: \"'poslední' eeee 've' p\",\n yesterday: \"'včera v' p\",\n today: \"'dnes v' p\",\n tomorrow: \"'zítra v' p\",\n nextWeek: function nextWeek(date) {\n var day = date.getUTCDay();\n return \"'v \" + accusativeWeekdays[day] + \" o' p\";\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['př. n. l.', 'n. l.'],\n abbreviated: ['př. n. l.', 'n. l.'],\n wide: ['před naším letopočtem', 'našeho letopočtu']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí'],\n wide: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí']\n};\nvar monthValues = {\n narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n wide: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec']\n};\nvar formattingMonthValues = {\n narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n wide: ['ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince']\n};\nvar dayValues = {\n narrow: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n short: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n abbreviated: ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],\n wide: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n abbreviated: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'dopoledne',\n pm: 'odpoledne',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n abbreviated: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'dopoledne',\n pm: 'odpoledne',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n abbreviated: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n wide: /^(p[řr](\\.|ed) Kristem|p[řr](\\.|ed) na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i\n};\nvar parseEraPatterns = {\n any: [/^p[řr]/i, /^(po|n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]\\. [čc]tvrtlet[íi]/i,\n wide: /^[1234]\\. [čc]tvrtlet[íi]/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[lúubdkčcszřrlp]/i,\n abbreviated: /^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,\n wide: /^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^l/i, /^[úu]/i, /^b/i, /^d/i, /^k/i, /^[čc]/i, /^[čc]/i, /^s/i, /^z/i, /^[řr]/i, /^l/i, /^p/i],\n any: [/^led/i, /^[úu]n/i, /^b[řr]e/i, /^dub/i, /^kv[ěe]/i, /^[čc]vn|[čc]erven(?!\\w)|[čc]ervna/i, /^[čc]vc|[čc]erven(ec|ce)/i, /^srp/i, /^z[áa][řr]/i, /^[řr][íi]j/i, /^lis/i, /^pro/i]\n};\nvar matchDayPatterns = {\n narrow: /^[npuúsčps]/i,\n short: /^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,\n abbreviated: /^(ned|pon|[úu]te|st[rř]|[čc]tv|p[áa]t|sob)/i,\n wide: /^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i\n};\nvar parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^[úu]/i, /^s/i, /^[čc]/i, /^p/i, /^s/i],\n any: [/^ne/i, /^po/i, /^[úu]t/i, /^st/i, /^[čc]t/i, /^p[áa]/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^dopoledne|dop\\.?|odpoledne|odp\\.?|p[ůu]lnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci?/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^dop/i,\n pm: /^odp/i,\n midnight: /^p[ůu]lnoc/i,\n noon: /^poledne/i,\n morning: /r[áa]no/i,\n afternoon: /odpoledne/i,\n evening: /ve[čc]er/i,\n night: /noc/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Czech locale.\n * @language Czech\n * @iso-639-2 ces\n * @author David Rus [@davidrus]{@link https://github.com/davidrus}\n * @author Pavel Hrách [@SilenY]{@link https://github.com/SilenY}\n * @author Jozef Bíroš [@JozefBiros]{@link https://github.com/JozefBiros}\n */\nvar locale = {\n code: 'cs',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n },\n withPreposition: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n }\n },\n xSeconds: {\n standalone: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n },\n withPreposition: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n }\n },\n halfAMinute: {\n standalone: 'halbe Minute',\n withPreposition: 'halben Minute'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n },\n withPreposition: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n }\n },\n xMinutes: {\n standalone: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n },\n withPreposition: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n },\n withPreposition: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n }\n },\n xHours: {\n standalone: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n },\n withPreposition: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n }\n },\n xDays: {\n standalone: {\n one: '1 Tag',\n other: '{{count}} Tage'\n },\n withPreposition: {\n one: '1 Tag',\n other: '{{count}} Tagen'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n },\n withPreposition: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n }\n },\n xWeeks: {\n standalone: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n },\n withPreposition: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monate'\n },\n withPreposition: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monaten'\n }\n },\n xMonths: {\n standalone: {\n one: '1 Monat',\n other: '{{count}} Monate'\n },\n withPreposition: {\n one: '1 Monat',\n other: '{{count}} Monaten'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahre'\n },\n withPreposition: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahren'\n }\n },\n xYears: {\n standalone: {\n one: '1 Jahr',\n other: '{{count}} Jahre'\n },\n withPreposition: {\n one: '1 Jahr',\n other: '{{count}} Jahren'\n }\n },\n overXYears: {\n standalone: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahre'\n },\n withPreposition: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahren'\n }\n },\n almostXYears: {\n standalone: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahre'\n },\n withPreposition: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahren'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return 'vor ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n // Montag, 7. Januar 2018\n long: 'do MMMM y',\n // 7. Januar 2018\n medium: 'do MMM y',\n // 7. Jan. 2018\n short: 'dd.MM.y' // 07.01.2018\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'um' {{time}}\",\n long: \"{{date}} 'um' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'letzten' eeee 'um' p\",\n yesterday: \"'gestern um' p\",\n today: \"'heute um' p\",\n tomorrow: \"'morgen um' p\",\n nextWeek: \"eeee 'um' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.Chr.', 'n.Chr.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n};\n\n// Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n};\n\n// https://st.unicode.org/cldr-apps/v#/de/Gregorian/\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n wide: monthValues.wide\n};\nvar dayValues = {\n narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n};\n\n// https://www.unicode.org/cldr/charts/32/summary/de.html#1881\nvar dayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachm.',\n evening: 'Abend',\n night: 'Nacht'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachm.',\n evening: 'abends',\n night: 'nachts'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n formattingValues: formattingMonthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smdmf]/i,\n short: /^(so|mo|di|mi|do|fr|sa)/i,\n abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^v/i,\n pm: /^n/i,\n midnight: /^Mitte/i,\n noon: /^Mitta/i,\n morning: /morgens/i,\n afternoon: /nachmittags/i,\n // will never be matched. Afternoon is matched by `pm`\n evening: /abends/i,\n night: /nachts/i // will never be matched. Night is matched by `pm`\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n code: 'de',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: 'a second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: 'a minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about an hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: 'an hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: 'a day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about a week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: 'a week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about a month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: 'a month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about a year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: 'a year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over a year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost a year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, yyyy',\n long: 'MMMM do, yyyy',\n medium: 'MMM d, yyyy',\n short: 'yyyy-MM-dd'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import formatRelative from \"../en-US/_lib/formatRelative/index.js\";\nimport localize from \"../en-US/_lib/localize/index.js\";\nimport match from \"../en-US/_lib/match/index.js\";\nimport formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (Canada).\n * @language English\n * @iso-639-2 eng\n * @author Mark Owsiak [@markowsiak]{@link https://github.com/markowsiak}\n * @author Marco Imperatore [@mimperatore]{@link https://github.com/mimperatore}\n */\nvar locale = {\n code: 'en-CA',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'menos de un segundo',\n other: 'menos de {{count}} segundos'\n },\n xSeconds: {\n one: '1 segundo',\n other: '{{count}} segundos'\n },\n halfAMinute: 'medio minuto',\n lessThanXMinutes: {\n one: 'menos de un minuto',\n other: 'menos de {{count}} minutos'\n },\n xMinutes: {\n one: '1 minuto',\n other: '{{count}} minutos'\n },\n aboutXHours: {\n one: 'alrededor de 1 hora',\n other: 'alrededor de {{count}} horas'\n },\n xHours: {\n one: '1 hora',\n other: '{{count}} horas'\n },\n xDays: {\n one: '1 día',\n other: '{{count}} días'\n },\n aboutXWeeks: {\n one: 'alrededor de 1 semana',\n other: 'alrededor de {{count}} semanas'\n },\n xWeeks: {\n one: '1 semana',\n other: '{{count}} semanas'\n },\n aboutXMonths: {\n one: 'alrededor de 1 mes',\n other: 'alrededor de {{count}} meses'\n },\n xMonths: {\n one: '1 mes',\n other: '{{count}} meses'\n },\n aboutXYears: {\n one: 'alrededor de 1 año',\n other: 'alrededor de {{count}} años'\n },\n xYears: {\n one: '1 año',\n other: '{{count}} años'\n },\n overXYears: {\n one: 'más de 1 año',\n other: 'más de {{count}} años'\n },\n almostXYears: {\n one: 'casi 1 año',\n other: 'casi {{count}} años'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'en ' + result;\n } else {\n return 'hace ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'a las' {{time}}\",\n long: \"{{date}} 'a las' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'el' eeee 'pasado a la' p\",\n yesterday: \"'ayer a la' p\",\n today: \"'hoy a la' p\",\n tomorrow: \"'mañana a la' p\",\n nextWeek: \"eeee 'a la' p\",\n other: 'P'\n};\nvar formatRelativeLocalePlural = {\n lastWeek: \"'el' eeee 'pasado a las' p\",\n yesterday: \"'ayer a las' p\",\n today: \"'hoy a las' p\",\n tomorrow: \"'mañana a las' p\",\n nextWeek: \"eeee 'a las' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n if (date.getUTCHours() !== 1) {\n return formatRelativeLocalePlural[token];\n } else {\n return formatRelativeLocale[token];\n }\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['AC', 'DC'],\n abbreviated: ['AC', 'DC'],\n wide: ['antes de cristo', 'después de cristo']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['T1', 'T2', 'T3', 'T4'],\n wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n narrow: ['e', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n abbreviated: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],\n wide: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']\n};\nvar dayValues = {\n narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],\n short: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],\n abbreviated: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],\n wide: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'md',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'md',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'º';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|a\\.?\\s?e\\.?\\s?c\\.?|d\\.?\\s?c\\.?|e\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i\n};\nvar parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^(antes de cristo|antes de la era com[uú]n)/i, /^(despu[eé]s de cristo|era com[uú]n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[efmajsond]/i,\n abbreviated: /^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,\n wide: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^e/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^en/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]\n};\nvar matchDayPatterns = {\n narrow: /^[dlmjvs]/i,\n short: /^(do|lu|ma|mi|ju|vi|s[áa])/i,\n abbreviated: /^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,\n wide: /^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^do/i, /^lu/i, /^ma/i, /^mi/i, /^ju/i, /^vi/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,\n any: /^([ap]\\.?\\s?m\\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn/i,\n noon: /^md/i,\n morning: /mañana/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noche/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Spanish locale.\n * @language Spanish\n * @iso-639-2 spa\n * @author Juan Angosto [@juanangosto]{@link https://github.com/juanangosto}\n * @author Guillermo Grau [@guigrpa]{@link https://github.com/guigrpa}\n * @author Fernando Agüero [@fjaguero]{@link https://github.com/fjaguero}\n * @author Gastón Haro [@harogaston]{@link https://github.com/harogaston}\n * @author Yago Carballo [@YagoCarballo]{@link https://github.com/YagoCarballo}\n */\nvar locale = {\n code: 'es',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'moins d’une seconde',\n other: 'moins de {{count}} secondes'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} secondes'\n },\n halfAMinute: '30 secondes',\n lessThanXMinutes: {\n one: 'moins d’une minute',\n other: 'moins de {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'environ 1 heure',\n other: 'environ {{count}} heures'\n },\n xHours: {\n one: '1 heure',\n other: '{{count}} heures'\n },\n xDays: {\n one: '1 jour',\n other: '{{count}} jours'\n },\n aboutXWeeks: {\n one: 'environ 1 semaine',\n other: 'environ {{count}} semaines'\n },\n xWeeks: {\n one: '1 semaine',\n other: '{{count}} semaines'\n },\n aboutXMonths: {\n one: 'environ 1 mois',\n other: 'environ {{count}} mois'\n },\n xMonths: {\n one: '1 mois',\n other: '{{count}} mois'\n },\n aboutXYears: {\n one: 'environ 1 an',\n other: 'environ {{count}} ans'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ans'\n },\n overXYears: {\n one: 'plus d’un an',\n other: 'plus de {{count}} ans'\n },\n almostXYears: {\n one: 'presqu’un an',\n other: 'presque {{count}} ans'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var form = formatDistanceLocale[token];\n if (typeof form === 'string') {\n result = form;\n } else if (count === 1) {\n result = form.one;\n } else {\n result = form.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'dans ' + result;\n } else {\n return 'il y a ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"eeee 'dernier à' p\",\n yesterday: \"'hier à' p\",\n today: \"'aujourd’hui à' p\",\n tomorrow: \"'demain à' p'\",\n nextWeek: \"eeee 'prochain à' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['av. J.-C', 'ap. J.-C'],\n abbreviated: ['av. J.-C', 'ap. J.-C'],\n wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n narrow: ['T1', 'T2', 'T3', 'T4'],\n abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'mat.',\n afternoon: 'ap.m.',\n evening: 'soir',\n night: 'mat.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'matin',\n afternoon: 'après-midi',\n evening: 'soir',\n night: 'matin'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'du matin',\n afternoon: 'de l’après-midi',\n evening: 'du soir',\n night: 'du matin'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n if (number === 0) return '0';\n var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n var suffix;\n if (number === 1) {\n suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n } else {\n suffix = 'ème';\n }\n return number + suffix;\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^T?[1234]/i,\n abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[lmjvsd]/i,\n short: /^(di|lu|ma|me|je|ve|sa)/i,\n abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^min/i,\n noon: /^mid/i,\n morning: /mat/i,\n afternoon: /ap/i,\n evening: /soir/i,\n night: /nuit/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\nvar locale = {\n code: 'fr',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'yy-MM-dd'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","// Same as fr\nimport formatDistance from \"../fr/_lib/formatDistance/index.js\";\nimport formatRelative from \"../fr/_lib/formatRelative/index.js\";\nimport localize from \"../fr/_lib/localize/index.js\";\nimport match from \"../fr/_lib/match/index.js\";\n// Unique for fr-CA\nimport formatLong from \"./_lib/formatLong/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale (Canada).\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n * @author Gabriele Petrioli [@gpetrioli]{@link https://github.com/gpetrioli}\n */\nvar locale = {\n code: 'fr-CA',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n // Unique for fr-CA\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'minder dan een seconde',\n other: 'minder dan {{count}} seconden'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} seconden'\n },\n halfAMinute: 'een halve minuut',\n lessThanXMinutes: {\n one: 'minder dan een minuut',\n other: 'minder dan {{count}} minuten'\n },\n xMinutes: {\n one: 'een minuut',\n other: '{{count}} minuten'\n },\n aboutXHours: {\n one: 'ongeveer 1 uur',\n other: 'ongeveer {{count}} uur'\n },\n xHours: {\n one: '1 uur',\n other: '{{count}} uur'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dagen'\n },\n aboutXWeeks: {\n one: 'ongeveer 1 week',\n other: 'ongeveer {{count}} weken'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weken'\n },\n aboutXMonths: {\n one: 'ongeveer 1 maand',\n other: 'ongeveer {{count}} maanden'\n },\n xMonths: {\n one: '1 maand',\n other: '{{count}} maanden'\n },\n aboutXYears: {\n one: 'ongeveer 1 jaar',\n other: 'ongeveer {{count}} jaar'\n },\n xYears: {\n one: '1 jaar',\n other: '{{count}} jaar'\n },\n overXYears: {\n one: 'meer dan 1 jaar',\n other: 'meer dan {{count}} jaar'\n },\n almostXYears: {\n one: 'bijna 1 jaar',\n other: 'bijna {{count}} jaar'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'over ' + result;\n } else {\n return result + ' geleden';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd-MM-y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'om' {{time}}\",\n long: \"{{date}} 'om' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'afgelopen' eeee 'om' p\",\n yesterday: \"'gisteren om' p\",\n today: \"'vandaag om' p\",\n tomorrow: \"'morgen om' p\",\n nextWeek: \"eeee 'om' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.C.', 'n.C.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['voor Christus', 'na Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['K1', 'K2', 'K3', 'K4'],\n wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],\n short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n wide: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'e';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)e?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^([vn]\\.? ?C\\.?)/,\n abbreviated: /^([vn]\\. ?Chr\\.?)/,\n wide: /^((voor|na) Christus)/\n};\nvar parseEraPatterns = {\n any: [/^v/, /^n/]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234]e kwartaal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^jan/i, /^feb/i, /^m(r|a)/i, /^apr/i, /^mei/i, /^jun/i, /^jul/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]\n};\nvar matchDayPatterns = {\n narrow: /^[zmdwv]/i,\n short: /^(zo|ma|di|wo|do|vr|za)/i,\n abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,\n wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],\n any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /^middernacht/i,\n noon: /^het middaguur/i,\n morning: /ochtend/i,\n afternoon: /middag/i,\n evening: /avond/i,\n night: /nacht/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Dutch locale.\n * @language Dutch\n * @iso-639-2 nld\n * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}\n * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}\n * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}\n * @author Edo Rivai [@edorivai]{@link https://github.com/edorivai}\n * @author Niels Keurentjes [@curry684]{@link https://github.com/curry684}\n * @author Stefan Vermaas [@stefanvermaas]{@link https://github.com/stefanvermaas}\n */\nvar locale = {\n code: 'nl',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","// This file is generated automatically by `scripts/build/indices.ts`. Please, don't change it.\nexport { default as af } from \"./af/index.js\";\nexport { default as ar } from \"./ar/index.js\";\nexport { default as arDZ } from \"./ar-DZ/index.js\";\nexport { default as arEG } from \"./ar-EG/index.js\";\nexport { default as arMA } from \"./ar-MA/index.js\";\nexport { default as arSA } from \"./ar-SA/index.js\";\nexport { default as arTN } from \"./ar-TN/index.js\";\nexport { default as az } from \"./az/index.js\";\nexport { default as be } from \"./be/index.js\";\nexport { default as beTarask } from \"./be-tarask/index.js\";\nexport { default as bg } from \"./bg/index.js\";\nexport { default as bn } from \"./bn/index.js\";\nexport { default as bs } from \"./bs/index.js\";\nexport { default as ca } from \"./ca/index.js\";\nexport { default as cs } from \"./cs/index.js\";\nexport { default as cy } from \"./cy/index.js\";\nexport { default as da } from \"./da/index.js\";\nexport { default as de } from \"./de/index.js\";\nexport { default as deAT } from \"./de-AT/index.js\";\nexport { default as el } from \"./el/index.js\";\nexport { default as enAU } from \"./en-AU/index.js\";\nexport { default as enCA } from \"./en-CA/index.js\";\nexport { default as enGB } from \"./en-GB/index.js\";\nexport { default as enIE } from \"./en-IE/index.js\";\nexport { default as enIN } from \"./en-IN/index.js\";\nexport { default as enNZ } from \"./en-NZ/index.js\";\nexport { default as enUS } from \"./en-US/index.js\";\nexport { default as enZA } from \"./en-ZA/index.js\";\nexport { default as eo } from \"./eo/index.js\";\nexport { default as es } from \"./es/index.js\";\nexport { default as et } from \"./et/index.js\";\nexport { default as eu } from \"./eu/index.js\";\nexport { default as faIR } from \"./fa-IR/index.js\";\nexport { default as fi } from \"./fi/index.js\";\nexport { default as fr } from \"./fr/index.js\";\nexport { default as frCA } from \"./fr-CA/index.js\";\nexport { default as frCH } from \"./fr-CH/index.js\";\nexport { default as fy } from \"./fy/index.js\";\nexport { default as gd } from \"./gd/index.js\";\nexport { default as gl } from \"./gl/index.js\";\nexport { default as gu } from \"./gu/index.js\";\nexport { default as he } from \"./he/index.js\";\nexport { default as hi } from \"./hi/index.js\";\nexport { default as hr } from \"./hr/index.js\";\nexport { default as ht } from \"./ht/index.js\";\nexport { default as hu } from \"./hu/index.js\";\nexport { default as hy } from \"./hy/index.js\";\nexport { default as id } from \"./id/index.js\";\nexport { default as is } from \"./is/index.js\";\nexport { default as it } from \"./it/index.js\";\nexport { default as itCH } from \"./it-CH/index.js\";\nexport { default as ja } from \"./ja/index.js\";\nexport { default as jaHira } from \"./ja-Hira/index.js\";\nexport { default as ka } from \"./ka/index.js\";\nexport { default as kk } from \"./kk/index.js\";\nexport { default as km } from \"./km/index.js\";\nexport { default as kn } from \"./kn/index.js\";\nexport { default as ko } from \"./ko/index.js\";\nexport { default as lb } from \"./lb/index.js\";\nexport { default as lt } from \"./lt/index.js\";\nexport { default as lv } from \"./lv/index.js\";\nexport { default as mk } from \"./mk/index.js\";\nexport { default as mn } from \"./mn/index.js\";\nexport { default as ms } from \"./ms/index.js\";\nexport { default as mt } from \"./mt/index.js\";\nexport { default as nb } from \"./nb/index.js\";\nexport { default as nl } from \"./nl/index.js\";\nexport { default as nlBE } from \"./nl-BE/index.js\";\nexport { default as nn } from \"./nn/index.js\";\nexport { default as oc } from \"./oc/index.js\";\nexport { default as pl } from \"./pl/index.js\";\nexport { default as pt } from \"./pt/index.js\";\nexport { default as ptBR } from \"./pt-BR/index.js\";\nexport { default as ro } from \"./ro/index.js\";\nexport { default as ru } from \"./ru/index.js\";\nexport { default as sk } from \"./sk/index.js\";\nexport { default as sl } from \"./sl/index.js\";\nexport { default as sq } from \"./sq/index.js\";\nexport { default as sr } from \"./sr/index.js\";\nexport { default as srLatn } from \"./sr-Latn/index.js\";\nexport { default as sv } from \"./sv/index.js\";\nexport { default as ta } from \"./ta/index.js\";\nexport { default as te } from \"./te/index.js\";\nexport { default as th } from \"./th/index.js\";\nexport { default as tr } from \"./tr/index.js\";\nexport { default as ug } from \"./ug/index.js\";\nexport { default as uk } from \"./uk/index.js\";\nexport { default as uz } from \"./uz/index.js\";\nexport { default as uzCyrl } from \"./uz-Cyrl/index.js\";\nexport { default as vi } from \"./vi/index.js\";\nexport { default as zhCN } from \"./zh-CN/index.js\";\nexport { default as zhHK } from \"./zh-HK/index.js\";\nexport { default as zhTW } from \"./zh-TW/index.js\";","import { enUS, enCA, cs, frCA, nl, fr, de, es } from 'date-fns/locale';\nimport {\n getBrowserCultureLang,\n getLanguageFromLocalStorage,\n} from '@vendasta/galaxy/i18n/src/browser-locale/browser-locale';\n\nexport const supportedLocales = [enUS, enCA, cs, frCA, nl, fr, de, es];\n/**\n * Based the user's preferred language from the navigator and finds the best locale match.\n * @returns {Locale} Returns a Locale that is the best match, enUs as the fallback.\n */\nexport function getLocale(): Locale {\n const languageFromLocalStorage = getLanguageFromLocalStorage();\n const locale = languageFromLocalStorage ? languageFromLocalStorage : getBrowserCultureLang();\n if (locale === 'fr-FR' || locale === 'fr') {\n return fr;\n } else if (locale === 'fr-CA') {\n return frCA;\n } else if (locale === 'en-CA') {\n return enCA;\n } else if (locale === 'cs') {\n return cs;\n } else if (locale === 'nl') {\n return nl;\n } else if (locale === 'de') {\n return de;\n } else if (locale === 'es-419') {\n return es;\n }\n return enUS;\n}\n\n/**\n * @param locale {string} A locale code for the locale format, typically from navigator.language (BCP-47)\n * @return { string } A locale code that is ISO 639-1 to deal missing matching locale codes between BCP-47 and ISO 639-1\n * (ISO 639-1 w/ optional two character region subtag) ex) en, en-US, en-CA, fr-CA, fr\n */\nexport const getLocaleCode = (locale?: string): string | undefined => {\n if (!locale) {\n return getLocale().code;\n }\n return locale;\n};\n","export * from './src/locale-utils';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import getSymbolFromCurrency from 'currency-symbol-map';\nimport { getCurrency } from 'locale-currency';\nimport { getLocaleCode } from '../../locale';\n\n/**\n * @param locale { string } A code for the locale format. (either BCP-47 or ISO 639-1)\n * @return { string } A locale code. (ISO 639-1 w/ optional two character region subtag) ex) en, en-US, en-CA, fr-CA, fr\n */\nexport const getCurrencyCode = (locale: string): string => {\n if (getLocaleCode(locale) == 'cs') {\n return getCurrency('cz');\n }\n return getCurrency(getLocaleCode(locale) || 'en');\n};\n\n/**\n * @param code {string } Three character currency code. (ISO 4217) ex) USD, CAD, AUS\n * @return {string} The currency symbol for the given currency code.\n */\nexport const getCurrencySymbol = (code: string): string | undefined => {\n return getSymbolFromCurrency(code);\n};\n","export * from './src/currency-utils';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { getCurrencySymbol } from '@vendasta/galaxy/utility/currency-utils';\nimport { getLocaleCode } from '@vendasta/galaxy/utility/locale';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'glxyCurrency',\n standalone: false,\n})\nexport class GalaxyCurrencyPipe implements PipeTransform {\n /**\n * @param value {string} the numerical value that is being converted to a currency string\n * @param currencyCode {string} Three character code to represent the currency (ISO 4217) ex) USD, CAD, AUS\n * @param locale {string} A locale code for the locale format rules to use. (ISO 639-1 w/ optional two character region subtag) ex) en, en-US, en-CA, fr-CA, fr\n * @returns {string} Returns a string of the localized currency value with the currency symbol for the given currency code. Includes currency code at the end if currency symbol is \"$\"\n */\n transform(value: number, currencyCode = 'USD', locale?: string): string {\n if (!value && value !== 0) {\n return '';\n }\n\n if (!locale) {\n locale = getLocaleCode();\n }\n\n let currencyString;\n try {\n currencyString = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode,\n currencyDisplay: 'narrowSymbol',\n }).format(value);\n } catch (err) {\n currencyString = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode,\n currencyDisplay: 'symbol',\n }).format(value);\n }\n\n const currencySymbol = getCurrencySymbol(currencyCode) || '$';\n\n // sometimes the Number format doesn't return a string with a currency symbol. Instead, it returns the currency code.\n // if that's the case we'll get currency symbol and replace the currency code with the symbol.\n // ex) currency is \"CZK\", number format returns \"CZK 3\", so we swap out the currency code for the symbol (Kč)\n if (currencyString.includes(currencyCode)) {\n currencyString = currencyString.replace(currencyCode, currencySymbol);\n }\n\n // we want to the currency code to the end of the string if the currency symbol is \"$\"\n // this is b/c most countries that use the \"$\" as their currency symbol hold different monetary values and each refer to a different currency code. ex) CAD vs USD\n // in contrast, the currency symbol of the Euro (€) has the same value across all countries that use the \"€\" symbol b/c they are all refering to the same currency code (EUR).\n if (currencySymbol === '$') {\n currencyString += ` ${currencyCode}`;\n }\n\n return currencyString;\n }\n}\n","export interface DateRange {\n start?: Date;\n end?: Date;\n}\n\nexport enum DateDuration {\n days = 'days',\n months = 'months',\n}\n\nexport enum DateFormat { // Wed Apr 01 2020 16:20:00 GMT-600\n mediumDay = 'LLL d', // MMM d (Apr 1)\n shortDate = 'L/d/yy', // M/d/yy (4/1/20)\n mediumDate = 'LLL d, y', // 'MMM d, y' (Apr 1, 2020)\n longDate = 'LLLL d, y', // 'MMMM d, y' (April 1, 2020)\n longMonth = 'LLLL y', // 'MMMM y' (April 2020)\n shortTime = 'h:mm a', // (4:20 PM)\n short = 'M/d/yy, h:mm a', // (4/1/20, 4:20 PM)\n medium = 'LLL d, y, h:mm a', // 'MMM d, y, h:mm:ss a' (removed the seconds) (Apr 1, 2020, 4:20 PM)\n long = 'LLLL d, y, h:mm a', // 'MMMM d, y, h:mm:ss a z' (removed the seconds and timezone) (April 1, 2020, 4:20 PM)\n mediumDateShortTime = 'LLL d, h:mm a', // 'MMM d, h:mm:ss a' (removed the seconds) (Apr 1, 4:20 PM)\n longLocalDate = 'PPP', // April 29, 1453 (changes order of day and month based on locale)\n mediumLocalDate = 'PP', // Apr 29, 1453 (changes order of day and month based on locale)\n}\n","import {\n addDays as add,\n addMinutes,\n isBefore as before,\n differenceInMonths as diffInMonths,\n differenceInCalendarDays,\n endOfDay,\n endOfMonth,\n format,\n formatDistance,\n parseISO,\n isSameDay as sameDay,\n startOfDay,\n startOfMonth,\n startOfWeek,\n subDays,\n subMonths,\n subYears,\n} from 'date-fns';\nimport { getLocale } from '../../locale';\nimport { DateDuration, DateFormat, DateRange } from './interface';\n\nconst MS_PER_MINUTE = 60 * 1000;\n\n/**\n * @param {Date} value What you wish to normalize\n * @param {(value: Date | number) => Date} dateFn A date function that takes in a date and applies some logic and returns a date\n * @returns {Date} normalized Date\n */\nexport function normalizeDateFunc(\n value: Date,\n dateFn: (value: Date | number, ...args: any[]) => Date,\n ...args: any[]\n): Date {\n const date = new Date(value);\n return addMinutes(dateFn(getUTCTime(date), ...args), -date.getTimezoneOffset());\n}\n\n/**\n * @param {Date} date - a given date\n * @param {number} amount - number of days to add to the date\n * @returns {Date} Returns a date that is \"amount\" of days in the future from the provided date.\n */\nexport function addDays(date: Date, amount: number): Date {\n return add(date, amount);\n}\n\n/**\n * @param {Date} date - a given date\n * @param {number} amount - number of days to subtract from the date\n * @returns {Date} Returns a date that is \"amount\" of days in the past from the provided date.\n */\nexport function subtractDays(date: Date, amount: number): Date {\n return subDays(date, amount);\n}\n\n/**\n * @param {Date} date - a given date\n * @param {number} amount - number of months to subtract from the date\n * @returns {Date} Returns a date that is \"amount\" of months in the past from the provided date.\n */\nexport function subtractMonths(date: Date, amount: number): Date {\n return subMonths(date, amount);\n}\n\n/**\n * @param {Date} date - a given date\n * @param {number} amount - number of years to subtract from the date\n * @returns {Date} Returns a date that is \"amount\" of years in the past from the provided date.\n */\nexport function subtractYears(date: Date, amount: number): Date {\n return subYears(date, amount);\n}\n\n/**\n * Given a date, a number, and either days or months we return a date that is that amount of days in the past to find the start date.\n * @example\n * // returns Tue Nov 14 2020\n * calculateStartDate(Tue Nov 17 2020, 3, 'days')\n * @example\n * // returns Thu Sept 17 2020\n * calculateStartDate(Thu Sept 17 2020, 2, 'months')\n * @param {Date} endDate - the end date of date range\n * @param {number} dur - the number of date units the date range is\n * @parm {DateDuration} unit - specifies whether we to \"dur\" days or \"dur\" months into the past for the start date\n * @returns {Date} Returns the date that is either \"dur\" days or \"dur\" months in the past in relation to the provided end date\n */\nexport function calculateStartDate(endDate: Date, dur: number, unit: DateDuration): Date {\n return unit === DateDuration.days ? subtractDays(endDate, dur) : subtractMonths(endDate, dur);\n}\n\n/**\n * @param {Date} value - a given date\n * @returns {string} Returns a localized string representation of the given date\n */\nexport function formatDate(\n value: Date,\n dateFormat: DateFormat | string = DateFormat.mediumLocalDate,\n locale?: Locale,\n): string {\n if (!locale) {\n locale = getLocale();\n }\n const date = new Date(value);\n return format(date, dateFormat, {\n locale,\n });\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {string} Returns a string representation of the given date in UTC\n */\nexport function formatUTCDate(\n date: Date,\n dateFormat: DateFormat | string = DateFormat.mediumLocalDate,\n locale?: Locale,\n): string {\n return formatDate(getUTCTime(date), dateFormat, locale);\n}\n\n/**\n * @param {DateRange} dateRange - An object with start and end properties, both properties are of type Date\n * @returns {string} Returns a localized string representation of the start and end date, separated by a \"-\"\n */\nexport function formatDateRange(dateRange: DateRange): string {\n if (!dateRange || !dateRange.start || !dateRange.end) return '';\n return `${formatDate(dateRange.start)} - ${formatDate(dateRange.end)}`;\n}\n\nexport function formatUTCDateRange(dateRange: DateRange): string {\n if (!dateRange || !dateRange.start || !dateRange.end) return '';\n return `${formatUTCDate(dateRange.start)} - ${formatUTCDate(dateRange.end)}`;\n}\n\n/**\n * @returns {number} Returns the number of milliseconds that represent the timezone offset\n */\nexport function getTimezoneOffsetInMilliseconds(): number {\n return new Date().getTimezoneOffset() * MS_PER_MINUTE;\n}\n\n/**\n * @param {Date} date A date object\n * @returns {Date} returns the UTC time based off of the timezone of the client\n */\nexport function getUTCTime(date: Date): Date {\n return parseISO(date.toISOString().slice(0, -1));\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the start of the day (midnight)\n */\nexport function getStartOfDay(date: Date): Date {\n return startOfDay(date);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the start of the day (midnight) in UTC\n * The start date of the UTC date from the given date\n * e.g. date: Wed Aug 31 2022 23:59:59 GMT-0600 (Central Standard Time) => Sept 1st in UTC\n * return: Thur Sept 01 2022 00:00:00 UTC\n */\nexport function getUTCStartOfDay(date: Date): Date {\n return normalizeDateFunc(date, startOfDay);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the end of the day (minute before midnight)\n */\nexport function getEndOfDay(date: Date): Date {\n return endOfDay(date);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the end of the day (minute before midnight) in UTC\n */\nexport function getUTCEndOfDay(date: Date): Date {\n return normalizeDateFunc(date, endOfDay);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the start of the week (midnight)\n */\nexport function getStartOfWeek(date: Date): Date {\n return startOfWeek(date);\n}\n\n/**\n * @param {Date} date - a given date\n * @param {string} unit - unit of time\n * @returns {Date} Returns the start of a unit for the given date.\n */\nexport function getStartOf(\n date: Date,\n unit: 'month' | 'week' | 'day',\n options?: {\n locale?: Locale;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n },\n): Date {\n switch (unit) {\n case 'month':\n return startOfMonth(date);\n case 'week':\n return startOfWeek(date, options);\n case 'day':\n return startOfDay(date);\n }\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the start of the month (midnight)\n */\nexport function getStartOfMonth(date: Date): Date {\n return startOfMonth(date);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the start of the month (midnight) in UTC\n */\nexport function getUTCStartOfMonth(date: Date): Date {\n return normalizeDateFunc(date, startOfMonth);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the end of the month (minute before midnight)\n */\nexport function getEndOfMonth(date: Date): Date {\n return endOfMonth(date);\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {Date} Returns the given date at the end of the month (minute before midnight) in UTC\n * The end of date of the UTC date from the given date\n * e.g. date: Thur Sept 01 2022 00:00:00 GMT-0600 (Central Standard Time) => Aug 31st in UTC\n * return: Wed Aug 31 2022 23:59:59 UTC\n */\nexport function getUTCEndOfMonth(date: Date): Date {\n return normalizeDateFunc(date, endOfMonth);\n}\n\n/**\n * @param {Date} endDate - a given date\n * @param {Date} startDate - a givend date, either on the same day as endDate, or in the past.\n * @returns {number} Returns the number of days in between the startDate and endDate.\n */\nexport function differenceInDays(endDate: Date, startDate: Date): number {\n return differenceInCalendarDays(endDate, startDate);\n}\n\n/**\n * @param {Date} endDate - a given date\n * @param {Date} startDate - a givend date, either on the same day as endDate, or in the past.\n * @returns {number} Returns the number of months in between the startDate and endDate.\n */\nexport function differenceInMonths(endDate: Date, startDate: Date): number {\n return diffInMonths(endDate, startDate);\n}\n\n/**\n * @param {Date} dateOne - a date object you want to compare from\n * @param {Date} dateTwo - a date object you want to compare against\n * @returns {boolean} Returns true if dateOne and dateTwo are dates with the same day\n */\nexport function isSameDay(dateOne: Date, dateTwo: Date): boolean {\n return sameDay(dateOne, dateTwo);\n}\n\n/**\n * @param {Date} dateOne - a date object you want to compare with\n * @param {Date} dateTwo - a date object you want to compare against\n * @returns {boolean} Returns true if dateOne is before dateTwo\n */\nexport function isBefore(dateOne: Date, dateTwo: Date): boolean {\n return before(dateOne, dateTwo);\n}\n\n/**\n * @param {Date} date - a given date\n * @param {Date} comparisonDate - a given date as the base for the relative comparison\n * @returns {string} Returns a localized string representation of the given date relative to the given base date\n */\nexport function formatTimeBetween(\n date: Date,\n comparisonDate: Date,\n includeSeconds = false,\n addSuffix = false,\n locale?: Locale,\n): string {\n if (!locale) {\n locale = getLocale();\n }\n return formatDistance(date, comparisonDate, { includeSeconds, addSuffix, locale });\n}\n\n/**\n * @param {Date} date - a given date\n * @returns {string} Returns a localized string representation of the given date relative to now (ex: \"3 days ago\")\n */\nexport function fromNow(date: Date, locale?: Locale): string {\n return formatTimeBetween(date, new Date(), false, true, locale);\n}\n\n/**\n * In North America, weeks start on Sundays, but other locales start the week on Monday or Saturday.\n * This function returns the days of the week in order for a locale.\n * @returns {string[]} week in localized order (indexed to north american week order)\n */\nexport function localizedWeekOrder(locale?: Locale): number[] {\n if (!locale) {\n locale = getLocale();\n }\n const weekStart = localizedWeekStart(locale);\n return [0, 1, 2, 3, 4, 5, 6].map((index) => {\n switch (weekStart) {\n case 'sat':\n return (index + 6) % 7;\n case 'sun':\n return index;\n case 'mon':\n return (index + 1) % 7;\n default:\n return index;\n }\n });\n}\n\n/**\n * In North America, weeks start on Sundays, but other locales start the week on Monday or Saturday.\n * This function maps a given index to the day of the week at the current locale.\n * Ex. The 0th weekday in Canada is Sunday (0 -> 0), the 0th weekday in Germany is Monday (0 -> 1)\n * @param {number} index - the requested index\n * @returns {number} day of the week for a weekday (indexed to north american week order)\n */\nexport function localizedWeekday(index: number, locale?: Locale): number {\n if (!locale) {\n locale = getLocale();\n }\n const weekStart = localizedWeekStart(locale);\n switch (weekStart) {\n case 'sat':\n return (index + 6) % 7;\n case 'sun':\n default:\n return index;\n case 'mon':\n return (index + 1) % 7;\n }\n}\n\n/**\n * In North America, weeks start on Sundays, but other locales start the week on Monday or Saturday.\n * This function compares the locale against known values for the first day of the week.\n * @returns {string} first three letters of a day of the week\n */\nexport function localizedWeekStart(locale?: Locale): string {\n if (!locale) {\n locale = getLocale();\n }\n const parts = locale.code?.match(\n /^([a-z]{2,3})(?:-([a-z]{3})(?=$|-))?(?:-([a-z]{4})(?=$|-))?(?:-([a-z]{2}|\\d{3})(?=$|-))?/i,\n );\n if (!parts) return 'sun';\n const [region, language] = [parts[4], parts[1]];\n\n const regionSat = 'AEAFBHDJDZEGIQIRJOKWLYOMQASDSY'.match(/../g);\n const regionSun =\n 'AGARASAUBDBRBSBTBWBZCACNCODMDOETGTGUHKHNIDILINJMJPKEKHKRLAMHMMMOMTMXMZNINPPAPEPHPKPRPTPYSASGSVTHTTTWUMUSVEVIWSYEZAZW'.match(\n /../g,\n );\n const languageSat = ['ar', 'arq', 'arz', 'fa'];\n const languageSun = 'amasbndzengnguhehiidjajvkmknkolomhmlmrmtmyneomorpapssdsmsnsutatethtnurzhzu'.match(/../g);\n\n return region\n ? regionSun?.includes(region)\n ? 'sun'\n : regionSat?.includes(region)\n ? 'sat'\n : 'mon'\n : languageSun?.includes(language)\n ? 'sun'\n : languageSat.includes(language)\n ? 'sat'\n : 'mon';\n}\n","export { DateRange, DateDuration, DateFormat } from './src/interface';\nexport * from './src/date-utils';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Locale } from 'date-fns';\nimport { formatDate, DateFormat } from '@vendasta/galaxy/utility/date-utils';\n\n@Pipe({\n name: 'glxyDate',\n standalone: false,\n})\nexport class GalaxyDatePipe implements PipeTransform {\n transform(value: string | number | Date, dateFormat?: DateFormat, locale?: Locale): any {\n try {\n const date = new Date(value);\n return formatDate(date, dateFormat, locale);\n } catch (err) {\n return 'Not a valid date';\n }\n }\n}\n","/**\n * @param {string | number} value the value to get the ordinal suffix (e.g. st, nd, rd, th, etc.) for\n * @returns {string} the ordinal suffix\n */\nexport function ordinal(value: string | number): string {\n const num = Number(value);\n if (isNaN(num)) return '';\n\n if (num > 3 && num < 21) return 'th';\n\n const lastDigit = num % 10;\n return lastDigit === 1 ? 'st' : lastDigit === 2 ? 'nd' : lastDigit === 3 ? 'rd' : 'th';\n}\n","export * from './src/ordinal-utils';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ordinal } from '@vendasta/galaxy/utility/ordinal-utils';\n\n@Pipe({\n name: 'glxyOrdinal',\n standalone: false,\n})\nexport class GalaxyOrdinalPipe implements PipeTransform {\n transform(value: string | number, excludeValueInResponse?: boolean): string {\n return excludeValueInResponse ? ordinal(value) : `${value}${ordinal(value)}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n// if we want to bypass sanitizer for more data types\n// https://medium.com/@swarnakishore/angular-safe-pipe-implementation-to-bypass-domsanitizer-stripping-out-content-c1bf0f1cc36b\n\n/**\n * A pipe to bypass Angular's dom sanitizer. Use when the html you wish to inject is safe, or will be used in a secure manner\n */\n@Pipe({\n name: 'iTrustThisHtml',\n standalone: false,\n})\nexport class GalaxyITrustThisHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(html: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","// Important: this file is generated from the 'build' script and should not be\n// edited directly\nexport var version = '4.0.0';\n","/**\n * Simpler helper method to check for undefined simply for the benefit of\n * gaining better compression when minified by not needing to have multiple\n * comparisons to the `undefined` keyword in the codebase.\n */\nexport function isUndefined(value) {\n return value === undefined;\n}\n/**\n * Simpler helper method to check for a boolean type simply for the benefit of\n * gaining better compression when minified by not needing to have multiple\n * `typeof` comparisons in the codebase.\n */\nexport function isBoolean(value) {\n return typeof value === 'boolean';\n}\n/**\n * Assigns (shallow copies) the properties of `src` onto `dest`, if the\n * corresponding property on `dest` === `undefined`.\n *\n * @param {Object} dest The destination object.\n * @param {Object} src The source object.\n * @return {Object} The destination object (`dest`)\n */\nexport function defaults(dest, src) {\n for (var prop in src) {\n if (src.hasOwnProperty(prop) && isUndefined(dest[prop])) {\n dest[prop] = src[prop];\n }\n }\n return dest;\n}\n/**\n * Truncates the `str` at `len - ellipsisChars.length`, and adds the `ellipsisChars` to the\n * end of the string (by default, two periods: '..'). If the `str` length does not exceed\n * `len`, the string will be returned unchanged.\n *\n * @param {String} str The string to truncate and add an ellipsis to.\n * @param {Number} truncateLen The length to truncate the string at.\n * @param {String} [ellipsisChars=...] The ellipsis character(s) to add to the end of `str`\n * when truncated. Defaults to '...'\n */\nexport function ellipsis(str, truncateLen, ellipsisChars) {\n var ellipsisLength;\n if (str.length > truncateLen) {\n if (ellipsisChars == null) {\n ellipsisChars = '…';\n ellipsisLength = 3;\n } else {\n ellipsisLength = ellipsisChars.length;\n }\n str = str.substring(0, truncateLen - ellipsisLength) + ellipsisChars;\n }\n return str;\n}\n/**\n * Removes array elements by value. Mutates the input array.\n *\n * Using this instead of the ES5 Array.prototype.filter() function to prevent\n * creating many new arrays in memory for removing an element.\n *\n * @param arr The array to remove elements from. This array is mutated.\n * @param fn The element to remove.\n */\nexport function remove(arr, item) {\n for (var i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n }\n }\n}\n/**\n * Removes array elements based on a filtering function. Mutates the input\n * array.\n *\n * Using this instead of the ES5 Array.prototype.filter() function to prevent\n * creating many new arrays in memory for filtering.\n *\n * @param arr The array to remove elements from. This array is mutated.\n * @param fn The predicate function which should return `true` to remove an\n * element.\n */\nexport function removeWithPredicate(arr, fn) {\n for (var i = arr.length - 1; i >= 0; i--) {\n if (fn(arr[i]) === true) {\n arr.splice(i, 1);\n }\n }\n}\n/**\n * Function that should never be called but is used to check that every\n * enum value is handled using TypeScript's 'never' type.\n */\nexport function assertNever(theValue) {\n throw new Error(\"Unhandled case for value: '\".concat(theValue, \"'\"));\n}\n","/*\n * This file builds and stores a library of the common regular expressions used\n * by the Autolinker utility.\n *\n * Other regular expressions may exist ad-hoc, but these are generally the\n * regular expressions that are shared between source files.\n */\n/**\n * Regular expression to match upper and lowercase ASCII letters\n */\nexport var letterRe = /[A-Za-z]/;\n/**\n * Regular expression to match ASCII digits\n */\nexport var digitRe = /[\\d]/;\n/**\n * Regular expression to match everything *except* ASCII digits\n */\nexport var nonDigitRe = /[\\D]/;\n/**\n * Regular expression to match whitespace\n */\nexport var whitespaceRe = /\\s/;\n/**\n * Regular expression to match quote characters\n */\nexport var quoteRe = /['\"]/;\n/**\n * Regular expression to match the range of ASCII control characters (0-31), and\n * the backspace char (127)\n */\nexport var controlCharsRe = /[\\x00-\\x1F\\x7F]/;\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars in the unicode character set when placed in a\n * RegExp character class (`[]`). This includes all international alphabetic\n * characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}`\n * escape (\"all letters\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'\n * regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n * Expression literal rather than a string literal to prevent UglifyJS from\n * compressing the unicode escape sequences into their actual unicode\n * characters. If Uglify compresses these into the unicode characters\n * themselves, this results in the error \"Range out of order in character\n * class\" when these characters are used inside of a Regular Expression\n * character class (`[]`). See usages of this const. Alternatively, we can set\n * the UglifyJS option `ascii_only` to true for the build, but that doesn't\n * help others who are pulling in Autolinker into their own build and running\n * UglifyJS themselves.\n */\n// prettier-ignore\nexport var alphaCharsStr = /A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/.source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all emoji characters\n * Based on the emoji regex defined in this article: https://thekevinscott.com/emojis-in-javascript/\n */\nexport var emojiStr = /\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/.source;\n/**\n * The string form of a regular expression that would match all of the\n * combining mark characters in the unicode character set when placed in a\n * RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{M}`\n * escape (\"all marks\").\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'\n * regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n * Expression literal rather than a string literal to prevent UglifyJS from\n * compressing the unicode escape sequences into their actual unicode\n * characters. If Uglify compresses these into the unicode characters\n * themselves, this results in the error \"Range out of order in character\n * class\" when these characters are used inside of a Regular Expression\n * character class (`[]`). See usages of this const. Alternatively, we can set\n * the UglifyJS option `ascii_only` to true for the build, but that doesn't\n * help others who are pulling in Autolinker into their own build and running\n * UglifyJS themselves.\n */\n// prettier-ignore\nexport var marksStr = /\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/.source; // see note in above variable description\n/**\n * The string form of a regular expression that would match all of the\n * alphabetic (\"letter\") chars, emoji, and combining marks in the unicode character set\n * when placed in a RegExp character class (`[]`). This includes all\n * international alphabetic characters.\n *\n * These would be the characters matched by unicode regex engines `\\p{L}\\p{M}`\n * escapes and emoji characters.\n */\nexport var alphaCharsAndMarksStr = alphaCharsStr + emojiStr + marksStr;\n/**\n * The string form of a regular expression that would match all of the\n * decimal number chars in the unicode character set when placed in a RegExp\n * character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines `\\p{Nd}`\n * escape (\"all decimal numbers\")\n *\n * Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)\n * Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'\n * regex's bmp\n *\n * VERY IMPORTANT: This set of characters is defined inside of a Regular\n * Expression literal rather than a string literal to prevent UglifyJS from\n * compressing the unicode escape sequences into their actual unicode\n * characters. If Uglify compresses these into the unicode characters\n * themselves, this results in the error \"Range out of order in character\n * class\" when these characters are used inside of a Regular Expression\n * character class (`[]`). See usages of this const. Alternatively, we can set\n * the UglifyJS option `ascii_only` to true for the build, but that doesn't\n * help others who are pulling in Autolinker into their own build and running\n * UglifyJS themselves.\n */\n// prettier-ignore\nexport var decimalNumbersStr = /0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/.source; // see note in above variable description\n/**\n * The regular expression that will match all of the letters and decimal number\n * chars in the unicode character set when placed in a RegExp character class\n * (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{Nd}]` escape (\"all letters and decimal numbers\")\n */\nexport var alphaNumericCharsRe = new RegExp(\"[\".concat(alphaCharsStr + decimalNumbersStr, \"]\"));\n/**\n * The string form of a regular expression that would match all of the\n * letters, combining marks, and decimal number chars in the unicode character\n * set when placed in a RegExp character class (`[]`).\n *\n * These would be the characters matched by unicode regex engines\n * `[\\p{L}\\p{M}\\p{Nd}]` escape (\"all letters, combining marks, and decimal\n * numbers\")\n */\nexport var alphaNumericAndMarksCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\n/**\n * The regular expression that will match a single letter of the\n * {@link #alphaNumericAndMarksCharsStr}.\n */\nexport var alphaNumericAndMarksRe = new RegExp(\"[\".concat(alphaNumericAndMarksCharsStr, \"]\"));\n","import { whitespaceRe } from './regex-lib';\n/**\n * @class Autolinker.HtmlTag\n * @extends Object\n *\n * Represents an HTML tag, which can be used to easily build/modify HTML tags programmatically.\n *\n * Autolinker uses this abstraction to create HTML tags, and then write them out as strings. You may also use\n * this class in your code, especially within a {@link Autolinker#replaceFn replaceFn}.\n *\n * ## Examples\n *\n * Example instantiation:\n *\n * var tag = new Autolinker.HtmlTag( {\n * tagName : 'a',\n * attrs : { 'href': 'http://google.com', 'class': 'external-link' },\n * innerHtml : 'Google'\n * } );\n *\n * tag.toAnchorString(); // <a href=\"http://google.com\" class=\"external-link\">Google</a>\n *\n * // Individual accessor methods\n * tag.getTagName(); // 'a'\n * tag.getAttr( 'href' ); // 'http://google.com'\n * tag.hasClass( 'external-link' ); // true\n *\n *\n * Using mutator methods (which may be used in combination with instantiation config properties):\n *\n * var tag = new Autolinker.HtmlTag();\n * tag.setTagName( 'a' );\n * tag.setAttr( 'href', 'http://google.com' );\n * tag.addClass( 'external-link' );\n * tag.setInnerHtml( 'Google' );\n *\n * tag.getTagName(); // 'a'\n * tag.getAttr( 'href' ); // 'http://google.com'\n * tag.hasClass( 'external-link' ); // true\n *\n * tag.toAnchorString(); // <a href=\"http://google.com\" class=\"external-link\">Google</a>\n *\n *\n * ## Example use within a {@link Autolinker#replaceFn replaceFn}\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance, configured with the Match's href and anchor text\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n *\n *\n * ## Example use with a new tag for the replacement\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = new Autolinker.HtmlTag( {\n * tagName : 'button',\n * attrs : { 'title': 'Load URL: ' + match.getAnchorHref() },\n * innerHtml : 'Load URL: ' + match.getAnchorText()\n * } );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test <button title=\"Load URL: http://google.com\">Load URL: google.com</button>\n */\nvar HtmlTag = /** @class */function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration properties for this class, in an Object (map)\n */\n function HtmlTag(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n /**\n * @cfg {String} tagName\n *\n * The tag name. Ex: 'a', 'button', etc.\n *\n * Not required at instantiation time, but should be set using {@link #setTagName} before {@link #toAnchorString}\n * is executed.\n */\n this.tagName = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object.<String, String>} attrs\n *\n * An key/value Object (map) of attributes to create the tag with. The keys are the attribute names, and the\n * values are the attribute values.\n */\n this.attrs = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} innerHTML\n *\n * The inner HTML for the tag.\n */\n this.innerHTML = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.tagName = cfg.tagName || '';\n this.attrs = cfg.attrs || {};\n this.innerHTML = cfg.innerHtml || cfg.innerHTML || ''; // accept either the camelCased form or the fully capitalized acronym as in the DOM\n }\n /**\n * Sets the tag name that will be used to generate the tag with.\n *\n * @param {String} tagName\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setTagName = function (tagName) {\n this.tagName = tagName;\n return this;\n };\n /**\n * Retrieves the tag name.\n *\n * @return {String}\n */\n HtmlTag.prototype.getTagName = function () {\n return this.tagName || '';\n };\n /**\n * Sets an attribute on the HtmlTag.\n *\n * @param {String} attrName The attribute name to set.\n * @param {String} attrValue The attribute value to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setAttr = function (attrName, attrValue) {\n var tagAttrs = this.getAttrs();\n tagAttrs[attrName] = attrValue;\n return this;\n };\n /**\n * Retrieves an attribute from the HtmlTag. If the attribute does not exist, returns `undefined`.\n *\n * @param {String} attrName The attribute name to retrieve.\n * @return {String} The attribute's value, or `undefined` if it does not exist on the HtmlTag.\n */\n HtmlTag.prototype.getAttr = function (attrName) {\n return this.getAttrs()[attrName];\n };\n /**\n * Sets one or more attributes on the HtmlTag.\n *\n * @param {Object.<String, String>} attrs A key/value Object (map) of the attributes to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setAttrs = function (attrs) {\n Object.assign(this.getAttrs(), attrs);\n return this;\n };\n /**\n * Retrieves the attributes Object (map) for the HtmlTag.\n *\n * @return {Object.<String, String>} A key/value object of the attributes for the HtmlTag.\n */\n HtmlTag.prototype.getAttrs = function () {\n return this.attrs || (this.attrs = {});\n };\n /**\n * Sets the provided `cssClass`, overwriting any current CSS classes on the HtmlTag.\n *\n * @param {String} cssClass One or more space-separated CSS classes to set (overwrite).\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setClass = function (cssClass) {\n return this.setAttr('class', cssClass);\n };\n /**\n * Convenience method to add one or more CSS classes to the HtmlTag. Will not add duplicate CSS classes.\n *\n * @param {String} cssClass One or more space-separated CSS classes to add.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.addClass = function (cssClass) {\n var classAttr = this.getClass(),\n classes = !classAttr ? [] : classAttr.split(whitespaceRe),\n newClasses = cssClass.split(whitespaceRe),\n newClass;\n while (newClass = newClasses.shift()) {\n if (classes.indexOf(newClass) === -1) {\n classes.push(newClass);\n }\n }\n this.getAttrs()['class'] = classes.join(' ');\n return this;\n };\n /**\n * Convenience method to remove one or more CSS classes from the HtmlTag.\n *\n * @param {String} cssClass One or more space-separated CSS classes to remove.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.removeClass = function (cssClass) {\n var classAttr = this.getClass(),\n classes = !classAttr ? [] : classAttr.split(whitespaceRe),\n removeClasses = cssClass.split(whitespaceRe),\n removeClass;\n while (classes.length && (removeClass = removeClasses.shift())) {\n var idx = classes.indexOf(removeClass);\n if (idx !== -1) {\n classes.splice(idx, 1);\n }\n }\n this.getAttrs()['class'] = classes.join(' ');\n return this;\n };\n /**\n * Convenience method to retrieve the CSS class(es) for the HtmlTag, which will each be separated by spaces when\n * there are multiple.\n *\n * @return {String}\n */\n HtmlTag.prototype.getClass = function () {\n return this.getAttrs()['class'] || '';\n };\n /**\n * Convenience method to check if the tag has a CSS class or not.\n *\n * @param {String} cssClass The CSS class to check for.\n * @return {Boolean} `true` if the HtmlTag has the CSS class, `false` otherwise.\n */\n HtmlTag.prototype.hasClass = function (cssClass) {\n return (' ' + this.getClass() + ' ').indexOf(' ' + cssClass + ' ') !== -1;\n };\n /**\n * Sets the inner HTML for the tag.\n *\n * @param {String} html The inner HTML to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setInnerHTML = function (html) {\n this.innerHTML = html;\n return this;\n };\n /**\n * Backwards compatibility method name.\n *\n * @param {String} html The inner HTML to set.\n * @return {Autolinker.HtmlTag} This HtmlTag instance, so that method calls may be chained.\n */\n HtmlTag.prototype.setInnerHtml = function (html) {\n return this.setInnerHTML(html);\n };\n /**\n * Retrieves the inner HTML for the tag.\n *\n * @return {String}\n */\n HtmlTag.prototype.getInnerHTML = function () {\n return this.innerHTML || '';\n };\n /**\n * Backward compatibility method name.\n *\n * @return {String}\n */\n HtmlTag.prototype.getInnerHtml = function () {\n return this.getInnerHTML();\n };\n /**\n * Generates the HTML string for the tag.\n *\n * @return {String}\n */\n HtmlTag.prototype.toAnchorString = function () {\n var tagName = this.getTagName(),\n attrsStr = this.buildAttrsStr();\n attrsStr = attrsStr ? ' ' + attrsStr : ''; // prepend a space if there are actually attributes\n return ['<', tagName, attrsStr, '>', this.getInnerHtml(), '</', tagName, '>'].join('');\n };\n /**\n * Support method for {@link #toAnchorString}, returns the string space-separated key=\"value\" pairs, used to populate\n * the stringified HtmlTag.\n *\n * @protected\n * @return {String} Example return: `attr1=\"value1\" attr2=\"value2\"`\n */\n HtmlTag.prototype.buildAttrsStr = function () {\n if (!this.attrs) return ''; // no `attrs` Object (map) has been set, return empty string\n var attrs = this.getAttrs(),\n attrsArr = [];\n for (var prop in attrs) {\n if (attrs.hasOwnProperty(prop)) {\n attrsArr.push(prop + '=\"' + attrs[prop] + '\"');\n }\n }\n return attrsArr.join(' ');\n };\n return HtmlTag;\n}();\nexport { HtmlTag };\n","/**\n * Date: 2015-10-05\n * Author: Kasper Søfren <soefritz@gmail.com> (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed at a section within\n * the URL making it still somewhat human readable.\n *\n * @param {String} url\t\t\t\t\t\t A URL.\n * @param {Number} truncateLen\t\t The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars\t The characters to place within the url, e.g. \"...\".\n * @return {String} The truncated URL.\n */\nexport function truncateSmart(url, truncateLen, ellipsisChars) {\n var ellipsisLengthBeforeParsing;\n var ellipsisLength;\n if (ellipsisChars == null) {\n ellipsisChars = '…';\n ellipsisLength = 3;\n ellipsisLengthBeforeParsing = 8;\n } else {\n ellipsisLength = ellipsisChars.length;\n ellipsisLengthBeforeParsing = ellipsisChars.length;\n }\n var parse_url = function (url) {\n // Functionality inspired by PHP function of same name\n var urlObj = {};\n var urlSub = url;\n var match = urlSub.match(/^([a-z]+):\\/\\//i);\n if (match) {\n urlObj.scheme = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^(.*?)(?=(\\?|#|\\/|$))/i);\n if (match) {\n urlObj.host = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^\\/(.*?)(?=(\\?|#|$))/i);\n if (match) {\n urlObj.path = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^\\?(.*?)(?=(#|$))/i);\n if (match) {\n urlObj.query = match[1];\n urlSub = urlSub.substr(match[0].length);\n }\n match = urlSub.match(/^#(.*?)$/i);\n if (match) {\n urlObj.fragment = match[1];\n //urlSub = urlSub.substr(match[0].length); -- not used. Uncomment if adding another block.\n }\n return urlObj;\n };\n var buildUrl = function (urlObj) {\n var url = '';\n if (urlObj.scheme && urlObj.host) {\n url += urlObj.scheme + '://';\n }\n if (urlObj.host) {\n url += urlObj.host;\n }\n if (urlObj.path) {\n url += '/' + urlObj.path;\n }\n if (urlObj.query) {\n url += '?' + urlObj.query;\n }\n if (urlObj.fragment) {\n url += '#' + urlObj.fragment;\n }\n return url;\n };\n var buildSegment = function (segment, remainingAvailableLength) {\n var remainingAvailableLengthHalf = remainingAvailableLength / 2,\n startOffset = Math.ceil(remainingAvailableLengthHalf),\n endOffset = -1 * Math.floor(remainingAvailableLengthHalf),\n end = '';\n if (endOffset < 0) {\n end = segment.substr(endOffset);\n }\n return segment.substr(0, startOffset) + ellipsisChars + end;\n };\n if (url.length <= truncateLen) {\n return url;\n }\n var availableLength = truncateLen - ellipsisLength;\n var urlObj = parse_url(url);\n // Clean up the URL\n if (urlObj.query) {\n var matchQuery = urlObj.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);\n if (matchQuery) {\n // Malformed URL; two or more \"?\". Removed any content behind the 2nd.\n urlObj.query = urlObj.query.substr(0, matchQuery[1].length);\n url = buildUrl(urlObj);\n }\n }\n if (url.length <= truncateLen) {\n return url;\n }\n if (urlObj.host) {\n urlObj.host = urlObj.host.replace(/^www\\./, '');\n url = buildUrl(urlObj);\n }\n if (url.length <= truncateLen) {\n return url;\n }\n // Process and build the URL\n var str = '';\n if (urlObj.host) {\n str += urlObj.host;\n }\n if (str.length >= availableLength) {\n if (urlObj.host.length == truncateLen) {\n return (urlObj.host.substr(0, truncateLen - ellipsisLength) + ellipsisChars).substr(0, availableLength + ellipsisLengthBeforeParsing);\n }\n return buildSegment(str, availableLength).substr(0, availableLength + ellipsisLengthBeforeParsing);\n }\n var pathAndQuery = '';\n if (urlObj.path) {\n pathAndQuery += '/' + urlObj.path;\n }\n if (urlObj.query) {\n pathAndQuery += '?' + urlObj.query;\n }\n if (pathAndQuery) {\n if ((str + pathAndQuery).length >= availableLength) {\n if ((str + pathAndQuery).length == truncateLen) {\n return (str + pathAndQuery).substr(0, truncateLen);\n }\n var remainingAvailableLength = availableLength - str.length;\n return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n } else {\n str += pathAndQuery;\n }\n }\n if (urlObj.fragment) {\n var fragment = '#' + urlObj.fragment;\n if ((str + fragment).length >= availableLength) {\n if ((str + fragment).length == truncateLen) {\n return (str + fragment).substr(0, truncateLen);\n }\n var remainingAvailableLength2 = availableLength - str.length;\n return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n } else {\n str += fragment;\n }\n }\n if (urlObj.scheme && urlObj.host) {\n var scheme = urlObj.scheme + '://';\n if ((str + scheme).length < availableLength) {\n return (scheme + str).substr(0, truncateLen);\n }\n }\n if (str.length <= truncateLen) {\n return str;\n }\n var end = '';\n if (availableLength > 0) {\n end = str.substr(-1 * Math.floor(availableLength / 2));\n }\n return (str.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n","/**\n * Date: 2015-10-05\n * Author: Kasper Søfren <soefritz@gmail.com> (https://github.com/kafoso)\n *\n * A truncation feature, where the ellipsis will be placed in the dead-center of the URL.\n *\n * @param {String} url A URL.\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateMiddle(url, truncateLen, ellipsisChars) {\n if (url.length <= truncateLen) {\n return url;\n }\n var ellipsisLengthBeforeParsing;\n var ellipsisLength;\n if (ellipsisChars == null) {\n ellipsisChars = '…';\n ellipsisLengthBeforeParsing = 8;\n ellipsisLength = 3;\n } else {\n ellipsisLengthBeforeParsing = ellipsisChars.length;\n ellipsisLength = ellipsisChars.length;\n }\n var availableLength = truncateLen - ellipsisLength;\n var end = '';\n if (availableLength > 0) {\n end = url.substr(-1 * Math.floor(availableLength / 2));\n }\n return (url.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\n","import { ellipsis } from '../utils';\n/**\n * A truncation feature where the ellipsis will be placed at the end of the URL.\n *\n * @param {String} anchorText\n * @param {Number} truncateLen The maximum length of the truncated output URL string.\n * @param {String} ellipsisChars The characters to place within the url, e.g. \"..\".\n * @return {String} The truncated URL.\n */\nexport function truncateEnd(anchorText, truncateLen, ellipsisChars) {\n return ellipsis(anchorText, truncateLen, ellipsisChars);\n}\n","import { HtmlTag } from './html-tag';\nimport { truncateSmart } from './truncate/truncate-smart';\nimport { truncateMiddle } from './truncate/truncate-middle';\nimport { truncateEnd } from './truncate/truncate-end';\n/**\n * @protected\n * @class Autolinker.AnchorTagBuilder\n * @extends Object\n *\n * Builds anchor (<a>) tags for the Autolinker utility when a match is\n * found.\n *\n * Normally this class is instantiated, configured, and used internally by an\n * {@link Autolinker} instance, but may actually be used indirectly in a\n * {@link Autolinker#replaceFn replaceFn} to create {@link Autolinker.HtmlTag HtmlTag}\n * instances which may be modified before returning from the\n * {@link Autolinker#replaceFn replaceFn}. For example:\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n */\nvar AnchorTagBuilder = /** @class */function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration options for the AnchorTagBuilder instance, specified in an Object (map).\n */\n function AnchorTagBuilder(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n /**\n * @cfg {Boolean} newWindow\n * @inheritdoc Autolinker#newWindow\n */\n this.newWindow = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} truncate\n * @inheritdoc Autolinker#truncate\n */\n this.truncate = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} className\n * @inheritdoc Autolinker#className\n */\n this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.newWindow = cfg.newWindow || false;\n this.truncate = cfg.truncate || {};\n this.className = cfg.className || '';\n }\n /**\n * Generates the actual anchor (<a>) tag to use in place of the\n * matched text, via its `match` object.\n *\n * @param match The Match instance to generate an anchor tag from.\n * @return The HtmlTag instance for the anchor tag.\n */\n AnchorTagBuilder.prototype.build = function (match) {\n return new HtmlTag({\n tagName: 'a',\n attrs: this.createAttrs(match),\n innerHtml: this.processAnchorText(match.getAnchorText())\n });\n };\n /**\n * Creates the Object (map) of the HTML attributes for the anchor (<a>)\n * tag being generated.\n *\n * @protected\n * @param match The Match instance to generate an anchor tag from.\n * @return A key/value Object (map) of the anchor tag's attributes.\n */\n AnchorTagBuilder.prototype.createAttrs = function (match) {\n var attrs = {\n href: match.getAnchorHref() // we'll always have the `href` attribute\n };\n var cssClass = this.createCssClass(match);\n if (cssClass) {\n attrs['class'] = cssClass;\n }\n if (this.newWindow) {\n attrs['target'] = '_blank';\n attrs['rel'] = 'noopener noreferrer'; // Issue #149. See https://mathiasbynens.github.io/rel-noopener/\n }\n if (this.truncate) {\n if (this.truncate.length && this.truncate.length < match.getAnchorText().length) {\n attrs['title'] = match.getAnchorHref();\n }\n }\n return attrs;\n };\n /**\n * Creates the CSS class that will be used for a given anchor tag, based on\n * the `matchType` and the {@link #className} config.\n *\n * Example returns:\n *\n * - \"\" // no {@link #className}\n * - \"myLink myLink-url\" // url match\n * - \"myLink myLink-email\" // email match\n * - \"myLink myLink-phone\" // phone match\n * - \"myLink myLink-hashtag\" // hashtag match\n * - \"myLink myLink-mention myLink-twitter\" // mention match with Twitter service\n *\n * @protected\n * @param match The Match instance to generate an\n * anchor tag from.\n * @return The CSS class string for the link. Example return:\n * \"myLink myLink-url\". If no {@link #className} was configured, returns\n * an empty string.\n */\n AnchorTagBuilder.prototype.createCssClass = function (match) {\n var className = this.className;\n if (!className) {\n return '';\n } else {\n var returnClasses = [className],\n cssClassSuffixes = match.getCssClassSuffixes();\n for (var i = 0, len = cssClassSuffixes.length; i < len; i++) {\n returnClasses.push(className + '-' + cssClassSuffixes[i]);\n }\n return returnClasses.join(' ');\n }\n };\n /**\n * Processes the `anchorText` by truncating the text according to the\n * {@link #truncate} config.\n *\n * @private\n * @param anchorText The anchor tag's text (i.e. what will be\n * displayed).\n * @return The processed `anchorText`.\n */\n AnchorTagBuilder.prototype.processAnchorText = function (anchorText) {\n anchorText = this.doTruncate(anchorText);\n return anchorText;\n };\n /**\n * Performs the truncation of the `anchorText` based on the {@link #truncate}\n * option. If the `anchorText` is longer than the length specified by the\n * {@link #truncate} option, the truncation is performed based on the\n * `location` property. See {@link #truncate} for details.\n *\n * @private\n * @param anchorText The anchor tag's text (i.e. what will be\n * displayed).\n * @return The truncated anchor text.\n */\n AnchorTagBuilder.prototype.doTruncate = function (anchorText) {\n var truncate = this.truncate;\n if (!truncate || !truncate.length) return anchorText;\n var truncateLength = truncate.length,\n truncateLocation = truncate.location;\n if (truncateLocation === 'smart') {\n return truncateSmart(anchorText, truncateLength);\n } else if (truncateLocation === 'middle') {\n return truncateMiddle(anchorText, truncateLength);\n } else {\n return truncateEnd(anchorText, truncateLength);\n }\n };\n return AnchorTagBuilder;\n}();\nexport { AnchorTagBuilder };\n","/**\n * @abstract\n * @class Autolinker.match.AbstractMatch\n *\n * Represents a match found in an input string which should be Autolinked. A Match object is what is provided in a\n * {@link Autolinker#replaceFn replaceFn}, and may be used to query for details about the match.\n *\n * For example:\n *\n * var input = \"...\"; // string with URLs, Email Addresses, and Mentions (Twitter, Instagram, Soundcloud)\n *\n * var linkedText = Autolinker.link( input, {\n * replaceFn : function( match ) {\n * console.log( \"href = \", match.getAnchorHref() );\n * console.log( \"text = \", match.getAnchorText() );\n *\n * switch( match.getType() ) {\n * case 'url' :\n * console.log( \"url: \", match.getUrl() );\n *\n * case 'email' :\n * console.log( \"email: \", match.getEmail() );\n *\n * case 'mention' :\n * console.log( \"mention: \", match.getMention() );\n * }\n * }\n * } );\n *\n * See the {@link Autolinker} class for more details on using the {@link Autolinker#replaceFn replaceFn}.\n */\nvar AbstractMatch = /** @class */function () {\n /**\n * @member Autolinker.match.Match\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function AbstractMatch(cfg) {\n /**\n * @cfg {Autolinker.AnchorTagBuilder} tagBuilder (required)\n *\n * Reference to the AnchorTagBuilder instance to use to generate an anchor\n * tag for the Match.\n */\n // @ts-ignore\n this._ = null; // property used just to get the above doc comment into the ES5 output and documentation generator\n /**\n * @cfg {String} matchedText (required)\n *\n * The original text that was matched by the {@link Autolinker.matcher.Matcher}.\n */\n this.matchedText = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Number} offset (required)\n *\n * The offset of where the match was made in the input string.\n */\n this.offset = 0; // default value just to get the above doc comment in the ES5 output and documentation generator\n this.tagBuilder = cfg.tagBuilder;\n this.matchedText = cfg.matchedText;\n this.offset = cfg.offset;\n }\n /**\n * Returns the original text that was matched.\n *\n * @return {String}\n */\n AbstractMatch.prototype.getMatchedText = function () {\n return this.matchedText;\n };\n /**\n * Sets the {@link #offset} of where the match was made in the input string.\n *\n * A {@link Autolinker.matcher.Matcher} will be fed only HTML text nodes,\n * and will therefore set an original offset that is relative to the HTML\n * text node itself. However, we want this offset to be relative to the full\n * HTML input string, and thus if using {@link Autolinker#parse} (rather\n * than calling a {@link Autolinker.matcher.Matcher} directly), then this\n * offset is corrected after the Matcher itself has done its job.\n *\n * @private\n * @param {Number} offset\n */\n AbstractMatch.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Returns the offset of where the match was made in the input string. This\n * is the 0-based index of the match.\n *\n * @return {Number}\n */\n AbstractMatch.prototype.getOffset = function () {\n return this.offset;\n };\n /**\n * Returns the CSS class suffix(es) for this match.\n *\n * A CSS class suffix is appended to the {@link Autolinker#className} in\n * the {@link Autolinker.AnchorTagBuilder} when a match is translated into\n * an anchor tag.\n *\n * For example, if {@link Autolinker#className} was configured as 'myLink',\n * and this method returns `[ 'url' ]`, the final class name of the element\n * will become: 'myLink myLink-url'.\n *\n * The match may provide multiple CSS class suffixes to be appended to the\n * {@link Autolinker#className} in order to facilitate better styling\n * options for different match criteria. See {@link Autolinker.match.Mention}\n * for an example.\n *\n * By default, this method returns a single array with the match's\n * {@link #getType type} name, but may be overridden by subclasses.\n *\n * @return {String[]}\n */\n AbstractMatch.prototype.getCssClassSuffixes = function () {\n return [this.type];\n };\n /**\n * Builds and returns an {@link Autolinker.HtmlTag} instance based on the\n * Match.\n *\n * This can be used to easily generate anchor tags from matches, and either\n * return their HTML string, or modify them before doing so.\n *\n * Example Usage:\n *\n * var tag = match.buildTag();\n * tag.addClass( 'cordova-link' );\n * tag.setAttr( 'target', '_system' );\n *\n * tag.toAnchorString(); // <a href=\"http://google.com\" class=\"cordova-link\" target=\"_system\">Google</a>\n *\n * Example Usage in {@link Autolinker#replaceFn}:\n *\n * var html = Autolinker.link( \"Test google.com\", {\n * replaceFn : function( match ) {\n * var tag = match.buildTag(); // returns an {@link Autolinker.HtmlTag} instance\n * tag.setAttr( 'rel', 'nofollow' );\n *\n * return tag;\n * }\n * } );\n *\n * // generated html:\n * // Test <a href=\"http://google.com\" target=\"_blank\" rel=\"nofollow\">google.com</a>\n */\n AbstractMatch.prototype.buildTag = function () {\n return this.tagBuilder.build(this);\n };\n return AbstractMatch;\n}();\nexport { AbstractMatch };\n","// NOTE: THIS IS A GENERATED FILE\n// To update with the latest TLD list, run `npm run update-tld-regex`\nexport var tldRegexStr = '(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|travelchannel|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|etisalat|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abarth|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|loans|locus|lotte|lotto|macys|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)';\nexport var tldRegex = new RegExp('^' + tldRegexStr + '$');\n","import { alphaNumericAndMarksRe, letterRe, digitRe } from '../regex-lib';\nimport { tldRegex } from './tld-regex';\n/**\n * A regular expression that is simply the character class of the characters\n * that may be used in a domain name, minus the '-' or '.'\n */\nexport var domainNameCharRegex = alphaNumericAndMarksRe;\n/**\n * The set of characters that will start a URL suffix (i.e. the path, query, and\n * hash part of the URL)\n */\nexport var urlSuffixStartCharsRe = /[\\/?#]/;\n/**\n * The set of characters that are allowed in the URL suffix (i.e. the path,\n * query, and hash part of the URL) which may also form the ending character of\n * the URL.\n *\n * The {@link #urlSuffixNotAllowedAsLastCharRe} are additional allowed URL\n * suffix characters, but (generally) should not be the last character of a URL.\n */\nexport var urlSuffixAllowedSpecialCharsRe = /[-+&@#/%=~_()|'$*\\[\\]{}\\u2713]/;\n/**\n * URL suffix characters (i.e. path, query, and has part of the URL) that are\n * not allowed as the *last character* in the URL suffix as they would normally\n * form the end of a sentence.\n *\n * The {@link #urlSuffixAllowedSpecialCharsRe} contains additional allowed URL\n * suffix characters which are allowed as the last character.\n */\nexport var urlSuffixNotAllowedAsLastCharRe = /[?!:,.;^]/;\n/**\n * Regular expression to match an http:// or https:// scheme.\n */\nexport var httpSchemeRe = /https?:\\/\\//i;\n/**\n * Regular expression to match an http:// or https:// scheme as the prefix of\n * a string.\n */\nexport var httpSchemePrefixRe = new RegExp('^' + httpSchemeRe.source, 'i');\nexport var urlSuffixedCharsNotAllowedAtEndRe = new RegExp(urlSuffixNotAllowedAsLastCharRe.source + '$');\n/**\n * A regular expression used to determine the schemes we should not autolink\n */\nexport var invalidSchemeRe = /^(javascript|vbscript):/i;\n// A regular expression used to determine if the URL is a scheme match (such as\n// 'http://google.com', and as opposed to a \"TLD match\"). This regular\n// expression is used to parse out the host along with if the URL has an\n// authority component (i.e. '//')\n//\n// Capturing groups:\n// 1. '//' if the URL has an authority component, empty string otherwise\n// 2. The host (if one exists). Ex: 'google.com'\n//\n// See https://www.rfc-editor.org/rfc/rfc3986#appendix-A for terminology\nexport var schemeUrlRe = /^[A-Za-z][-.+A-Za-z0-9]*:(\\/\\/)?([^:/]*)/;\n// A regular expression used to determine if the URL is a TLD match (such as\n// 'google.com', and as opposed to a \"scheme match\"). This regular\n// expression is used to help parse out the TLD (top-level domain) of the host.\n//\n// See https://www.rfc-editor.org/rfc/rfc3986#appendix-A for terminology\nexport var tldUrlHostRe = /^(?:\\/\\/)?([^/#?:]+)/; // optionally prefixed with protocol-relative '//' chars\n/**\n * Determines if the given character may start a scheme (ex: 'http').\n */\nexport function isSchemeStartChar(char) {\n return letterRe.test(char);\n}\n/**\n * Determines if the given character is a valid character in a scheme (such as\n * 'http' or 'ssh+git'), but only after the start char (which is handled by\n * {@link isSchemeStartChar}.\n */\nexport function isSchemeChar(char) {\n return letterRe.test(char) || digitRe.test(char) || char === '+' || char === '-' || char === '.';\n}\n/**\n * Determines if the character can begin a domain label, which must be an\n * alphanumeric character and not an underscore or dash.\n *\n * A domain label is a segment of a hostname such as subdomain.google.com.\n */\nexport function isDomainLabelStartChar(char) {\n return alphaNumericAndMarksRe.test(char);\n}\n/**\n * Determines if the character is part of a domain label (but not a domain label\n * start character).\n *\n * A domain label is a segment of a hostname such as subdomain.google.com.\n */\nexport function isDomainLabelChar(char) {\n return char === '_' || isDomainLabelStartChar(char);\n}\n/**\n * Determines if the character is a path character (\"pchar\") as defined by\n * https://tools.ietf.org/html/rfc3986#appendix-A\n *\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n *\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n *\n * Note that this implementation doesn't follow the spec exactly, but rather\n * follows URL path characters found out in the wild (spec might be out of date?)\n */\nexport function isPathChar(char) {\n return alphaNumericAndMarksRe.test(char) || urlSuffixAllowedSpecialCharsRe.test(char) || urlSuffixNotAllowedAsLastCharRe.test(char);\n}\n/**\n * Determines if the character given may begin the \"URL Suffix\" section of a\n * URI (i.e. the path, query, or hash section). These are the '/', '?' and '#'\n * characters.\n *\n * See https://tools.ietf.org/html/rfc3986#appendix-A\n */\nexport function isUrlSuffixStartChar(char) {\n return urlSuffixStartCharsRe.test(char);\n}\n/**\n * Determines if the TLD read in the host is a known TLD (Top-Level Domain).\n *\n * Example: 'com' would be a known TLD (for a host of 'google.com'), but\n * 'local' would not (for a domain name of 'my-computer.local').\n */\nexport function isKnownTld(tld) {\n return tldRegex.test(tld.toLowerCase()); // make sure the tld is lowercase for the regex\n}\n/**\n * Determines if the given `url` is a valid scheme-prefixed URL.\n */\nexport function isValidSchemeUrl(url) {\n // If the scheme is 'javascript:' or 'vbscript:', these link\n // types can be dangerous. Don't link them.\n if (invalidSchemeRe.test(url)) {\n return false;\n }\n var schemeMatch = url.match(schemeUrlRe);\n if (!schemeMatch) {\n return false;\n }\n var isAuthorityMatch = !!schemeMatch[1];\n var host = schemeMatch[2];\n if (isAuthorityMatch) {\n // Any match that has an authority ('//' chars) after the scheme is\n // valid, such as 'http://anything'\n return true;\n }\n // If there's no authority ('//' chars), check that we have a hostname\n // that looks valid.\n //\n // The host must contain at least one '.' char and have a domain label\n // with at least one letter to be considered valid.\n //\n // Accept:\n // - git:domain.com (scheme followed by a host\n // Do not accept:\n // - git:something ('something' doesn't look like a host)\n // - version:1.0 ('1.0' doesn't look like a host)\n if (host.indexOf('.') === -1 || !letterRe.test(host)) {\n return false;\n }\n return true;\n}\n/**\n * Determines if the given `url` is a match with a valid TLD.\n */\nexport function isValidTldMatch(url) {\n // TLD URL such as 'google.com', we need to confirm that we have a valid\n // top-level domain\n var tldUrlHostMatch = url.match(tldUrlHostRe);\n if (!tldUrlHostMatch) {\n // At this point, if the URL didn't match our TLD re, it must be invalid\n // (highly unlikely to happen, but just in case)\n return false;\n }\n var host = tldUrlHostMatch[0];\n var hostLabels = host.split('.');\n if (hostLabels.length < 2) {\n // 0 or 1 host label, there's no TLD. Ex: 'localhost'\n return false;\n }\n var tld = hostLabels[hostLabels.length - 1];\n if (!isKnownTld(tld)) {\n return false;\n }\n // TODO: Implement these conditions for TLD matcher:\n // (\n // this.longestDomainLabelLength <= 63 &&\n // this.domainNameLength <= 255\n // );\n return true;\n}\n// Regular expression to confirm a valid IPv4 address (ex: '192.168.0.1')\nvar ipV4Re = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n// Regular expression used to split the IPv4 address itself from any port/path/query/hash\nvar ipV4PartRe = /[:/?#]/;\n/**\n * Determines if the given URL is a valid IPv4-prefixed URL.\n */\nexport function isValidIpV4Address(url) {\n // Grab just the IP address\n var ipV4Part = url.split(ipV4PartRe, 1)[0]; // only 1 result needed\n return ipV4Re.test(ipV4Part);\n}\n","import { __extends } from \"tslib\";\nimport { AbstractMatch } from './abstract-match';\nimport { httpSchemePrefixRe } from '../parser/uri-utils';\n/**\n * A regular expression used to remove the 'www.' from URLs.\n */\nvar wwwPrefixRegex = /^(https?:\\/\\/)?(www\\.)?/i;\n/**\n * The regular expression used to remove the protocol-relative '//' from a URL\n * string, for purposes of formatting the anchor text. A protocol-relative URL\n * is, for example, \"//yahoo.com\"\n */\nvar protocolRelativeRegex = /^\\/\\//;\n/**\n * @class Autolinker.match.Url\n * @extends Autolinker.match.AbstractMatch\n *\n * Represents a Url match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar UrlMatch = /** @class */function (_super) {\n __extends(UrlMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function UrlMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @public\n * @property {'url'} type\n *\n * A string name for the type of match that this class represents. Can be\n * used in a TypeScript discriminating union to type-narrow from the\n * `Match` type.\n */\n _this.type = 'url';\n /**\n * @cfg {String} url (required)\n *\n * The url that was matched.\n */\n _this.url = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {\"scheme\"/\"www\"/\"tld\"} urlMatchType (required)\n *\n * The type of URL match that this class represents. This helps to determine\n * if the match was made in the original text with a prefixed scheme (ex:\n * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or\n * was matched by a known top-level domain (ex: 'google.com').\n */\n _this.urlMatchType = 'scheme'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} protocolRelativeMatch (required)\n *\n * `true` if the URL is a protocol-relative match. A protocol-relative match\n * is a URL that starts with '//', and will be either http:// or https://\n * based on the protocol that the site is loaded under.\n */\n _this.protocolRelativeMatch = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} stripPrefix (required)\n *\n * The Object form of {@link Autolinker#cfg-stripPrefix}.\n */\n _this.stripPrefix = {\n scheme: true,\n www: true\n }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} stripTrailingSlash (required)\n * @inheritdoc Autolinker#cfg-stripTrailingSlash\n */\n _this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} decodePercentEncoding (required)\n * @inheritdoc Autolinker#cfg-decodePercentEncoding\n */\n _this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @private\n * @property {Boolean} protocolPrepended\n *\n * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the\n * {@link #url} did not have a protocol)\n */\n _this.protocolPrepended = false;\n _this.urlMatchType = cfg.urlMatchType;\n _this.url = cfg.url;\n _this.protocolRelativeMatch = cfg.protocolRelativeMatch;\n _this.stripPrefix = cfg.stripPrefix;\n _this.stripTrailingSlash = cfg.stripTrailingSlash;\n _this.decodePercentEncoding = cfg.decodePercentEncoding;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of UrlMatch, returns 'url'.\n *\n * @return {String}\n */\n UrlMatch.prototype.getType = function () {\n return 'url';\n };\n /**\n * Returns a string name for the type of URL match that this class\n * represents.\n *\n * This helps to determine if the match was made in the original text with a\n * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex:\n * 'www.google.com'), or was matched by a known top-level domain (ex:\n * 'google.com').\n *\n * @return {\"scheme\"/\"www\"/\"tld\"}\n */\n UrlMatch.prototype.getUrlMatchType = function () {\n return this.urlMatchType;\n };\n /**\n * Returns the url that was matched, assuming the protocol to be 'http://' if the original\n * match was missing a protocol.\n *\n * @return {String}\n */\n UrlMatch.prototype.getUrl = function () {\n var url = this.url;\n // if the url string doesn't begin with a scheme, assume 'http://'\n if (!this.protocolRelativeMatch && this.urlMatchType !== 'scheme' && !this.protocolPrepended) {\n url = this.url = 'http://' + url;\n this.protocolPrepended = true;\n }\n return url;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n UrlMatch.prototype.getAnchorHref = function () {\n var url = this.getUrl();\n return url.replace(/&/g, '&'); // any &'s in the URL should be converted back to '&' if they were displayed as & in the source html\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n UrlMatch.prototype.getAnchorText = function () {\n var anchorText = this.getMatchedText();\n if (this.protocolRelativeMatch) {\n // Strip off any protocol-relative '//' from the anchor text\n anchorText = stripProtocolRelativePrefix(anchorText);\n }\n if (this.stripPrefix.scheme) {\n anchorText = stripSchemePrefix(anchorText);\n }\n if (this.stripPrefix.www) {\n anchorText = stripWwwPrefix(anchorText);\n }\n if (this.stripTrailingSlash) {\n anchorText = removeTrailingSlash(anchorText); // remove trailing slash, if there is one\n }\n if (this.decodePercentEncoding) {\n anchorText = removePercentEncoding(anchorText);\n }\n return anchorText;\n };\n return UrlMatch;\n}(AbstractMatch);\nexport { UrlMatch };\n// Utility Functionality\n/**\n * Strips the scheme prefix (such as \"http://\" or \"https://\") from the given\n * `url`.\n *\n * @private\n * @param {String} url The text of the anchor that is being generated, for\n * which to strip off the url scheme.\n * @return {String} The `url`, with the scheme stripped.\n */\nfunction stripSchemePrefix(url) {\n return url.replace(httpSchemePrefixRe, '');\n}\n/**\n * Strips the 'www' prefix from the given `url`.\n *\n * @private\n * @param {String} url The text of the anchor that is being generated, for\n * which to strip off the 'www' if it exists.\n * @return {String} The `url`, with the 'www' stripped.\n */\nfunction stripWwwPrefix(url) {\n return url.replace(wwwPrefixRegex, '$1'); // leave any scheme ($1), it one exists\n}\n/**\n * Strips any protocol-relative '//' from the anchor text.\n *\n * @private\n * @param {String} text The text of the anchor that is being generated, for which to strip off the\n * protocol-relative prefix (such as stripping off \"//\")\n * @return {String} The `anchorText`, with the protocol-relative prefix stripped.\n */\nfunction stripProtocolRelativePrefix(text) {\n return text.replace(protocolRelativeRegex, '');\n}\n/**\n * Removes any trailing slash from the given `anchorText`, in preparation for the text to be displayed.\n *\n * @private\n * @param {String} anchorText The text of the anchor that is being generated, for which to remove any trailing\n * slash ('/') that may exist.\n * @return {String} The `anchorText`, with the trailing slash removed.\n */\nfunction removeTrailingSlash(anchorText) {\n if (anchorText.charAt(anchorText.length - 1) === '/') {\n anchorText = anchorText.slice(0, -1);\n }\n return anchorText;\n}\n/**\n * Decodes percent-encoded characters from the given `anchorText`, in\n * preparation for the text to be displayed.\n *\n * @private\n * @param {String} anchorText The text of the anchor that is being\n * generated, for which to decode any percent-encoded characters.\n * @return {String} The `anchorText`, with the percent-encoded characters\n * decoded.\n */\nfunction removePercentEncoding(anchorText) {\n // First, convert a few of the known % encodings to the corresponding\n // HTML entities that could accidentally be interpretted as special\n // HTML characters\n var preProcessedEntityAnchorText = anchorText.replace(/%22/gi, '"') // \" char\n .replace(/%26/gi, '&') // & char\n .replace(/%27/gi, ''') // ' char\n .replace(/%3C/gi, '<') // < char\n .replace(/%3E/gi, '>'); // > char\n try {\n // Now attempt to decode the rest of the anchor text\n return decodeURIComponent(preProcessedEntityAnchorText);\n } catch (e) {\n // Invalid % escape sequence in the anchor text\n return preProcessedEntityAnchorText;\n }\n}\n","import { alphaNumericAndMarksCharsStr, alphaNumericAndMarksRe } from '../regex-lib';\nimport { isKnownTld } from './uri-utils';\n/**\n * A regular expression to match a 'mailto:' prefix on an email address.\n */\nexport var mailtoSchemePrefixRe = /^mailto:/i;\n/**\n * Regular expression for all of the valid characters of the local part of an\n * email address.\n */\nvar emailLocalPartCharRegex = new RegExp(\"[\".concat(alphaNumericAndMarksCharsStr, \"!#$%&'*+/=?^_`{|}~-]\"));\n/**\n * Determines if the given character may start the \"local part\" of an email\n * address. The local part is the part to the left of the '@' sign.\n *\n * Technically according to the email spec, any of the characters in the\n * {@link emailLocalPartCharRegex} can start an email address (including any of\n * the special characters), but this is so rare in the wild and the\n * implementation is much simpler by only starting an email address with a word\n * character. This is especially important when matching the '{' character which\n * generally starts a brace that isn't part of the email address.\n */\nexport function isEmailLocalPartStartChar(char) {\n return alphaNumericAndMarksRe.test(char);\n}\n/**\n * Determines if the given character can be part of the \"local part\" of an email\n * address. The local part is the part to the left of the '@' sign.\n */\nexport function isEmailLocalPartChar(char) {\n return emailLocalPartCharRegex.test(char);\n}\n/**\n * Determines if the given email address is valid. We consider it valid if it\n * has a valid TLD in its host.\n *\n * @param emailAddress email address\n * @return true is email have valid TLD, false otherwise\n */\nexport function isValidEmail(emailAddress) {\n var emailAddressTld = emailAddress.split('.').pop() || '';\n return isKnownTld(emailAddressTld);\n}\n","import { __extends } from \"tslib\";\nimport { AbstractMatch } from './abstract-match';\n/**\n * @class Autolinker.match.Email\n * @extends Autolinker.match.AbstractMatch\n *\n * Represents a Email match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar EmailMatch = /** @class */function (_super) {\n __extends(EmailMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function EmailMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @public\n * @property {'email'} type\n *\n * A string name for the type of match that this class represents. Can be\n * used in a TypeScript discriminating union to type-narrow from the\n * `Match` type.\n */\n _this.type = 'email';\n /**\n * @cfg {String} email (required)\n *\n * The email address that was matched.\n */\n _this.email = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.email = cfg.email;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of EmailMatch, returns 'email'.\n *\n * @return {String}\n */\n EmailMatch.prototype.getType = function () {\n return 'email';\n };\n /**\n * Returns the email address that was matched.\n *\n * @return {String}\n */\n EmailMatch.prototype.getEmail = function () {\n return this.email;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n EmailMatch.prototype.getAnchorHref = function () {\n return 'mailto:' + this.email;\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n EmailMatch.prototype.getAnchorText = function () {\n return this.email;\n };\n return EmailMatch;\n}(AbstractMatch);\nexport { EmailMatch };\n","import { alphaNumericAndMarksRe } from '../regex-lib';\n/**\n * Determines if the given `char` is a an allowed character in a hashtag. These\n * are underscores or any alphanumeric char.\n */\nexport function isHashtagTextChar(char) {\n return char === '_' || alphaNumericAndMarksRe.test(char);\n}\n/**\n * Determines if a hashtag match is valid.\n */\nexport function isValidHashtag(hashtag) {\n // Max length of 140 for a hashtag ('#' char + 139 word chars)\n return hashtag.length <= 140;\n}\nexport var hashtagServices = ['twitter', 'facebook', 'instagram', 'tiktok'];\n","import { __extends } from \"tslib\";\nimport { assertNever } from '../utils';\nimport { AbstractMatch } from './abstract-match';\n/**\n * @class Autolinker.match.Hashtag\n * @extends Autolinker.match.AbstractMatch\n *\n * Represents a Hashtag match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar HashtagMatch = /** @class */function (_super) {\n __extends(HashtagMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function HashtagMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @public\n * @property {'hashtag'} type\n *\n * A string name for the type of match that this class represents. Can be\n * used in a TypeScript discriminating union to type-narrow from the\n * `Match` type.\n */\n _this.type = 'hashtag';\n /**\n * @cfg {String} serviceName\n *\n * The service to point hashtag matches to. See {@link Autolinker#hashtag}\n * for available values.\n */\n _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} hashtag (required)\n *\n * The HashtagMatch that was matched, without the '#'.\n */\n _this.hashtag = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.serviceName = cfg.serviceName;\n _this.hashtag = cfg.hashtag;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of HashtagMatch, returns 'hashtag'.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getType = function () {\n return 'hashtag';\n };\n /**\n * Returns the configured {@link #serviceName} to point the HashtagMatch to.\n * Ex: 'facebook', 'twitter'.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getServiceName = function () {\n return this.serviceName;\n };\n /**\n * Returns the matched hashtag, without the '#' character.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getHashtag = function () {\n return this.hashtag;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getAnchorHref = function () {\n var serviceName = this.serviceName,\n hashtag = this.hashtag;\n switch (serviceName) {\n case 'twitter':\n return 'https://twitter.com/hashtag/' + hashtag;\n case 'facebook':\n return 'https://www.facebook.com/hashtag/' + hashtag;\n case 'instagram':\n return 'https://instagram.com/explore/tags/' + hashtag;\n case 'tiktok':\n return 'https://www.tiktok.com/tag/' + hashtag;\n default:\n // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case\n assertNever(serviceName);\n throw new Error(\"Invalid hashtag service: \".concat(serviceName));\n }\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n HashtagMatch.prototype.getAnchorText = function () {\n return '#' + this.hashtag;\n };\n /**\n * Returns the CSS class suffixes that should be used on a tag built with\n * the match. See {@link Autolinker.match.Match#getCssClassSuffixes} for\n * details.\n *\n * @return {String[]}\n */\n HashtagMatch.prototype.getCssClassSuffixes = function () {\n var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this),\n serviceName = this.getServiceName();\n if (serviceName) {\n cssClassSuffixes.push(serviceName);\n }\n return cssClassSuffixes;\n };\n return HashtagMatch;\n}(AbstractMatch);\nexport { HashtagMatch };\n","var mentionRegexes = {\n twitter: /^@\\w{1,15}$/,\n instagram: /^@[_\\w]{1,30}$/,\n soundcloud: /^@[-a-z0-9_]{3,25}$/,\n // TikTok usernames are 1-24 characters containing letters, numbers, underscores\n // and periods, but cannot end in a period: https://support.tiktok.com/en/getting-started/setting-up-your-profile/changing-your-username\n tiktok: /^@[.\\w]{1,23}[\\w]$/\n};\n// Regex that allows for all possible mention characters for any service. We'll\n// confirm the match based on the user-configured service name after a match is\n// found.\nvar mentionTextCharRe = /[-\\w.]/;\n/**\n * Determines if the given character can be part of a mention's text characters.\n */\nexport function isMentionTextChar(char) {\n return mentionTextCharRe.test(char);\n}\n/**\n * Determines if the given `mention` text is valid.\n */\nexport function isValidMention(mention, serviceName) {\n var re = mentionRegexes[serviceName];\n return re.test(mention);\n}\nexport var mentionServices = ['twitter', 'instagram', 'soundcloud', 'tiktok'];\n","import { __extends } from \"tslib\";\nimport { AbstractMatch } from './abstract-match';\n/**\n * @class Autolinker.match.Mention\n * @extends Autolinker.match.AbstractMatch\n *\n * Represents a Mention match found in an input string which should be Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more details.\n */\nvar MentionMatch = /** @class */function (_super) {\n __extends(MentionMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function MentionMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @public\n * @property {'mention'} type\n *\n * A string name for the type of match that this class represents. Can be\n * used in a TypeScript discriminating union to type-narrow from the\n * `Match` type.\n */\n _this.type = 'mention';\n /**\n * @cfg {String} serviceName\n *\n * The service to point mention matches to. See {@link Autolinker#mention}\n * for available values.\n */\n _this.serviceName = 'twitter'; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} mention (required)\n *\n * The Mention that was matched, without the '@' character.\n */\n _this.mention = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.mention = cfg.mention;\n _this.serviceName = cfg.serviceName;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of MentionMatch, returns 'mention'.\n *\n * @return {String}\n */\n MentionMatch.prototype.getType = function () {\n return 'mention';\n };\n /**\n * Returns the mention, without the '@' character.\n *\n * @return {String}\n */\n MentionMatch.prototype.getMention = function () {\n return this.mention;\n };\n /**\n * Returns the configured {@link #serviceName} to point the mention to.\n * Ex: 'instagram', 'twitter', 'soundcloud'.\n *\n * @return {String}\n */\n MentionMatch.prototype.getServiceName = function () {\n return this.serviceName;\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n MentionMatch.prototype.getAnchorHref = function () {\n switch (this.serviceName) {\n case 'twitter':\n return 'https://twitter.com/' + this.mention;\n case 'instagram':\n return 'https://instagram.com/' + this.mention;\n case 'soundcloud':\n return 'https://soundcloud.com/' + this.mention;\n case 'tiktok':\n return 'https://www.tiktok.com/@' + this.mention;\n default:\n // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case.\n throw new Error('Unknown service name to point mention to: ' + this.serviceName);\n }\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n MentionMatch.prototype.getAnchorText = function () {\n return '@' + this.mention;\n };\n /**\n * Returns the CSS class suffixes that should be used on a tag built with\n * the match. See {@link Autolinker.match.Match#getCssClassSuffixes} for\n * details.\n *\n * @return {String[]}\n */\n MentionMatch.prototype.getCssClassSuffixes = function () {\n var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this),\n serviceName = this.getServiceName();\n if (serviceName) {\n cssClassSuffixes.push(serviceName);\n }\n return cssClassSuffixes;\n };\n return MentionMatch;\n}(AbstractMatch);\nexport { MentionMatch };\n","// Regex that holds the characters used to separate segments of a phone number\nvar separatorCharRe = /[-. ]/;\n// Regex that specifies any delimiter char that allows us to treat the number as\n// a phone number rather than just any other number that could appear in text.\nvar hasDelimCharsRe = /[-. ()]/;\n// \"Pause\" and \"Wait\" control chars\nvar controlCharRe = /[,;]/;\n// Over the years, many people have added to this regex, but it should have been\n// split up by country. Maybe one day we can break this down.\nvar mostPhoneNumbers = /(?:(?:(?:(\\+)?\\d{1,3}[-. ]?)?\\(?\\d{3}\\)?[-. ]?\\d{3}[-. ]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\\d[-. ]?){6,12}\\d+))([,;]+[0-9]+#?)*/;\n// Regex for Japanese phone numbers\nvar japanesePhoneRe = /(0([1-9]-?[1-9]\\d{3}|[1-9]{2}-?\\d{3}|[1-9]{2}\\d{1}-?\\d{2}|[1-9]{2}\\d{2}-?\\d{1})-?\\d{4}|0[789]0-?\\d{4}-?\\d{4}|050-?\\d{4}-?\\d{4})/;\n// Combined regex\nvar validPhoneNumberRe = new RegExp(\"^\".concat(mostPhoneNumbers.source, \"|\").concat(japanesePhoneRe.source, \"$\"));\n/**\n * Determines if the character is a phone number separator character (i.e.\n * '-', '.', or ' ' (space))\n */\nexport function isPhoneNumberSeparatorChar(char) {\n return separatorCharRe.test(char);\n}\n/**\n * Determines if the character is a control character in a phone number. Control\n * characters are as follows:\n *\n * - ',': A 1 second pause. Useful for dialing extensions once the main phone number has been reached\n * - ';': A \"wait\" that waits for the user to take action (tap something, for instance on a smart phone)\n */\nexport function isPhoneNumberControlChar(char) {\n return controlCharRe.test(char);\n}\n/**\n * Determines if the given phone number text found in a string is a valid phone\n * number.\n *\n * Our state machine parser is simplified to grab anything that looks like a\n * phone number, and this function confirms the match.\n */\nexport function isValidPhoneNumber(phoneNumberText) {\n // We'll only consider the match as a phone number if there is some kind of\n // delimiter character (a prefixed '+' sign, or separator chars).\n //\n // Accepts:\n // (123) 456-7890\n // +38755233976\n // Does not accept:\n // 1234567890 (no delimiter chars - may just be a random number that's not a phone number)\n var hasDelimiters = phoneNumberText.charAt(0) === '+' || hasDelimCharsRe.test(phoneNumberText);\n return hasDelimiters && validPhoneNumberRe.test(phoneNumberText);\n}\n","import { __extends } from \"tslib\";\nimport { AbstractMatch } from './abstract-match';\n/**\n * @class Autolinker.match.Phone\n * @extends Autolinker.match.AbstractMatch\n *\n * Represents a Phone number match found in an input string which should be\n * Autolinked.\n *\n * See this class's superclass ({@link Autolinker.match.Match}) for more\n * details.\n */\nvar PhoneMatch = /** @class */function (_super) {\n __extends(PhoneMatch, _super);\n /**\n * @method constructor\n * @param {Object} cfg The configuration properties for the Match\n * instance, specified in an Object (map).\n */\n function PhoneMatch(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @public\n * @property {'phone'} type\n *\n * A string name for the type of match that this class represents. Can be\n * used in a TypeScript discriminating union to type-narrow from the\n * `Match` type.\n */\n _this.type = 'phone';\n /**\n * @protected\n * @property {String} number (required)\n *\n * The phone number that was matched, without any delimiter characters.\n *\n * Note: This is a string to allow for prefixed 0's.\n */\n _this.number = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @protected\n * @property {Boolean} plusSign (required)\n *\n * `true` if the matched phone number started with a '+' sign. We'll include\n * it in the `tel:` URL if so, as this is needed for international numbers.\n *\n * Ex: '+1 (123) 456 7879'\n */\n _this.plusSign = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n _this.number = cfg.number;\n _this.plusSign = cfg.plusSign;\n return _this;\n }\n /**\n * Returns a string name for the type of match that this class represents.\n * For the case of PhoneMatch, returns 'phone'.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getType = function () {\n return 'phone';\n };\n /**\n * Returns the phone number that was matched as a string, without any\n * delimiter characters.\n *\n * Note: This is a string to allow for prefixed 0's.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getPhoneNumber = function () {\n return this.number;\n };\n /**\n * Alias of {@link #getPhoneNumber}, returns the phone number that was\n * matched as a string, without any delimiter characters.\n *\n * Note: This is a string to allow for prefixed 0's.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getNumber = function () {\n return this.getPhoneNumber();\n };\n /**\n * Returns the anchor href that should be generated for the match.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getAnchorHref = function () {\n return 'tel:' + (this.plusSign ? '+' : '') + this.number;\n };\n /**\n * Returns the anchor text that should be generated for the match.\n *\n * @return {String}\n */\n PhoneMatch.prototype.getAnchorText = function () {\n return this.matchedText;\n };\n return PhoneMatch;\n}(AbstractMatch);\nexport { PhoneMatch };\n","import { alphaNumericAndMarksRe, digitRe } from '../regex-lib';\nimport { UrlMatch } from '../match/url-match';\nimport { remove, assertNever } from '../utils';\nimport { httpSchemeRe, isDomainLabelChar, isDomainLabelStartChar, isPathChar, isSchemeChar, isSchemeStartChar, isUrlSuffixStartChar, isValidIpV4Address, isValidSchemeUrl, isValidTldMatch, urlSuffixedCharsNotAllowedAtEndRe } from './uri-utils';\nimport { isEmailLocalPartChar, isEmailLocalPartStartChar, isValidEmail, mailtoSchemePrefixRe } from './email-utils';\nimport { EmailMatch } from '../match/email-match';\nimport { isHashtagTextChar, isValidHashtag } from './hashtag-utils';\nimport { HashtagMatch } from '../match/hashtag-match';\nimport { isMentionTextChar, isValidMention } from './mention-utils';\nimport { MentionMatch } from '../match/mention-match';\nimport { isPhoneNumberSeparatorChar, isPhoneNumberControlChar, isValidPhoneNumber } from './phone-number-utils';\nimport { PhoneMatch } from '../match/phone-match';\n// For debugging: search for and uncomment other \"For debugging\" lines\n// import CliTable from 'cli-table';\n/**\n * Parses URL, email, twitter, mention, and hashtag matches from the given\n * `text`.\n */\nexport function parseMatches(text, args) {\n var tagBuilder = args.tagBuilder;\n var stripPrefix = args.stripPrefix;\n var stripTrailingSlash = args.stripTrailingSlash;\n var decodePercentEncoding = args.decodePercentEncoding;\n var hashtagServiceName = args.hashtagServiceName;\n var mentionServiceName = args.mentionServiceName;\n var matches = [];\n var textLen = text.length;\n // An array of all active state machines. Empty array means we're in the\n // \"no url\" state\n var stateMachines = [];\n // For debugging: search for and uncomment other \"For debugging\" lines\n // const table = new CliTable({\n // head: ['charIdx', 'char', 'states', 'charIdx', 'startIdx', 'reached accept state'],\n // });\n var charIdx = 0;\n for (; charIdx < textLen; charIdx++) {\n var char = text.charAt(charIdx);\n if (stateMachines.length === 0) {\n stateNoMatch(char);\n } else {\n // Must loop through the state machines backwards for when one\n // is removed\n for (var stateIdx = stateMachines.length - 1; stateIdx >= 0; stateIdx--) {\n var stateMachine = stateMachines[stateIdx];\n switch (stateMachine.state) {\n // Protocol-relative URL states\n case 11 /* ProtocolRelativeSlash1 */:\n stateProtocolRelativeSlash1(stateMachine, char);\n break;\n case 12 /* ProtocolRelativeSlash2 */:\n stateProtocolRelativeSlash2(stateMachine, char);\n break;\n case 0 /* SchemeChar */:\n stateSchemeChar(stateMachine, char);\n break;\n case 1 /* SchemeHyphen */:\n stateSchemeHyphen(stateMachine, char);\n break;\n case 2 /* SchemeColon */:\n stateSchemeColon(stateMachine, char);\n break;\n case 3 /* SchemeSlash1 */:\n stateSchemeSlash1(stateMachine, char);\n break;\n case 4 /* SchemeSlash2 */:\n stateSchemeSlash2(stateMachine, char);\n break;\n case 5 /* DomainLabelChar */:\n stateDomainLabelChar(stateMachine, char);\n break;\n case 6 /* DomainHyphen */:\n stateDomainHyphen(stateMachine, char);\n break;\n case 7 /* DomainDot */:\n stateDomainDot(stateMachine, char);\n break;\n case 13 /* IpV4Digit */:\n stateIpV4Digit(stateMachine, char);\n break;\n case 14 /* IpV4Dot */:\n stateIPv4Dot(stateMachine, char);\n break;\n case 8 /* PortColon */:\n statePortColon(stateMachine, char);\n break;\n case 9 /* PortNumber */:\n statePortNumber(stateMachine, char);\n break;\n case 10 /* Path */:\n statePath(stateMachine, char);\n break;\n // Email States\n case 15 /* EmailMailto_M */:\n stateEmailMailto_M(stateMachine, char);\n break;\n case 16 /* EmailMailto_A */:\n stateEmailMailto_A(stateMachine, char);\n break;\n case 17 /* EmailMailto_I */:\n stateEmailMailto_I(stateMachine, char);\n break;\n case 18 /* EmailMailto_L */:\n stateEmailMailto_L(stateMachine, char);\n break;\n case 19 /* EmailMailto_T */:\n stateEmailMailto_T(stateMachine, char);\n break;\n case 20 /* EmailMailto_O */:\n stateEmailMailto_O(stateMachine, char);\n break;\n case 21 /* EmailMailto_Colon */:\n stateEmailMailtoColon(stateMachine, char);\n break;\n case 22 /* EmailLocalPart */:\n stateEmailLocalPart(stateMachine, char);\n break;\n case 23 /* EmailLocalPartDot */:\n stateEmailLocalPartDot(stateMachine, char);\n break;\n case 24 /* EmailAtSign */:\n stateEmailAtSign(stateMachine, char);\n break;\n case 25 /* EmailDomainChar */:\n stateEmailDomainChar(stateMachine, char);\n break;\n case 26 /* EmailDomainHyphen */:\n stateEmailDomainHyphen(stateMachine, char);\n break;\n case 27 /* EmailDomainDot */:\n stateEmailDomainDot(stateMachine, char);\n break;\n // Hashtag states\n case 28 /* HashtagHashChar */:\n stateHashtagHashChar(stateMachine, char);\n break;\n case 29 /* HashtagTextChar */:\n stateHashtagTextChar(stateMachine, char);\n break;\n // Mention states\n case 30 /* MentionAtChar */:\n stateMentionAtChar(stateMachine, char);\n break;\n case 31 /* MentionTextChar */:\n stateMentionTextChar(stateMachine, char);\n break;\n // Phone number states\n case 32 /* PhoneNumberOpenParen */:\n statePhoneNumberOpenParen(stateMachine, char);\n break;\n case 33 /* PhoneNumberAreaCodeDigit1 */:\n statePhoneNumberAreaCodeDigit1(stateMachine, char);\n break;\n case 34 /* PhoneNumberAreaCodeDigit2 */:\n statePhoneNumberAreaCodeDigit2(stateMachine, char);\n break;\n case 35 /* PhoneNumberAreaCodeDigit3 */:\n statePhoneNumberAreaCodeDigit3(stateMachine, char);\n break;\n case 36 /* PhoneNumberCloseParen */:\n statePhoneNumberCloseParen(stateMachine, char);\n break;\n case 37 /* PhoneNumberPlus */:\n statePhoneNumberPlus(stateMachine, char);\n break;\n case 38 /* PhoneNumberDigit */:\n statePhoneNumberDigit(stateMachine, char);\n break;\n case 39 /* PhoneNumberSeparator */:\n statePhoneNumberSeparator(stateMachine, char);\n break;\n case 40 /* PhoneNumberControlChar */:\n statePhoneNumberControlChar(stateMachine, char);\n break;\n case 41 /* PhoneNumberPoundChar */:\n statePhoneNumberPoundChar(stateMachine, char);\n break;\n default:\n assertNever(stateMachine.state);\n }\n }\n }\n // For debugging: search for and uncomment other \"For debugging\" lines\n // table.push([\n // charIdx,\n // char,\n // stateMachines.map(machine => State[machine.state]).join('\\n') || '(none)',\n // charIdx,\n // stateMachines.map(m => m.startIdx).join('\\n'),\n // stateMachines.map(m => m.acceptStateReached).join('\\n'),\n // ]);\n }\n // Capture any valid match at the end of the string\n // Note: this loop must happen in reverse because\n // captureMatchIfValidAndRemove() removes state machines from the array\n // and we'll end up skipping every other one if we remove while looping\n // forward\n for (var i = stateMachines.length - 1; i >= 0; i--) {\n stateMachines.forEach(function (stateMachine) {\n return captureMatchIfValidAndRemove(stateMachine);\n });\n }\n // For debugging: search for and uncomment other \"For debugging\" lines\n // console.log(`\\nRead string:\\n ${text}`);\n // console.log(table.toString());\n return matches;\n // Handles the state when we're not in a URL/email/etc. (i.e. when no state machines exist)\n function stateNoMatch(char) {\n if (char === '#') {\n // Hash char, start a Hashtag match\n stateMachines.push(createHashtagStateMachine(charIdx, 28 /* HashtagHashChar */));\n } else if (char === '@') {\n // '@' char, start a Mention match\n stateMachines.push(createMentionStateMachine(charIdx, 30 /* MentionAtChar */));\n } else if (char === '/') {\n // A slash could begin a protocol-relative URL\n stateMachines.push(createTldUrlStateMachine(charIdx, 11 /* ProtocolRelativeSlash1 */));\n } else if (char === '+') {\n // A '+' char can start a Phone number\n stateMachines.push(createPhoneNumberStateMachine(charIdx, 37 /* PhoneNumberPlus */));\n } else if (char === '(') {\n stateMachines.push(createPhoneNumberStateMachine(charIdx, 32 /* PhoneNumberOpenParen */));\n } else {\n if (digitRe.test(char)) {\n // A digit could start a phone number\n stateMachines.push(createPhoneNumberStateMachine(charIdx, 38 /* PhoneNumberDigit */));\n // A digit could start an IP address\n stateMachines.push(createIpV4UrlStateMachine(charIdx, 13 /* IpV4Digit */));\n }\n if (isEmailLocalPartStartChar(char)) {\n // Any email local part. An 'm' character in particular could\n // start a 'mailto:' match\n var startState = char.toLowerCase() === 'm' ? 15 /* EmailMailto_M */ : 22 /* EmailLocalPart */;\n stateMachines.push(createEmailStateMachine(charIdx, startState));\n }\n if (isSchemeStartChar(char)) {\n // An uppercase or lowercase letter may start a scheme match\n stateMachines.push(createSchemeUrlStateMachine(charIdx, 0 /* SchemeChar */));\n }\n if (alphaNumericAndMarksRe.test(char)) {\n // A unicode alpha character or digit could start a domain name\n // label for a TLD match\n stateMachines.push(createTldUrlStateMachine(charIdx, 5 /* DomainLabelChar */));\n }\n }\n // Anything else, remain in the \"non-url\" state by not creating any\n // state machines\n }\n // Implements ABNF: ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n function stateSchemeChar(stateMachine, char) {\n if (char === ':') {\n stateMachine.state = 2 /* SchemeColon */;\n } else if (char === '-') {\n stateMachine.state = 1 /* SchemeHyphen */;\n } else if (isSchemeChar(char)) {\n // Stay in SchemeChar state\n } else {\n // Any other character, not a scheme\n remove(stateMachines, stateMachine);\n }\n }\n function stateSchemeHyphen(stateMachine, char) {\n if (char === '-') {\n // Stay in SchemeHyphen state\n // TODO: Should a colon following a dash be counted as the end of the scheme?\n // } else if (char === ':') {\n // stateMachine.state = State.SchemeColon;\n } else if (char === '/') {\n // Not a valid scheme match, but may be the start of a\n // protocol-relative match (such as //google.com)\n remove(stateMachines, stateMachine);\n stateMachines.push(createTldUrlStateMachine(charIdx, 11 /* ProtocolRelativeSlash1 */));\n } else if (isSchemeChar(char)) {\n stateMachine.state = 0 /* SchemeChar */;\n } else {\n // Any other character, not a scheme\n remove(stateMachines, stateMachine);\n }\n }\n function stateSchemeColon(stateMachine, char) {\n if (char === '/') {\n stateMachine.state = 3 /* SchemeSlash1 */;\n } else if (char === '.') {\n // We've read something like 'hello:.' - don't capture\n remove(stateMachines, stateMachine);\n } else if (isDomainLabelStartChar(char)) {\n stateMachine.state = 5 /* DomainLabelChar */;\n // It's possible that we read an \"introduction\" piece of text,\n // and the character after the current colon actually starts an\n // actual scheme. An example of this is:\n // \"The link:http://google.com\"\n // Hence, start a new machine to capture this match if so\n if (isSchemeStartChar(char)) {\n stateMachines.push(createSchemeUrlStateMachine(charIdx, 0 /* SchemeChar */));\n }\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n function stateSchemeSlash1(stateMachine, char) {\n if (char === '/') {\n stateMachine.state = 4 /* SchemeSlash2 */;\n } else if (isPathChar(char)) {\n stateMachine.state = 10 /* Path */;\n stateMachine.acceptStateReached = true;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateSchemeSlash2(stateMachine, char) {\n if (char === '/') {\n // 3rd slash, must be an absolute path (path-absolute in the\n // ABNF), such as in a file:///c:/windows/etc. See\n // https://tools.ietf.org/html/rfc3986#appendix-A\n stateMachine.state = 10 /* Path */;\n } else if (isDomainLabelStartChar(char)) {\n // start of \"authority\" section - see https://tools.ietf.org/html/rfc3986#appendix-A\n stateMachine.state = 5 /* DomainLabelChar */;\n stateMachine.acceptStateReached = true;\n } else {\n // not valid\n remove(stateMachines, stateMachine);\n }\n }\n // Handles reading a '/' from the NonUrl state\n function stateProtocolRelativeSlash1(stateMachine, char) {\n if (char === '/') {\n stateMachine.state = 12 /* ProtocolRelativeSlash2 */;\n } else {\n // Anything else, cannot be the start of a protocol-relative\n // URL.\n remove(stateMachines, stateMachine);\n }\n }\n // Handles reading a second '/', which could start a protocol-relative URL\n function stateProtocolRelativeSlash2(stateMachine, char) {\n if (isDomainLabelStartChar(char)) {\n stateMachine.state = 5 /* DomainLabelChar */;\n } else {\n // Anything else, not a URL\n remove(stateMachines, stateMachine);\n }\n }\n // Handles when we have read a domain label character\n function stateDomainLabelChar(stateMachine, char) {\n if (char === '.') {\n stateMachine.state = 7 /* DomainDot */;\n } else if (char === '-') {\n stateMachine.state = 6 /* DomainHyphen */;\n } else if (char === ':') {\n // Beginning of a port number, end the domain name\n stateMachine.state = 8 /* PortColon */;\n } else if (isUrlSuffixStartChar(char)) {\n // '/', '?', or '#'\n stateMachine.state = 10 /* Path */;\n } else if (isDomainLabelChar(char)) {\n // Stay in the DomainLabelChar state\n } else {\n // Anything else, end the domain name\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateDomainHyphen(stateMachine, char) {\n if (char === '-') {\n // Remain in the DomainHyphen state\n } else if (char === '.') {\n // Not valid to have a '-.' in a domain label\n captureMatchIfValidAndRemove(stateMachine);\n } else if (isDomainLabelStartChar(char)) {\n stateMachine.state = 5 /* DomainLabelChar */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateDomainDot(stateMachine, char) {\n if (char === '.') {\n // domain names cannot have multiple '.'s next to each other.\n // It's possible we've already read a valid domain name though,\n // and that the '..' sequence just forms an ellipsis at the end\n // of a sentence\n captureMatchIfValidAndRemove(stateMachine);\n } else if (isDomainLabelStartChar(char)) {\n stateMachine.state = 5 /* DomainLabelChar */;\n stateMachine.acceptStateReached = true; // after hitting a dot, and then another domain label, we've reached an accept state\n } else {\n // Anything else, end the domain name\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateIpV4Digit(stateMachine, char) {\n if (char === '.') {\n stateMachine.state = 14 /* IpV4Dot */;\n } else if (char === ':') {\n // Beginning of a port number\n stateMachine.state = 8 /* PortColon */;\n } else if (digitRe.test(char)) {\n // stay in the IPv4 digit state\n } else if (isUrlSuffixStartChar(char)) {\n stateMachine.state = 10 /* Path */;\n } else if (alphaNumericAndMarksRe.test(char)) {\n // If we hit an alpha character, must not be an IPv4\n // Example of this: 1.2.3.4abc\n remove(stateMachines, stateMachine);\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateIPv4Dot(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.octetsEncountered++;\n // Once we have encountered 4 octets, it's *potentially* a valid\n // IPv4 address. Our IPv4 regex will confirm the match later\n // though to make sure each octet is in the 0-255 range, and\n // there's exactly 4 octets (not 5 or more)\n if (stateMachine.octetsEncountered === 4) {\n stateMachine.acceptStateReached = true;\n }\n stateMachine.state = 13 /* IpV4Digit */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function statePortColon(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 9 /* PortNumber */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function statePortNumber(stateMachine, char) {\n if (digitRe.test(char)) {\n // Stay in port number state\n } else if (isUrlSuffixStartChar(char)) {\n // '/', '?', or '#'\n stateMachine.state = 10 /* Path */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function statePath(stateMachine, char) {\n if (isPathChar(char)) {\n // Stay in the path state\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n // Handles if we're reading a 'mailto:' prefix on the string\n function stateEmailMailto_M(stateMachine, char) {\n if (char.toLowerCase() === 'a') {\n stateMachine.state = 16 /* EmailMailto_A */;\n } else {\n stateEmailLocalPart(stateMachine, char);\n }\n }\n function stateEmailMailto_A(stateMachine, char) {\n if (char.toLowerCase() === 'i') {\n stateMachine.state = 17 /* EmailMailto_I */;\n } else {\n stateEmailLocalPart(stateMachine, char);\n }\n }\n function stateEmailMailto_I(stateMachine, char) {\n if (char.toLowerCase() === 'l') {\n stateMachine.state = 18 /* EmailMailto_L */;\n } else {\n stateEmailLocalPart(stateMachine, char);\n }\n }\n function stateEmailMailto_L(stateMachine, char) {\n if (char.toLowerCase() === 't') {\n stateMachine.state = 19 /* EmailMailto_T */;\n } else {\n stateEmailLocalPart(stateMachine, char);\n }\n }\n function stateEmailMailto_T(stateMachine, char) {\n if (char.toLowerCase() === 'o') {\n stateMachine.state = 20 /* EmailMailto_O */;\n } else {\n stateEmailLocalPart(stateMachine, char);\n }\n }\n function stateEmailMailto_O(stateMachine, char) {\n if (char.toLowerCase() === ':') {\n stateMachine.state = 21 /* EmailMailto_Colon */;\n } else {\n stateEmailLocalPart(stateMachine, char);\n }\n }\n function stateEmailMailtoColon(stateMachine, char) {\n if (isEmailLocalPartChar(char)) {\n stateMachine.state = 22 /* EmailLocalPart */;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n // Handles the state when we're currently in the \"local part\" of an\n // email address (as opposed to the \"domain part\")\n function stateEmailLocalPart(stateMachine, char) {\n if (char === '.') {\n stateMachine.state = 23 /* EmailLocalPartDot */;\n } else if (char === '@') {\n stateMachine.state = 24 /* EmailAtSign */;\n } else if (isEmailLocalPartChar(char)) {\n // stay in the \"local part\" of the email address\n // Note: because stateEmailLocalPart() is called from the\n // 'mailto' states (when the 'mailto' prefix itself has been\n // broken), make sure to set the state to EmailLocalPart\n stateMachine.state = 22 /* EmailLocalPart */;\n } else {\n // not an email address character\n remove(stateMachines, stateMachine);\n }\n }\n // Handles the state where we've read\n function stateEmailLocalPartDot(stateMachine, char) {\n if (char === '.') {\n // We read a second '.' in a row, not a valid email address\n // local part\n remove(stateMachines, stateMachine);\n } else if (char === '@') {\n // We read the '@' character immediately after a dot ('.'), not\n // an email address\n remove(stateMachines, stateMachine);\n } else if (isEmailLocalPartChar(char)) {\n stateMachine.state = 22 /* EmailLocalPart */;\n } else {\n // Anything else, not an email address\n remove(stateMachines, stateMachine);\n }\n }\n function stateEmailAtSign(stateMachine, char) {\n if (isDomainLabelStartChar(char)) {\n stateMachine.state = 25 /* EmailDomainChar */;\n } else {\n // Anything else, not an email address\n remove(stateMachines, stateMachine);\n }\n }\n function stateEmailDomainChar(stateMachine, char) {\n if (char === '.') {\n stateMachine.state = 27 /* EmailDomainDot */;\n } else if (char === '-') {\n stateMachine.state = 26 /* EmailDomainHyphen */;\n } else if (isDomainLabelChar(char)) {\n // Stay in the DomainChar state\n } else {\n // Anything else, we potentially matched if the criteria has\n // been met\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateEmailDomainHyphen(stateMachine, char) {\n if (char === '-' || char === '.') {\n // Not valid to have two hyphens (\"--\") or hypen+dot (\"-.\")\n captureMatchIfValidAndRemove(stateMachine);\n } else if (isDomainLabelChar(char)) {\n stateMachine.state = 25 /* EmailDomainChar */;\n } else {\n // Anything else\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function stateEmailDomainDot(stateMachine, char) {\n if (char === '.' || char === '-') {\n // not valid to have two dots (\"..\") or dot+hypen (\".-\")\n captureMatchIfValidAndRemove(stateMachine);\n } else if (isDomainLabelStartChar(char)) {\n stateMachine.state = 25 /* EmailDomainChar */;\n // After having read a '.' and then a valid domain character,\n // we now know that the domain part of the email is valid, and\n // we have found at least a partial EmailMatch (however, the\n // email address may have additional characters from this point)\n stateMachine.acceptStateReached = true;\n } else {\n // Anything else\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n // Handles the state when we've just encountered a '#' character\n function stateHashtagHashChar(stateMachine, char) {\n if (isHashtagTextChar(char)) {\n // '#' char with valid hash text char following\n stateMachine.state = 29 /* HashtagTextChar */;\n stateMachine.acceptStateReached = true;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n // Handles the state when we're currently in the hash tag's text chars\n function stateHashtagTextChar(stateMachine, char) {\n if (isHashtagTextChar(char)) {\n // Continue reading characters in the HashtagText state\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n // Handles the state when we've just encountered a '@' character\n function stateMentionAtChar(stateMachine, char) {\n if (isMentionTextChar(char)) {\n // '@' char with valid mention text char following\n stateMachine.state = 31 /* MentionTextChar */;\n stateMachine.acceptStateReached = true;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n // Handles the state when we're currently in the mention's text chars\n function stateMentionTextChar(stateMachine, char) {\n if (isMentionTextChar(char)) {\n // Continue reading characters in the HashtagText state\n } else if (alphaNumericAndMarksRe.test(char)) {\n // Char is invalid for a mention text char, not a valid match.\n // Note that ascii alphanumeric chars are okay (which are tested\n // in the previous 'if' statement, but others are not)\n remove(stateMachines, stateMachine);\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n function statePhoneNumberPlus(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 38 /* PhoneNumberDigit */;\n } else {\n remove(stateMachines, stateMachine);\n // This character may start a new match. Add states for it\n stateNoMatch(char);\n }\n }\n function statePhoneNumberOpenParen(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 33 /* PhoneNumberAreaCodeDigit1 */;\n } else {\n remove(stateMachines, stateMachine);\n }\n // It's also possible that the paren was just an open brace for\n // a piece of text. Start other machines\n stateNoMatch(char);\n }\n function statePhoneNumberAreaCodeDigit1(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 34 /* PhoneNumberAreaCodeDigit2 */;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n function statePhoneNumberAreaCodeDigit2(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 35 /* PhoneNumberAreaCodeDigit3 */;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n function statePhoneNumberAreaCodeDigit3(stateMachine, char) {\n if (char === ')') {\n stateMachine.state = 36 /* PhoneNumberCloseParen */;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n function statePhoneNumberCloseParen(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 38 /* PhoneNumberDigit */;\n } else if (isPhoneNumberSeparatorChar(char)) {\n stateMachine.state = 39 /* PhoneNumberSeparator */;\n } else {\n remove(stateMachines, stateMachine);\n }\n }\n function statePhoneNumberDigit(stateMachine, char) {\n // For now, if we've reached any digits, we'll say that the machine\n // has reached its accept state. The phone regex will confirm the\n // match later.\n // Alternatively, we could count the number of digits to avoid\n // invoking the phone number regex\n stateMachine.acceptStateReached = true;\n if (isPhoneNumberControlChar(char)) {\n stateMachine.state = 40 /* PhoneNumberControlChar */;\n } else if (char === '#') {\n stateMachine.state = 41 /* PhoneNumberPoundChar */;\n } else if (digitRe.test(char)) {\n // Stay in the phone number digit state\n } else if (char === '(') {\n stateMachine.state = 32 /* PhoneNumberOpenParen */;\n } else if (isPhoneNumberSeparatorChar(char)) {\n stateMachine.state = 39 /* PhoneNumberSeparator */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n // The transition from a digit character to a letter can be the\n // start of a new scheme URL match\n if (isSchemeStartChar(char)) {\n stateMachines.push(createSchemeUrlStateMachine(charIdx, 0 /* SchemeChar */));\n }\n }\n }\n function statePhoneNumberSeparator(stateMachine, char) {\n if (digitRe.test(char)) {\n stateMachine.state = 38 /* PhoneNumberDigit */;\n } else if (char === '(') {\n stateMachine.state = 32 /* PhoneNumberOpenParen */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n // This character may start a new match. Add states for it\n stateNoMatch(char);\n }\n }\n // The \";\" characters is \"wait\" in a phone number\n // The \",\" characters is \"pause\" in a phone number\n function statePhoneNumberControlChar(stateMachine, char) {\n if (isPhoneNumberControlChar(char)) {\n // Stay in the \"control char\" state\n } else if (char === '#') {\n stateMachine.state = 41 /* PhoneNumberPoundChar */;\n } else if (digitRe.test(char)) {\n stateMachine.state = 38 /* PhoneNumberDigit */;\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n // The \"#\" characters is \"pound\" in a phone number\n function statePhoneNumberPoundChar(stateMachine, char) {\n if (isPhoneNumberControlChar(char)) {\n stateMachine.state = 40 /* PhoneNumberControlChar */;\n } else if (digitRe.test(char)) {\n // According to some of the older tests, if there's a digit\n // after a '#' sign, the match is invalid. TODO: Revisit if this is true\n remove(stateMachines, stateMachine);\n } else {\n captureMatchIfValidAndRemove(stateMachine);\n }\n }\n /*\n * Captures a match if it is valid (i.e. has a full domain name for a\n * TLD match). If a match is not valid, it is possible that we want to\n * keep reading characters in order to make a full match.\n */\n function captureMatchIfValidAndRemove(stateMachine) {\n // Remove the state machine first. There are a number of code paths\n // which return out of this function early, so make sure we have\n // this done\n remove(stateMachines, stateMachine);\n // Make sure the state machine being checked has actually reached an\n // \"accept\" state. If it hasn't reach one, it can't be a match\n if (!stateMachine.acceptStateReached) {\n return;\n }\n var startIdx = stateMachine.startIdx;\n var matchedText = text.slice(stateMachine.startIdx, charIdx);\n // Handle any unbalanced braces (parens, square brackets, or curly\n // brackets) inside the URL. This handles situations like:\n // The link (google.com)\n // and\n // Check out this link here (en.wikipedia.org/wiki/IANA_(disambiguation))\n //\n // And also remove any punctuation chars at the end such as:\n // '?', ',', ':', '.', etc.\n matchedText = excludeUnbalancedTrailingBracesAndPunctuation(matchedText);\n if (stateMachine.type === 'url') {\n // We don't want to accidentally match a URL that is preceded by an\n // '@' character, which would be an email address\n var charBeforeUrlMatch = text.charAt(stateMachine.startIdx - 1);\n if (charBeforeUrlMatch === '@') {\n return;\n }\n // For the purpose of this parser, we've generalized 'www'\n // matches as part of 'tld' matches. However, for backward\n // compatibility, we distinguish beween TLD matches and matches\n // that begin with 'www.' so that users may turn off 'www'\n // matches. As such, we need to correct for that now if the\n // URL begins with 'www.'\n var urlMatchType = stateMachine.matchType;\n if (urlMatchType === 'scheme') {\n // Autolinker accepts many characters in a url's scheme (like `fake://test.com`).\n // However, in cases where a URL is missing whitespace before an obvious link,\n // (for example: `nowhitespacehttp://www.test.com`), we only want the match to start\n // at the http:// part. We will check if the match contains a common scheme and then\n // shift the match to start from there.\n var httpSchemeMatch = httpSchemeRe.exec(matchedText);\n if (httpSchemeMatch) {\n // If we found an overmatched URL, we want to find the index\n // of where the match should start and shift the match to\n // start from the beginning of the common scheme\n startIdx = startIdx + httpSchemeMatch.index;\n matchedText = matchedText.slice(httpSchemeMatch.index);\n }\n if (!isValidSchemeUrl(matchedText)) {\n return; // not a valid match\n }\n } else if (urlMatchType === 'tld') {\n if (!isValidTldMatch(matchedText)) {\n return; // not a valid match\n }\n } else if (urlMatchType === 'ipV4') {\n if (!isValidIpV4Address(matchedText)) {\n return; // not a valid match\n }\n } else {\n assertNever(urlMatchType);\n }\n matches.push(new UrlMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: startIdx,\n urlMatchType: urlMatchType,\n url: matchedText,\n protocolRelativeMatch: matchedText.slice(0, 2) === '//',\n // TODO: Do these settings need to be passed to the match,\n // or should we handle them here in UrlMatcher?\n stripPrefix: stripPrefix,\n stripTrailingSlash: stripTrailingSlash,\n decodePercentEncoding: decodePercentEncoding\n }));\n } else if (stateMachine.type === 'email') {\n // if the email address has a valid TLD, add it to the list of matches\n if (isValidEmail(matchedText)) {\n matches.push(new EmailMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: startIdx,\n email: matchedText.replace(mailtoSchemePrefixRe, '')\n }));\n }\n } else if (stateMachine.type === 'hashtag') {\n if (isValidHashtag(matchedText)) {\n matches.push(new HashtagMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: startIdx,\n serviceName: hashtagServiceName,\n hashtag: matchedText.slice(1)\n }));\n }\n } else if (stateMachine.type === 'mention') {\n if (isValidMention(matchedText, mentionServiceName)) {\n matches.push(new MentionMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: startIdx,\n serviceName: mentionServiceName,\n mention: matchedText.slice(1) // strip off the '@' character at the beginning\n }));\n }\n } else if (stateMachine.type === 'phone') {\n // remove any trailing spaces that were considered as \"separator\"\n // chars by the state machine\n matchedText = matchedText.replace(/ +$/g, '');\n if (isValidPhoneNumber(matchedText)) {\n var cleanNumber = matchedText.replace(/[^0-9,;#]/g, ''); // strip out non-digit characters exclude comma semicolon and #\n matches.push(new PhoneMatch({\n tagBuilder: tagBuilder,\n matchedText: matchedText,\n offset: startIdx,\n number: cleanNumber,\n plusSign: matchedText.charAt(0) === '+'\n }));\n }\n } else {\n assertNever(stateMachine);\n }\n }\n}\nvar openBraceRe = /[\\(\\{\\[]/;\nvar closeBraceRe = /[\\)\\}\\]]/;\nvar oppositeBrace = {\n ')': '(',\n '}': '{',\n ']': '['\n};\n/**\n * Determines if a match found has unmatched closing parenthesis,\n * square brackets or curly brackets. If so, these unbalanced symbol(s) will be\n * removed from the URL match itself.\n *\n * A match may have an extra closing parenthesis/square brackets/curly brackets\n * at the end of the match because these are valid URL path characters. For\n * example, \"wikipedia.com/something_(disambiguation)\" should be auto-linked.\n *\n * However, an extra parenthesis *will* be included when the URL itself is\n * wrapped in parenthesis, such as in the case of:\n *\n * \"(wikipedia.com/something_(disambiguation))\"\n *\n * In this case, the last closing parenthesis should *not* be part of the\n * URL itself, and this method will exclude it from the returned URL.\n *\n * For square brackets in URLs such as in PHP arrays, the same behavior as\n * parenthesis discussed above should happen:\n *\n * \"[http://www.example.com/foo.php?bar[]=1&bar[]=2&bar[]=3]\"\n *\n * The very last closing square bracket should not be part of the URL itself,\n * and therefore this method will remove it.\n *\n * @param matchedText The full matched URL/email/hashtag/etc. from the state\n * machine parser.\n * @return The updated matched text with extraneous suffix characters removed.\n */\nexport function excludeUnbalancedTrailingBracesAndPunctuation(matchedText) {\n var braceCounts = {\n '(': 0,\n '{': 0,\n '[': 0\n };\n for (var i = 0; i < matchedText.length; i++) {\n var char_1 = matchedText.charAt(i);\n if (openBraceRe.test(char_1)) {\n braceCounts[char_1]++;\n } else if (closeBraceRe.test(char_1)) {\n braceCounts[oppositeBrace[char_1]]--;\n }\n }\n var endIdx = matchedText.length - 1;\n var char;\n while (endIdx >= 0) {\n char = matchedText.charAt(endIdx);\n if (closeBraceRe.test(char)) {\n var oppositeBraceChar = oppositeBrace[char];\n if (braceCounts[oppositeBraceChar] < 0) {\n braceCounts[oppositeBraceChar]++;\n endIdx--;\n } else {\n break;\n }\n } else if (urlSuffixedCharsNotAllowedAtEndRe.test(char)) {\n // Walk back a punctuation char like '?', ',', ':', '.', etc.\n endIdx--;\n } else {\n break;\n }\n }\n return matchedText.slice(0, endIdx + 1);\n}\nfunction createSchemeUrlStateMachine(startIdx, state) {\n return {\n type: 'url',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false,\n matchType: 'scheme'\n };\n}\nfunction createTldUrlStateMachine(startIdx, state) {\n return {\n type: 'url',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false,\n matchType: 'tld'\n };\n}\nfunction createIpV4UrlStateMachine(startIdx, state) {\n return {\n type: 'url',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false,\n matchType: 'ipV4',\n octetsEncountered: 1 // starts at 1 because we create this machine when encountering the first octet\n };\n}\nfunction createEmailStateMachine(startIdx, state) {\n return {\n type: 'email',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false\n };\n}\nfunction createHashtagStateMachine(startIdx, state) {\n return {\n type: 'hashtag',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false\n };\n}\nfunction createMentionStateMachine(startIdx, state) {\n return {\n type: 'mention',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false\n };\n}\nfunction createPhoneNumberStateMachine(startIdx, state) {\n return {\n type: 'phone',\n startIdx: startIdx,\n state: state,\n acceptStateReached: false\n };\n}\n","import { __assign } from \"tslib\";\nimport { letterRe, digitRe, whitespaceRe, quoteRe, controlCharsRe } from '../regex-lib';\nimport { assertNever } from '../utils';\n// For debugging: search for other \"For debugging\" lines\n// import CliTable from 'cli-table';\n/**\n * Parses an HTML string, calling the callbacks to notify of tags and text.\n *\n * ## History\n *\n * This file previously used a regular expression to find html tags in the input\n * text. Unfortunately, we ran into a bunch of catastrophic backtracking issues\n * with certain input text, causing Autolinker to either hang or just take a\n * really long time to parse the string.\n *\n * The current code is intended to be a O(n) algorithm that walks through\n * the string in one pass, and tries to be as cheap as possible. We don't need\n * to implement the full HTML spec, but rather simply determine where the string\n * looks like an HTML tag, and where it looks like text (so that we can autolink\n * that).\n *\n * This state machine parser is intended just to be a simple but performant\n * parser of HTML for the subset of requirements we have. We simply need to:\n *\n * 1. Determine where HTML tags are\n * 2. Determine the tag name (Autolinker specifically only cares about <a>,\n * <script>, and <style> tags, so as not to link any text within them)\n *\n * We don't need to:\n *\n * 1. Create a parse tree\n * 2. Auto-close tags with invalid markup\n * 3. etc.\n *\n * The other intention behind this is that we didn't want to add external\n * dependencies on the Autolinker utility which would increase its size. For\n * instance, adding htmlparser2 adds 125kb to the minified output file,\n * increasing its final size from 47kb to 172kb (at the time of writing). It\n * also doesn't work exactly correctly, treating the string \"<3 blah blah blah\"\n * as an HTML tag.\n *\n * Reference for HTML spec:\n *\n * https://www.w3.org/TR/html51/syntax.html#sec-tokenization\n *\n * @param {String} html The HTML to parse\n * @param {Object} callbacks\n * @param {Function} callbacks.onOpenTag Callback function to call when an open\n * tag is parsed. Called with the tagName as its argument.\n * @param {Function} callbacks.onCloseTag Callback function to call when a close\n * tag is parsed. Called with the tagName as its argument. If a self-closing\n * tag is found, `onCloseTag` is called immediately after `onOpenTag`.\n * @param {Function} callbacks.onText Callback function to call when text (i.e\n * not an HTML tag) is parsed. Called with the text (string) as its first\n * argument, and offset (number) into the string as its second.\n */\nexport function parseHtml(html, _a) {\n var onOpenTag = _a.onOpenTag,\n onCloseTag = _a.onCloseTag,\n onText = _a.onText,\n onComment = _a.onComment,\n onDoctype = _a.onDoctype;\n var noCurrentTag = new CurrentTag();\n var charIdx = 0,\n len = html.length,\n state = 0 /* Data */,\n currentDataIdx = 0,\n // where the current data start index is\n currentTag = noCurrentTag; // describes the current tag that is being read\n // For debugging: search for other \"For debugging\" lines\n // const table = new CliTable( {\n // \thead: [ 'charIdx', 'char', 'state', 'currentDataIdx', 'currentOpenTagIdx', 'tag.type' ]\n // } );\n while (charIdx < len) {\n var char = html.charAt(charIdx);\n // For debugging: search for other \"For debugging\" lines\n // ALSO: Temporarily remove the 'const' keyword on the State enum\n // table.push(\n // \t[ charIdx, char, State[ state ], currentDataIdx, currentTag.idx, currentTag.idx === -1 ? '' : currentTag.type ]\n // );\n switch (state) {\n case 0 /* Data */:\n stateData(char);\n break;\n case 1 /* TagOpen */:\n stateTagOpen(char);\n break;\n case 2 /* EndTagOpen */:\n stateEndTagOpen(char);\n break;\n case 3 /* TagName */:\n stateTagName(char);\n break;\n case 4 /* BeforeAttributeName */:\n stateBeforeAttributeName(char);\n break;\n case 5 /* AttributeName */:\n stateAttributeName(char);\n break;\n case 6 /* AfterAttributeName */:\n stateAfterAttributeName(char);\n break;\n case 7 /* BeforeAttributeValue */:\n stateBeforeAttributeValue(char);\n break;\n case 8 /* AttributeValueDoubleQuoted */:\n stateAttributeValueDoubleQuoted(char);\n break;\n case 9 /* AttributeValueSingleQuoted */:\n stateAttributeValueSingleQuoted(char);\n break;\n case 10 /* AttributeValueUnquoted */:\n stateAttributeValueUnquoted(char);\n break;\n case 11 /* AfterAttributeValueQuoted */:\n stateAfterAttributeValueQuoted(char);\n break;\n case 12 /* SelfClosingStartTag */:\n stateSelfClosingStartTag(char);\n break;\n case 13 /* MarkupDeclarationOpenState */:\n stateMarkupDeclarationOpen(char);\n break;\n case 14 /* CommentStart */:\n stateCommentStart(char);\n break;\n case 15 /* CommentStartDash */:\n stateCommentStartDash(char);\n break;\n case 16 /* Comment */:\n stateComment(char);\n break;\n case 17 /* CommentEndDash */:\n stateCommentEndDash(char);\n break;\n case 18 /* CommentEnd */:\n stateCommentEnd(char);\n break;\n case 19 /* CommentEndBang */:\n stateCommentEndBang(char);\n break;\n case 20 /* Doctype */:\n stateDoctype(char);\n break;\n default:\n assertNever(state);\n }\n // For debugging: search for other \"For debugging\" lines\n // ALSO: Temporarily remove the 'const' keyword on the State enum\n // table.push(\n // \t[ charIdx, char, State[ state ], currentDataIdx, currentTag.idx, currentTag.idx === -1 ? '' : currentTag.type ]\n // );\n charIdx++;\n }\n if (currentDataIdx < charIdx) {\n emitText();\n }\n // For debugging: search for other \"For debugging\" lines\n // console.log( '\\n' + table.toString() );\n // Called when non-tags are being read (i.e. the text around HTML †ags)\n // https://www.w3.org/TR/html51/syntax.html#data-state\n function stateData(char) {\n if (char === '<') {\n startNewTag();\n }\n }\n // Called after a '<' is read from the Data state\n // https://www.w3.org/TR/html51/syntax.html#tag-open-state\n function stateTagOpen(char) {\n if (char === '!') {\n state = 13 /* MarkupDeclarationOpenState */;\n } else if (char === '/') {\n state = 2 /* EndTagOpen */;\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n isClosing: true\n }));\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else if (letterRe.test(char)) {\n // tag name start (and no '/' read)\n state = 3 /* TagName */;\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n isOpening: true\n }));\n } else {\n // Any other\n state = 0 /* Data */;\n currentTag = noCurrentTag;\n }\n }\n // After a '<x', '</x' sequence is read (where 'x' is a letter character),\n // this is to continue reading the tag name\n // https://www.w3.org/TR/html51/syntax.html#tag-name-state\n function stateTagName(char) {\n if (whitespaceRe.test(char)) {\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n name: captureTagName()\n }));\n state = 4 /* BeforeAttributeName */;\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else if (char === '/') {\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n name: captureTagName()\n }));\n state = 12 /* SelfClosingStartTag */;\n } else if (char === '>') {\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n name: captureTagName()\n }));\n emitTagAndPreviousTextNode(); // resets to Data state as well\n } else if (!letterRe.test(char) && !digitRe.test(char) && char !== ':') {\n // Anything else that does not form an html tag. Note: the colon\n // character is accepted for XML namespaced tags\n resetToDataState();\n } else {\n // continue reading tag name\n }\n }\n // Called after the '/' is read from a '</' sequence\n // https://www.w3.org/TR/html51/syntax.html#end-tag-open-state\n function stateEndTagOpen(char) {\n if (char === '>') {\n // parse error. Encountered \"</>\". Skip it without treating as a tag\n resetToDataState();\n } else if (letterRe.test(char)) {\n state = 3 /* TagName */;\n } else {\n // some other non-tag-like character, don't treat this as a tag\n resetToDataState();\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#before-attribute-name-state\n function stateBeforeAttributeName(char) {\n if (whitespaceRe.test(char)) {\n // stay in BeforeAttributeName state - continue reading chars\n } else if (char === '/') {\n state = 12 /* SelfClosingStartTag */;\n } else if (char === '>') {\n emitTagAndPreviousTextNode(); // resets to Data state as well\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else if (char === \"=\" || quoteRe.test(char) || controlCharsRe.test(char)) {\n // \"Parse error\" characters that, according to the spec, should be\n // appended to the attribute name, but we'll treat these characters\n // as not forming a real HTML tag\n resetToDataState();\n } else {\n // Any other char, start of a new attribute name\n state = 5 /* AttributeName */;\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#attribute-name-state\n function stateAttributeName(char) {\n if (whitespaceRe.test(char)) {\n state = 6 /* AfterAttributeName */;\n } else if (char === '/') {\n state = 12 /* SelfClosingStartTag */;\n } else if (char === '=') {\n state = 7 /* BeforeAttributeValue */;\n } else if (char === '>') {\n emitTagAndPreviousTextNode(); // resets to Data state as well\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else if (quoteRe.test(char)) {\n // \"Parse error\" characters that, according to the spec, should be\n // appended to the attribute name, but we'll treat these characters\n // as not forming a real HTML tag\n resetToDataState();\n } else {\n // anything else: continue reading attribute name\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#after-attribute-name-state\n function stateAfterAttributeName(char) {\n if (whitespaceRe.test(char)) {\n // ignore the character - continue reading\n } else if (char === '/') {\n state = 12 /* SelfClosingStartTag */;\n } else if (char === '=') {\n state = 7 /* BeforeAttributeValue */;\n } else if (char === '>') {\n emitTagAndPreviousTextNode();\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else if (quoteRe.test(char)) {\n // \"Parse error\" characters that, according to the spec, should be\n // appended to the attribute name, but we'll treat these characters\n // as not forming a real HTML tag\n resetToDataState();\n } else {\n // Any other character, start a new attribute in the current tag\n state = 5 /* AttributeName */;\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#before-attribute-value-state\n function stateBeforeAttributeValue(char) {\n if (whitespaceRe.test(char)) {\n // ignore the character - continue reading\n } else if (char === \"\\\"\") {\n state = 8 /* AttributeValueDoubleQuoted */;\n } else if (char === \"'\") {\n state = 9 /* AttributeValueSingleQuoted */;\n } else if (/[>=`]/.test(char)) {\n // Invalid chars after an '=' for an attribute value, don't count\n // the current tag as an HTML tag\n resetToDataState();\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else {\n // Any other character, consider it an unquoted attribute value\n state = 10 /* AttributeValueUnquoted */;\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#attribute-value-double-quoted-state\n function stateAttributeValueDoubleQuoted(char) {\n if (char === \"\\\"\") {\n // end the current double-quoted attribute\n state = 11 /* AfterAttributeValueQuoted */;\n } else {\n // consume the character as part of the double-quoted attribute value\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#attribute-value-single-quoted-state\n function stateAttributeValueSingleQuoted(char) {\n if (char === \"'\") {\n // end the current single-quoted attribute\n state = 11 /* AfterAttributeValueQuoted */;\n } else {\n // consume the character as part of the double-quoted attribute value\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#attribute-value-unquoted-state\n function stateAttributeValueUnquoted(char) {\n if (whitespaceRe.test(char)) {\n state = 4 /* BeforeAttributeName */;\n } else if (char === '>') {\n emitTagAndPreviousTextNode();\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else {\n // Any other character, treat it as part of the attribute value\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#after-attribute-value-quoted-state\n function stateAfterAttributeValueQuoted(char) {\n if (whitespaceRe.test(char)) {\n state = 4 /* BeforeAttributeName */;\n } else if (char === '/') {\n state = 12 /* SelfClosingStartTag */;\n } else if (char === '>') {\n emitTagAndPreviousTextNode();\n } else if (char === '<') {\n // start of another tag (ignore the previous, incomplete one)\n startNewTag();\n } else {\n // Any other character, \"parse error\". Spec says to switch to the\n // BeforeAttributeState and re-consume the character, as it may be\n // the start of a new attribute name\n state = 4 /* BeforeAttributeName */;\n reconsumeCurrentCharacter();\n }\n }\n // A '/' has just been read in the current tag (presumably for '/>'), and\n // this handles the next character\n // https://www.w3.org/TR/html51/syntax.html#self-closing-start-tag-state\n function stateSelfClosingStartTag(char) {\n if (char === '>') {\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n isClosing: true\n }));\n emitTagAndPreviousTextNode(); // resets to Data state as well\n } else {\n state = 4 /* BeforeAttributeName */;\n }\n }\n // https://www.w3.org/TR/html51/syntax.html#markup-declaration-open-state\n // (HTML Comments or !DOCTYPE)\n function stateMarkupDeclarationOpen(char) {\n if (html.substr(charIdx, 2) === '--') {\n // html comment\n charIdx += 2; // \"consume\" characters\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n type: 'comment'\n }));\n state = 14 /* CommentStart */;\n } else if (html.substr(charIdx, 7).toUpperCase() === 'DOCTYPE') {\n charIdx += 7; // \"consume\" characters\n currentTag = new CurrentTag(__assign(__assign({}, currentTag), {\n type: 'doctype'\n }));\n state = 20 /* Doctype */;\n } else {\n // At this point, the spec specifies that the state machine should\n // enter the \"bogus comment\" state, in which case any character(s)\n // after the '<!' that were read should become an HTML comment up\n // until the first '>' that is read (or EOF). Instead, we'll assume\n // that a user just typed '<!' as part of text data\n resetToDataState();\n }\n }\n // Handles after the sequence '<!--' has been read\n // https://www.w3.org/TR/html51/syntax.html#comment-start-state\n function stateCommentStart(char) {\n if (char === '-') {\n // We've read the sequence '<!---' at this point (3 dashes)\n state = 15 /* CommentStartDash */;\n } else if (char === '>') {\n // At this point, we'll assume the comment wasn't a real comment\n // so we'll just emit it as data. We basically read the sequence\n // '<!-->'\n resetToDataState();\n } else {\n // Any other char, take it as part of the comment\n state = 16 /* Comment */;\n }\n }\n // We've read the sequence '<!---' at this point (3 dashes)\n // https://www.w3.org/TR/html51/syntax.html#comment-start-dash-state\n function stateCommentStartDash(char) {\n if (char === '-') {\n // We've read '<!----' (4 dashes) at this point\n state = 18 /* CommentEnd */;\n } else if (char === '>') {\n // At this point, we'll assume the comment wasn't a real comment\n // so we'll just emit it as data. We basically read the sequence\n // '<!--->'\n resetToDataState();\n } else {\n // Anything else, take it as a valid comment\n state = 16 /* Comment */;\n }\n }\n // Currently reading the comment's text (data)\n // https://www.w3.org/TR/html51/syntax.html#comment-state\n function stateComment(char) {\n if (char === '-') {\n state = 17 /* CommentEndDash */;\n } else {\n // Any other character, stay in the Comment state\n }\n }\n // When we we've read the first dash inside a comment, it may signal the\n // end of the comment if we read another dash\n // https://www.w3.org/TR/html51/syntax.html#comment-end-dash-state\n function stateCommentEndDash(char) {\n if (char === '-') {\n state = 18 /* CommentEnd */;\n } else {\n // Wasn't a dash, must still be part of the comment\n state = 16 /* Comment */;\n }\n }\n // After we've read two dashes inside a comment, it may signal the end of\n // the comment if we then read a '>' char\n // https://www.w3.org/TR/html51/syntax.html#comment-end-state\n function stateCommentEnd(char) {\n if (char === '>') {\n emitTagAndPreviousTextNode();\n } else if (char === '!') {\n state = 19 /* CommentEndBang */;\n } else if (char === '-') {\n // A 3rd '-' has been read: stay in the CommentEnd state\n } else {\n // Anything else, switch back to the comment state since we didn't\n // read the full \"end comment\" sequence (i.e. '-->')\n state = 16 /* Comment */;\n }\n }\n // We've read the sequence '--!' inside of a comment\n // https://www.w3.org/TR/html51/syntax.html#comment-end-bang-state\n function stateCommentEndBang(char) {\n if (char === '-') {\n // We read the sequence '--!-' inside of a comment. The last dash\n // could signify that the comment is going to close\n state = 17 /* CommentEndDash */;\n } else if (char === '>') {\n // End of comment with the sequence '--!>'\n emitTagAndPreviousTextNode();\n } else {\n // The '--!' was not followed by a '>', continue reading the\n // comment's text\n state = 16 /* Comment */;\n }\n }\n /**\n * For DOCTYPES in particular, we don't care about the attributes. Just\n * advance to the '>' character and emit the tag, unless we find a '<'\n * character in which case we'll start a new tag.\n *\n * Example doctype tag:\n * <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n *\n * Actual spec: https://www.w3.org/TR/html51/syntax.html#doctype-state\n */\n function stateDoctype(char) {\n if (char === '>') {\n emitTagAndPreviousTextNode();\n } else if (char === '<') {\n startNewTag();\n } else {\n // stay in the Doctype state\n }\n }\n /**\n * Resets the state back to the Data state, and removes the current tag.\n *\n * We'll generally run this function whenever a \"parse error\" is\n * encountered, where the current tag that is being read no longer looks\n * like a real HTML tag.\n */\n function resetToDataState() {\n state = 0 /* Data */;\n currentTag = noCurrentTag;\n }\n /**\n * Starts a new HTML tag at the current index, ignoring any previous HTML\n * tag that was being read.\n *\n * We'll generally run this function whenever we read a new '<' character,\n * including when we read a '<' character inside of an HTML tag that we were\n * previously reading.\n */\n function startNewTag() {\n state = 1 /* TagOpen */;\n currentTag = new CurrentTag({\n idx: charIdx\n });\n }\n /**\n * Once we've decided to emit an open tag, that means we can also emit the\n * text node before it.\n */\n function emitTagAndPreviousTextNode() {\n var textBeforeTag = html.slice(currentDataIdx, currentTag.idx);\n if (textBeforeTag) {\n // the html tag was the first element in the html string, or two\n // tags next to each other, in which case we should not emit a text\n // node\n onText(textBeforeTag, currentDataIdx);\n }\n if (currentTag.type === 'comment') {\n onComment(currentTag.idx);\n } else if (currentTag.type === 'doctype') {\n onDoctype(currentTag.idx);\n } else {\n if (currentTag.isOpening) {\n onOpenTag(currentTag.name, currentTag.idx);\n }\n if (currentTag.isClosing) {\n // note: self-closing tags will emit both opening and closing\n onCloseTag(currentTag.name, currentTag.idx);\n }\n }\n // Since we just emitted a tag, reset to the data state for the next char\n resetToDataState();\n currentDataIdx = charIdx + 1;\n }\n function emitText() {\n var text = html.slice(currentDataIdx, charIdx);\n onText(text, currentDataIdx);\n currentDataIdx = charIdx + 1;\n }\n /**\n * Captures the tag name from the start of the tag to the current character\n * index, and converts it to lower case\n */\n function captureTagName() {\n var startIdx = currentTag.idx + (currentTag.isClosing ? 2 : 1);\n return html.slice(startIdx, charIdx).toLowerCase();\n }\n /**\n * Causes the main loop to re-consume the current character, such as after\n * encountering a \"parse error\" that changed state and needs to reconsume\n * the same character in that new state.\n */\n function reconsumeCurrentCharacter() {\n charIdx--;\n }\n}\nvar CurrentTag = /** @class */function () {\n function CurrentTag(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n this.idx = cfg.idx !== undefined ? cfg.idx : -1;\n this.type = cfg.type || 'tag';\n this.name = cfg.name || '';\n this.isOpening = !!cfg.isOpening;\n this.isClosing = !!cfg.isClosing;\n }\n return CurrentTag;\n}();\n","import { version } from './version';\nimport { defaults, isBoolean, removeWithPredicate } from './utils';\nimport { AnchorTagBuilder } from './anchor-tag-builder';\nimport { HtmlTag } from './html-tag';\nimport { parseMatches } from './parser/parse-matches';\nimport { parseHtml } from './htmlParser/parse-html';\nimport { mentionServices } from './parser/mention-utils';\nimport { hashtagServices } from './parser/hashtag-utils';\n/**\n * @class Autolinker\n * @extends Object\n *\n * Utility class used to process a given string of text, and wrap the matches in\n * the appropriate anchor (<a>) tags to turn them into links.\n *\n * Any of the configuration options may be provided in an Object provided\n * to the Autolinker constructor, which will configure how the {@link #link link()}\n * method will process the links.\n *\n * For example:\n *\n * var autolinker = new Autolinker( {\n * newWindow : false,\n * truncate : 30\n * } );\n *\n * var html = autolinker.link( \"Joe went to www.yahoo.com\" );\n * // produces: 'Joe went to <a href=\"http://www.yahoo.com\">yahoo.com</a>'\n *\n *\n * The {@link #static-link static link()} method may also be used to inline\n * options into a single call, which may be more convenient for one-off uses.\n * For example:\n *\n * var html = Autolinker.link( \"Joe went to www.yahoo.com\", {\n * newWindow : false,\n * truncate : 30\n * } );\n * // produces: 'Joe went to <a href=\"http://www.yahoo.com\">yahoo.com</a>'\n *\n *\n * ## Custom Replacements of Links\n *\n * If the configuration options do not provide enough flexibility, a {@link #replaceFn}\n * may be provided to fully customize the output of Autolinker. This function is\n * called once for each URL/Email/Phone#/Hashtag/Mention (Twitter, Instagram, Soundcloud)\n * match that is encountered.\n *\n * For example:\n *\n * var input = \"...\"; // string with URLs, Email Addresses, Phone #s, Hashtags, and Mentions (Twitter, Instagram, Soundcloud)\n *\n * var linkedText = Autolinker.link( input, {\n * replaceFn : function( match ) {\n * console.log( \"href = \", match.getAnchorHref() );\n * console.log( \"text = \", match.getAnchorText() );\n *\n * switch( match.getType() ) {\n * case 'url' :\n * console.log( \"url: \", match.getUrl() );\n *\n * if( match.getUrl().indexOf( 'mysite.com' ) === -1 ) {\n * var tag = match.buildTag(); // returns an `Autolinker.HtmlTag` instance, which provides mutator methods for easy changes\n * tag.setAttr( 'rel', 'nofollow' );\n * tag.addClass( 'external-link' );\n *\n * return tag;\n *\n * } else {\n * return true; // let Autolinker perform its normal anchor tag replacement\n * }\n *\n * case 'email' :\n * var email = match.getEmail();\n * console.log( \"email: \", email );\n *\n * if( email === \"my@own.address\" ) {\n * return false; // don't auto-link this particular email address; leave as-is\n * } else {\n * return; // no return value will have Autolinker perform its normal anchor tag replacement (same as returning `true`)\n * }\n *\n * case 'phone' :\n * var phoneNumber = match.getPhoneNumber();\n * console.log( phoneNumber );\n *\n * return '<a href=\"http://newplace.to.link.phone.numbers.to/\">' + phoneNumber + '</a>';\n *\n * case 'hashtag' :\n * var hashtag = match.getHashtag();\n * console.log( hashtag );\n *\n * return '<a href=\"http://newplace.to.link.hashtag.handles.to/\">' + hashtag + '</a>';\n *\n * case 'mention' :\n * var mention = match.getMention();\n * console.log( mention );\n *\n * return '<a href=\"http://newplace.to.link.mention.to/\">' + mention + '</a>';\n * }\n * }\n * } );\n *\n *\n * The function may return the following values:\n *\n * - `true` (Boolean): Allow Autolinker to replace the match as it normally\n * would.\n * - `false` (Boolean): Do not replace the current match at all - leave as-is.\n * - Any String: If a string is returned from the function, the string will be\n * used directly as the replacement HTML for the match.\n * - An {@link Autolinker.HtmlTag} instance, which can be used to build/modify\n * an HTML tag before writing out its HTML text.\n */\nvar Autolinker = /** @class */function () {\n /**\n * @method constructor\n * @param {Object} [cfg] The configuration options for the Autolinker instance,\n * specified in an Object (map).\n */\n function Autolinker(cfg) {\n if (cfg === void 0) {\n cfg = {};\n }\n /**\n * The Autolinker version number exposed on the instance itself.\n *\n * Ex: 0.25.1\n *\n * @property {String} version\n */\n this.version = Autolinker.version;\n /**\n * @cfg {Boolean/Object} [urls]\n *\n * `true` if URLs should be automatically linked, `false` if they should not\n * be. Defaults to `true`.\n *\n * Examples:\n *\n * urls: true\n *\n * // or\n *\n * urls: {\n * schemeMatches : true,\n * tldMatches : true,\n * ipV4Matches : true\n * }\n *\n * As shown above, this option also accepts an Object form with 3 properties\n * to allow for more customization of what exactly gets linked. All default\n * to `true`:\n *\n * @cfg {Boolean} [urls.schemeMatches] `true` to match URLs found prefixed\n * with a scheme, i.e. `http://google.com`, or `other+scheme://google.com`,\n * `false` to prevent these types of matches.\n * @cfg {Boolean} [urls.tldMatches] `true` to match URLs with known top\n * level domains (.com, .net, etc.) that are not prefixed with a scheme\n * (such as 'http://'). This option attempts to match anything that looks\n * like a URL in the given text. Ex: `google.com`, `asdf.org/?page=1`, etc.\n * `false` to prevent these types of matches.\n * @cfg {Boolean} [urls.ipV4Matches] `true` to match IPv4 addresses in text\n * that are not prefixed with a scheme (such as 'http://'). This option\n * attempts to match anything that looks like an IPv4 address in text. Ex:\n * `192.168.0.1`, `10.0.0.1/?page=1`, etc. `false` to prevent these types\n * of matches.\n */\n this.urls = {}; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [email=true]\n *\n * `true` if email addresses should be automatically linked, `false` if they\n * should not be.\n */\n this.email = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [phone=true]\n *\n * `true` if Phone numbers (\"(555)555-5555\") should be automatically linked,\n * `false` if they should not be.\n */\n this.phone = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean/String} [hashtag=false]\n *\n * A string for the service name to have hashtags (ex: \"#myHashtag\")\n * auto-linked to. The currently-supported values are:\n *\n * - 'twitter'\n * - 'facebook'\n * - 'instagram'\n *\n * Pass `false` to skip auto-linking of hashtags.\n */\n this.hashtag = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String/Boolean} [mention=false]\n *\n * A string for the service name to have mentions (ex: \"@myuser\")\n * auto-linked to. The currently supported values are:\n *\n * - 'twitter'\n * - 'instagram'\n * - 'soundcloud'\n * - 'tiktok'\n *\n * Defaults to `false` to skip auto-linking of mentions.\n */\n this.mention = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [newWindow=true]\n *\n * `true` if the links should open in a new window, `false` otherwise.\n */\n this.newWindow = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean/Object} [stripPrefix=true]\n *\n * `true` if 'http://' (or 'https://') and/or the 'www.' should be stripped\n * from the beginning of URL links' text, `false` otherwise. Defaults to\n * `true`.\n *\n * Examples:\n *\n * stripPrefix: true\n *\n * // or\n *\n * stripPrefix: {\n * scheme : true,\n * www : true\n * }\n *\n * As shown above, this option also accepts an Object form with 2 properties\n * to allow for more customization of what exactly is prevented from being\n * displayed. Both default to `true`:\n *\n * @cfg {Boolean} [stripPrefix.scheme] `true` to prevent the scheme part of\n * a URL match from being displayed to the user. Example:\n * `'http://google.com'` will be displayed as `'google.com'`. `false` to\n * not strip the scheme. NOTE: Only an `'http://'` or `'https://'` scheme\n * will be removed, so as not to remove a potentially dangerous scheme\n * (such as `'file://'` or `'javascript:'`)\n * @cfg {Boolean} [stripPrefix.www] www (Boolean): `true` to prevent the\n * `'www.'` part of a URL match from being displayed to the user. Ex:\n * `'www.google.com'` will be displayed as `'google.com'`. `false` to not\n * strip the `'www'`.\n */\n this.stripPrefix = {\n scheme: true,\n www: true\n }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [stripTrailingSlash=true]\n *\n * `true` to remove the trailing slash from URL matches, `false` to keep\n * the trailing slash.\n *\n * Example when `true`: `http://google.com/` will be displayed as\n * `http://google.com`.\n */\n this.stripTrailingSlash = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [decodePercentEncoding=true]\n *\n * `true` to decode percent-encoded characters in URL matches, `false` to keep\n * the percent-encoded characters.\n *\n * Example when `true`: `https://en.wikipedia.org/wiki/San_Jos%C3%A9` will\n * be displayed as `https://en.wikipedia.org/wiki/San_José`.\n */\n this.decodePercentEncoding = true; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Number/Object} [truncate=0]\n *\n * ## Number Form\n *\n * A number for how many characters matched text should be truncated to\n * inside the text of a link. If the matched text is over this number of\n * characters, it will be truncated to this length by adding a two period\n * ellipsis ('..') to the end of the string.\n *\n * For example: A url like 'http://www.yahoo.com/some/long/path/to/a/file'\n * truncated to 25 characters might look something like this:\n * 'yahoo.com/some/long/pat..'\n *\n * Example Usage:\n *\n * truncate: 25\n *\n *\n * Defaults to `0` for \"no truncation.\"\n *\n *\n * ## Object Form\n *\n * An Object may also be provided with two properties: `length` (Number) and\n * `location` (String). `location` may be one of the following: 'end'\n * (default), 'middle', or 'smart'.\n *\n * Example Usage:\n *\n * truncate: { length: 25, location: 'middle' }\n *\n * @cfg {Number} [truncate.length=0] How many characters to allow before\n * truncation will occur. Defaults to `0` for \"no truncation.\"\n * @cfg {\"end\"/\"middle\"/\"smart\"} [truncate.location=\"end\"]\n *\n * - 'end' (default): will truncate up to the number of characters, and then\n * add an ellipsis at the end. Ex: 'yahoo.com/some/long/pat..'\n * - 'middle': will truncate and add the ellipsis in the middle. Ex:\n * 'yahoo.com/s..th/to/a/file'\n * - 'smart': for URLs where the algorithm attempts to strip out unnecessary\n * parts first (such as the 'www.', then URL scheme, hash, etc.),\n * attempting to make the URL human-readable before looking for a good\n * point to insert the ellipsis if it is still too long. Ex:\n * 'yahoo.com/some..to/a/file'. For more details, see\n * {@link Autolinker.truncate.TruncateSmart}.\n */\n this.truncate = {\n length: 0,\n location: 'end'\n }; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {String} className\n *\n * A CSS class name to add to the generated links. This class will be added\n * to all links, as well as this class plus match suffixes for styling\n * url/email/phone/hashtag/mention links differently.\n *\n * For example, if this config is provided as \"myLink\", then:\n *\n * - URL links will have the CSS classes: \"myLink myLink-url\"\n * - Email links will have the CSS classes: \"myLink myLink-email\", and\n * - Phone links will have the CSS classes: \"myLink myLink-phone\"\n * - Hashtag links will have the CSS classes: \"myLink myLink-hashtag\"\n * - Mention links will have the CSS classes: \"myLink myLink-mention myLink-[type]\"\n * where [type] is either \"instagram\", \"twitter\" or \"soundcloud\"\n */\n this.className = ''; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Function} replaceFn\n *\n * A function to individually process each match found in the input string.\n *\n * See the class's description for usage.\n *\n * The `replaceFn` can be called with a different context object (`this`\n * reference) using the {@link #context} cfg.\n *\n * This function is called with the following parameter:\n *\n * @cfg {Autolinker.match.Match} replaceFn.match The Match instance which\n * can be used to retrieve information about the match that the `replaceFn`\n * is currently processing. See {@link Autolinker.match.Match} subclasses\n * for details.\n */\n this.replaceFn = null; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Object} context\n *\n * The context object (`this` reference) to call the `replaceFn` with.\n *\n * Defaults to this Autolinker instance.\n */\n this.context = undefined; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @cfg {Boolean} [sanitizeHtml=false]\n *\n * `true` to HTML-encode the start and end brackets of existing HTML tags found\n * in the input string. This will escape `<` and `>` characters to `<` and\n * `>`, respectively.\n *\n * Setting this to `true` will prevent XSS (Cross-site Scripting) attacks,\n * but will remove the significance of existing HTML tags in the input string. If\n * you would like to maintain the significance of existing HTML tags while also\n * making the output HTML string safe, leave this option as `false` and use a\n * tool like https://github.com/cure53/DOMPurify (or others) on the input string\n * before running Autolinker.\n */\n this.sanitizeHtml = false; // default value just to get the above doc comment in the ES5 output and documentation generator\n /**\n * @private\n * @property {Autolinker.AnchorTagBuilder} tagBuilder\n *\n * The AnchorTagBuilder instance used to build match replacement anchor tags.\n * Note: this is lazily instantiated in the {@link #getTagBuilder} method.\n */\n this.tagBuilder = null;\n // Note: when `this.something` is used in the rhs of these assignments,\n // it refers to the default values set above the constructor\n this.urls = normalizeUrlsCfg(cfg.urls);\n this.email = isBoolean(cfg.email) ? cfg.email : this.email;\n this.phone = isBoolean(cfg.phone) ? cfg.phone : this.phone;\n this.hashtag = cfg.hashtag || this.hashtag;\n this.mention = cfg.mention || this.mention;\n this.newWindow = isBoolean(cfg.newWindow) ? cfg.newWindow : this.newWindow;\n this.stripPrefix = normalizeStripPrefixCfg(cfg.stripPrefix);\n this.stripTrailingSlash = isBoolean(cfg.stripTrailingSlash) ? cfg.stripTrailingSlash : this.stripTrailingSlash;\n this.decodePercentEncoding = isBoolean(cfg.decodePercentEncoding) ? cfg.decodePercentEncoding : this.decodePercentEncoding;\n this.sanitizeHtml = cfg.sanitizeHtml || false;\n // Validate the value of the `mention` cfg\n var mention = this.mention;\n if (mention !== false && mentionServices.indexOf(mention) === -1) {\n throw new Error(\"invalid `mention` cfg '\".concat(mention, \"' - see docs\"));\n }\n // Validate the value of the `hashtag` cfg\n var hashtag = this.hashtag;\n if (hashtag !== false && hashtagServices.indexOf(hashtag) === -1) {\n throw new Error(\"invalid `hashtag` cfg '\".concat(hashtag, \"' - see docs\"));\n }\n this.truncate = normalizeTruncateCfg(cfg.truncate);\n this.className = cfg.className || this.className;\n this.replaceFn = cfg.replaceFn || this.replaceFn;\n this.context = cfg.context || this;\n }\n /**\n * Automatically links URLs, Email addresses, Phone Numbers, Twitter handles,\n * Hashtags, and Mentions found in the given chunk of HTML. Does not link URLs\n * found within HTML tags.\n *\n * For instance, if given the text: `You should go to http://www.yahoo.com`,\n * then the result will be `You should go to <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\n *\n * Example:\n *\n * var linkedText = Autolinker.link( \"Go to google.com\", { newWindow: false } );\n * // Produces: \"Go to <a href=\"http://google.com\">google.com</a>\"\n *\n * @static\n * @param {String} textOrHtml The HTML or text to find matches within (depending\n * on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #mention},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker\n * class, specified in an Object (map). See the class description for an\n * example call.\n * @return {String} The HTML text, with matches automatically linked.\n */\n Autolinker.link = function (textOrHtml, options) {\n var autolinker = new Autolinker(options);\n return autolinker.link(textOrHtml);\n };\n /**\n * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches (without making any replacements).\n *\n * Note that if parsing multiple pieces of text, it is slightly more efficient\n * to create an Autolinker instance, and use the instance-level {@link #parse}\n * method.\n *\n * Example:\n *\n * var matches = Autolinker.parse( \"Hello google.com, I am asdf@asdf.com\", {\n * urls: true,\n * email: true\n * } );\n *\n * console.log( matches.length ); // 2\n * console.log( matches[ 0 ].getType() ); // 'url'\n * console.log( matches[ 0 ].getUrl() ); // 'google.com'\n * console.log( matches[ 1 ].getType() ); // 'email'\n * console.log( matches[ 1 ].getEmail() ); // 'asdf@asdf.com'\n *\n * @static\n * @param {String} textOrHtml The HTML or text to find matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @param {Object} [options] Any of the configuration options for the Autolinker\n * class, specified in an Object (map). See the class description for an\n * example call.\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `textOrHtml`.\n */\n Autolinker.parse = function (textOrHtml, options) {\n var autolinker = new Autolinker(options);\n return autolinker.parse(textOrHtml);\n };\n /**\n * Parses the input `textOrHtml` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches (without making any replacements).\n *\n * This method is used by the {@link #link} method, but can also be used to\n * simply do parsing of the input in order to discover what kinds of links\n * there are and how many.\n *\n * Example usage:\n *\n * var autolinker = new Autolinker( {\n * urls: true,\n * email: true\n * } );\n *\n * var matches = autolinker.parse( \"Hello google.com, I am asdf@asdf.com\" );\n *\n * console.log( matches.length ); // 2\n * console.log( matches[ 0 ].getType() ); // 'url'\n * console.log( matches[ 0 ].getUrl() ); // 'google.com'\n * console.log( matches[ 1 ].getType() ); // 'email'\n * console.log( matches[ 1 ].getEmail() ); // 'asdf@asdf.com'\n *\n * @param {String} textOrHtml The HTML or text to find matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled).\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `textOrHtml`.\n */\n Autolinker.prototype.parse = function (textOrHtml) {\n var _this = this;\n var skipTagNames = ['a', 'style', 'script'],\n skipTagsStackCount = 0,\n // used to only Autolink text outside of anchor/script/style tags. We don't want to autolink something that is already linked inside of an <a> tag, for instance\n matches = [];\n // Find all matches within the `textOrHtml` (but not matches that are\n // already nested within <a>, <style> and <script> tags)\n parseHtml(textOrHtml, {\n onOpenTag: function (tagName) {\n if (skipTagNames.indexOf(tagName) >= 0) {\n skipTagsStackCount++;\n }\n },\n onText: function (text, offset) {\n // Only process text nodes that are not within an <a>, <style> or <script> tag\n if (skipTagsStackCount === 0) {\n // \"Walk around\" common HTML entities. An ' ' (for example)\n // could be at the end of a URL, but we don't want to\n // include the trailing '&' in the URL. See issue #76\n // TODO: Handle HTML entities separately in parseHtml() and\n // don't emit them as \"text\" except for & entities\n var htmlCharacterEntitiesRegex = /( | |<|<|>|>|"|"|')/gi; // NOTE: capturing group is significant to include the split characters in the .split() call below\n var textSplit = text.split(htmlCharacterEntitiesRegex);\n var currentOffset_1 = offset;\n textSplit.forEach(function (splitText, i) {\n // even number matches are text, odd numbers are html entities\n if (i % 2 === 0) {\n var textNodeMatches = _this.parseText(splitText, currentOffset_1);\n matches.push.apply(matches, textNodeMatches);\n }\n currentOffset_1 += splitText.length;\n });\n }\n },\n onCloseTag: function (tagName) {\n if (skipTagNames.indexOf(tagName) >= 0) {\n skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0); // attempt to handle extraneous </a> tags by making sure the stack count never goes below 0\n }\n },\n onComment: function (_offset) {},\n onDoctype: function (_offset) {} // no need to process doctype nodes\n });\n // After we have found all matches, remove subsequent matches that\n // overlap with a previous match. This can happen for instance with URLs,\n // where the url 'google.com/#link' would match '#link' as a hashtag.\n matches = this.compactMatches(matches);\n // And finally, remove matches for match types that have been turned\n // off. We needed to have all match types turned on initially so that\n // things like hashtags could be filtered out if they were really just\n // part of a URL match (for instance, as a named anchor).\n matches = this.removeUnwantedMatches(matches);\n return matches;\n };\n /**\n * After we have found all matches, we need to remove matches that overlap\n * with a previous match. This can happen for instance with URLs, where the\n * url 'google.com/#link' would match '#link' as a hashtag. Because the\n * '#link' part is contained in a larger match that comes before the HashTag\n * match, we'll remove the HashTag match.\n *\n * @private\n * @param {Autolinker.match.Match[]} matches\n * @return {Autolinker.match.Match[]}\n */\n Autolinker.prototype.compactMatches = function (matches) {\n // First, the matches need to be sorted in order of offset\n matches.sort(function (a, b) {\n return a.getOffset() - b.getOffset();\n });\n var i = 0;\n while (i < matches.length - 1) {\n var match = matches[i],\n offset = match.getOffset(),\n matchedTextLength = match.getMatchedText().length,\n endIdx = offset + matchedTextLength;\n if (i + 1 < matches.length) {\n // Remove subsequent matches that equal offset with current match\n if (matches[i + 1].getOffset() === offset) {\n var removeIdx = matches[i + 1].getMatchedText().length > matchedTextLength ? i : i + 1;\n matches.splice(removeIdx, 1);\n continue;\n }\n // Remove subsequent matches that overlap with the current match\n if (matches[i + 1].getOffset() < endIdx) {\n matches.splice(i + 1, 1);\n continue;\n }\n }\n i++;\n }\n return matches;\n };\n /**\n * Removes matches for matchers that were turned off in the options. For\n * example, if {@link #hashtag hashtags} were not to be matched, we'll\n * remove them from the `matches` array here.\n *\n * Note: we *must* use all Matchers on the input string, and then filter\n * them out later. For example, if the options were `{ url: false, hashtag: true }`,\n * we wouldn't want to match the text '#link' as a HashTag inside of the text\n * 'google.com/#link'. The way the algorithm works is that we match the full\n * URL first (which prevents the accidental HashTag match), and then we'll\n * simply throw away the URL match.\n *\n * @private\n * @param {Autolinker.match.Match[]} matches The array of matches to remove\n * the unwanted matches from. Note: this array is mutated for the\n * removals.\n * @return {Autolinker.match.Match[]} The mutated input `matches` array.\n */\n Autolinker.prototype.removeUnwantedMatches = function (matches) {\n if (!this.hashtag) removeWithPredicate(matches, function (match) {\n return match.getType() === 'hashtag';\n });\n if (!this.email) removeWithPredicate(matches, function (match) {\n return match.getType() === 'email';\n });\n if (!this.phone) removeWithPredicate(matches, function (match) {\n return match.getType() === 'phone';\n });\n if (!this.mention) removeWithPredicate(matches, function (match) {\n return match.getType() === 'mention';\n });\n if (!this.urls.schemeMatches) {\n removeWithPredicate(matches, function (m) {\n return m.getType() === 'url' && m.getUrlMatchType() === 'scheme';\n });\n }\n if (!this.urls.tldMatches) {\n removeWithPredicate(matches, function (m) {\n return m.getType() === 'url' && m.getUrlMatchType() === 'tld';\n });\n }\n if (!this.urls.ipV4Matches) {\n removeWithPredicate(matches, function (m) {\n return m.getType() === 'url' && m.getUrlMatchType() === 'ipV4';\n });\n }\n return matches;\n };\n /**\n * Parses the input `text` looking for URLs, email addresses, phone\n * numbers, username handles, and hashtags (depending on the configuration\n * of the Autolinker instance), and returns an array of {@link Autolinker.match.Match}\n * objects describing those matches.\n *\n * This method processes a **non-HTML string**, and is used to parse and\n * match within the text nodes of an HTML string. This method is used\n * internally by {@link #parse}.\n *\n * @private\n * @param {String} text The text to find matches within (depending on if the\n * {@link #urls}, {@link #email}, {@link #phone},\n * {@link #hashtag}, and {@link #mention} options are enabled). This must be a non-HTML string.\n * @param {Number} [offset=0] The offset of the text node within the\n * original string. This is used when parsing with the {@link #parse}\n * method to generate correct offsets within the {@link Autolinker.match.Match}\n * instances, but may be omitted if calling this method publicly.\n * @return {Autolinker.match.Match[]} The array of Matches found in the\n * given input `text`.\n */\n Autolinker.prototype.parseText = function (text, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n offset = offset || 0;\n var matches = parseMatches(text, {\n tagBuilder: this.getTagBuilder(),\n stripPrefix: this.stripPrefix,\n stripTrailingSlash: this.stripTrailingSlash,\n decodePercentEncoding: this.decodePercentEncoding,\n hashtagServiceName: this.hashtag,\n mentionServiceName: this.mention || 'twitter'\n });\n // Correct the offset of each of the matches. They are originally\n // the offset of the match within the provided text node, but we\n // need to correct them to be relative to the original HTML input\n // string (i.e. the one provided to #parse).\n for (var i = 0, numTextMatches = matches.length; i < numTextMatches; i++) {\n matches[i].setOffset(offset + matches[i].getOffset());\n }\n return matches;\n };\n /**\n * Automatically links URLs, Email addresses, Phone numbers, Hashtags,\n * and Mentions (Twitter, Instagram, Soundcloud) found in the given chunk of HTML. Does not link\n * URLs found within HTML tags.\n *\n * For instance, if given the text: `You should go to http://www.yahoo.com`,\n * then the result will be `You should go to\n * <a href=\"http://www.yahoo.com\">http://www.yahoo.com</a>`\n *\n * This method finds the text around any HTML elements in the input\n * `textOrHtml`, which will be the text that is processed. Any original HTML\n * elements will be left as-is, as well as the text that is already wrapped\n * in anchor (<a>) tags.\n *\n * @param {String} textOrHtml The HTML or text to autolink matches within\n * (depending on if the {@link #urls}, {@link #email}, {@link #phone}, {@link #hashtag}, and {@link #mention} options are enabled).\n * @return {String} The HTML, with matches automatically linked.\n */\n Autolinker.prototype.link = function (textOrHtml) {\n if (!textOrHtml) {\n return '';\n } // handle `null` and `undefined` (for JavaScript users that don't have TypeScript support)\n /* We would want to sanitize the start and end characters of a tag\n * before processing the string in order to avoid an XSS scenario.\n * This behaviour can be changed by toggling the sanitizeHtml option.\n */\n if (this.sanitizeHtml) {\n textOrHtml = textOrHtml.replace(/</g, '<').replace(/>/g, '>');\n }\n var matches = this.parse(textOrHtml),\n newHtml = [],\n lastIndex = 0;\n for (var i = 0, len = matches.length; i < len; i++) {\n var match = matches[i];\n newHtml.push(textOrHtml.substring(lastIndex, match.getOffset()));\n newHtml.push(this.createMatchReturnVal(match));\n lastIndex = match.getOffset() + match.getMatchedText().length;\n }\n newHtml.push(textOrHtml.substring(lastIndex)); // handle the text after the last match\n return newHtml.join('');\n };\n /**\n * Creates the return string value for a given match in the input string.\n *\n * This method handles the {@link #replaceFn}, if one was provided.\n *\n * @private\n * @param {Autolinker.match.Match} match The Match object that represents\n * the match.\n * @return {String} The string that the `match` should be replaced with.\n * This is usually the anchor tag string, but may be the `matchStr` itself\n * if the match is not to be replaced.\n */\n Autolinker.prototype.createMatchReturnVal = function (match) {\n // Handle a custom `replaceFn` being provided\n var replaceFnResult;\n if (this.replaceFn) {\n replaceFnResult = this.replaceFn.call(this.context, match); // Autolinker instance is the context\n }\n if (typeof replaceFnResult === 'string') {\n return replaceFnResult; // `replaceFn` returned a string, use that\n } else if (replaceFnResult === false) {\n return match.getMatchedText(); // no replacement for the match\n } else if (replaceFnResult instanceof HtmlTag) {\n return replaceFnResult.toAnchorString();\n } else {\n // replaceFnResult === true, or no/unknown return value from function\n // Perform Autolinker's default anchor tag generation\n var anchorTag = match.buildTag(); // returns an Autolinker.HtmlTag instance\n return anchorTag.toAnchorString();\n }\n };\n /**\n * Returns the {@link #tagBuilder} instance for this Autolinker instance,\n * lazily instantiating it if it does not yet exist.\n *\n * @private\n * @return {Autolinker.AnchorTagBuilder}\n */\n Autolinker.prototype.getTagBuilder = function () {\n var tagBuilder = this.tagBuilder;\n if (!tagBuilder) {\n tagBuilder = this.tagBuilder = new AnchorTagBuilder({\n newWindow: this.newWindow,\n truncate: this.truncate,\n className: this.className\n });\n }\n return tagBuilder;\n };\n // NOTE: must be 'export default' here for UMD module\n /**\n * @static\n * @property {String} version\n *\n * The Autolinker version number in the form major.minor.patch\n *\n * Ex: 3.15.0\n */\n Autolinker.version = version;\n return Autolinker;\n}();\nexport default Autolinker;\n/**\n * Normalizes the {@link #urls} config into an Object with its 2 properties:\n * `schemeMatches` and `tldMatches`, both booleans.\n *\n * See {@link #urls} config for details.\n *\n * @private\n * @param {Boolean/Object} urls\n * @return {Object}\n */\nfunction normalizeUrlsCfg(urls) {\n if (urls == null) urls = true; // default to `true`\n if (isBoolean(urls)) {\n return {\n schemeMatches: urls,\n tldMatches: urls,\n ipV4Matches: urls\n };\n } else {\n // object form\n return {\n schemeMatches: isBoolean(urls.schemeMatches) ? urls.schemeMatches : true,\n tldMatches: isBoolean(urls.tldMatches) ? urls.tldMatches : true,\n ipV4Matches: isBoolean(urls.ipV4Matches) ? urls.ipV4Matches : true\n };\n }\n}\n/**\n * Normalizes the {@link #stripPrefix} config into an Object with 2\n * properties: `scheme`, and `www` - both Booleans.\n *\n * See {@link #stripPrefix} config for details.\n *\n * @private\n * @param {Boolean/Object} stripPrefix\n * @return {Object}\n */\nfunction normalizeStripPrefixCfg(stripPrefix) {\n if (stripPrefix == null) stripPrefix = true; // default to `true`\n if (isBoolean(stripPrefix)) {\n return {\n scheme: stripPrefix,\n www: stripPrefix\n };\n } else {\n // object form\n return {\n scheme: isBoolean(stripPrefix.scheme) ? stripPrefix.scheme : true,\n www: isBoolean(stripPrefix.www) ? stripPrefix.www : true\n };\n }\n}\n/**\n * Normalizes the {@link #truncate} config into an Object with 2 properties:\n * `length` (Number), and `location` (String).\n *\n * See {@link #truncate} config for details.\n *\n * @private\n * @param {Number/Object} truncate\n * @return {Object}\n */\nfunction normalizeTruncateCfg(truncate) {\n if (typeof truncate === 'number') {\n return {\n length: truncate,\n location: 'end'\n };\n } else {\n // object, or undefined/null\n return defaults(truncate || {}, {\n length: Number.POSITIVE_INFINITY,\n location: 'end'\n });\n }\n}\n","export {};\n","export * from './match';\nexport * from './email-match';\nexport * from './hashtag-match';\nexport * from './abstract-match';\nexport * from './mention-match';\nexport * from './phone-match';\nexport * from './url-match';\n","export * from './parse-matches';\n","// WARNING: This file is modified a bit when it is compiled into index.js in\n// order to support nodejs interoperability with require('autolinker') directly.\n// This is done by the buildSrcFixCommonJsIndexTask() function in the gulpfile.\n// See that function for more details.\nimport Autolinker from './autolinker';\nexport default Autolinker;\nexport { Autolinker };\nexport * from './autolinker';\nexport * from './anchor-tag-builder';\nexport * from './html-tag';\nexport * from './match/index';\nexport * from './parser/index';\n","// This is a clone from this dead library:\n// https://github.com/dzonatan/ngx-linky\n\n/*\nAngular pipe to find links in text input and turn them into html links.\nIt was called the same \"linky\" in ngSanitize module of AngularJs (first). Since Angular does not have such pipe built in\nThis is just a wrapper for Autolinker.js so all issues and feature requests related to autolinker should go to their issues!\n*/\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport Autolinker, { AutolinkerConfig } from 'autolinker';\nimport { Replacer } from '../types';\n\n@Pipe({ name: 'linky', standalone: true })\nexport class LinkyPipe implements PipeTransform {\n transform(value: string, options?: AutolinkerConfig): string {\n const linked = Autolinker.link(value, options);\n const cleaned = cleanLinks(linked);\n return cleaned;\n }\n}\n\n// see link examples in the adjacent spec file\n\n/**\n * $1 attributes before href 1\n * $2 href 1\n * $3 attributes after href 1\n * $4 text 1\n * $5 attributes before href 2\n * $6 href 2\n * $7 attributes after href 2\n * $8 text 2\n */\nconst doubleLink: Replacer = {\n regex: /\\[<a ([^>]*)href=\"([^\"]+)\"([^>]*)>([^<]+)<\\/a>\\]\\(<a ([^>]*)href=\"([^\"]+)\"([^>]*)>([^<]+)<\\/a>\\)/g,\n replace: '<a href=\"$6\"$5$7>$4</a>',\n};\n\n/**\n * $1 attributes before href\n * $2 mangled href\n * $3 attributes after href\n * $4 shortened URL to be used as link text\n * $5 desired href\n */\nconst mangledLink: Replacer = {\n regex: /\\[<a ([^>]*)href=\"([^\"]+)\"([^>]*)>([^\\]]+)\\]\\(([^<]+)\\)<\\/a>/g,\n replace: '<a href=\"$5\"$1$3>$4</a>',\n};\n/**\n * ^ example of this type of mangled link\n * input:\n * [https://www.google.com/path/to/page](https://google.com/path/to/page)\n * linky output:\n * [<a href=\"https://www.google.com/path/to/page](https://google.com/path/to/page)\" target=\"_blank\" rel=\"noopener noreferrer\">google.com/path/to/page](https://google.com/path/to/page)</a>\n * desired output:\n * <a href=\"https://google.com/path/to/page\" target=\"_blank\" rel=\"noopener noreferrer\">google.com/path/to/page</a>\n */\n\n/**\n * $1 linked text\n * $2 attributes before href\n * $3 href\n * $4 attributes after href\n * $5 text after href\n */\nconst singleLink: Replacer = {\n regex: /\\[([^\\]]+)\\]\\(<a ([^>]*)href=\"([^\"]+)\"([^>]*)>([^<]+)<\\/a>\\)/g,\n replace: '<a href=\"$3\"$2$4>$1</a>',\n};\n\nfunction cleanLinks(linked: string): string {\n // loop through all replacers and apply them to the input string\n return [doubleLink, mangledLink, singleLink].reduce(\n (acc, replacer) => acc.replace(replacer.regex, replacer.replace),\n linked,\n );\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n/**\n * This will take a value and format it according to en-US locale. If truncate is set to true, values 1000 and up will\n * be abbreviated\n * @param value\n * @param truncate\n * @return formatted number\n */\n@Pipe({\n name: 'formatStat',\n standalone: true,\n})\nexport class FormatStatPipe implements PipeTransform {\n transform(value: number, truncate = false): string {\n return formatStatsNum(value, truncate);\n }\n}\n\nexport function formatStatsNum(value: number, truncate = false): string {\n if (truncate && value >= 1000) {\n let denominator = 1000;\n let suffix = 'k';\n\n if (value >= 1000000) {\n denominator = 1000000;\n suffix = 'm';\n }\n const truncated = Math.round((value / denominator) * 10) / 10;\n return truncated % 1 === 0 ? truncated.toFixed(0) + suffix : truncated.toFixed(1) + suffix;\n }\n return value.toLocaleString('en-US');\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Replacer } from '../types';\n\n@Pipe({ name: 'truncateUrl', standalone: true })\nexport class TruncateUrlPipe implements PipeTransform {\n transform(value: string): string {\n return value.replace(removeParam.regex, removeParam.replace).replace(shortenPath.regex, shortenPath.replace);\n }\n}\n\n/**\n * www.vendasta.com/adsf/vasc/qwerdsasd/?env=demo&widgetId=4efefad9-fa3b-4c83-bc4a-acc1be376269\n * $1 www.vendasta.com/adsf/vasc/qwerdsasd/\n * $2 ?env=demo&widgetId=4efefad9-fa3b-4c83-bc4a-acc1be376269\n */\nconst removeParam: Replacer = {\n regex: />([^<?]*\\/?)(\\?[^<]+)?<\\/a>/g,\n replace: '>$1</a>',\n};\n\n/**\n * https://www.vendasta.com/adsf/vasc/qwerdsasd/\n * $1 https://www.vendasta.com/\n * $2 https://\n * $3 https\n * $4 /adsf/vasc/\n * $5 /qwerdsasd\n */\nconst shortenPath: Replacer = {\n regex: />(((https|http):\\/\\/)?[^</?]+\\/)([^<?]+)?(\\/[^<?/]+)+\\/?<\\/a>/g,\n replace: '>$1...$5</a>',\n};\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { MarkdownService } from 'ngx-markdown';\n\n@Pipe({ name: 'glxyMarkdown', standalone: true })\nexport class GlxyMarkdownPipe implements PipeTransform {\n private markdownService = inject(MarkdownService);\n transform(message: string | null | undefined) {\n if (!message) {\n return '';\n }\n return this.markdownService.parse(message) as string;\n }\n}\n","import { CommonModule, TitleCasePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SentenceCasePipe } from './sentence-case/sentence-case.pipe';\nexport { SentenceCasePipe };\n\nimport { GalaxyAddressPipe } from './address/address.pipe';\nexport { GalaxyAddressPipe };\n\nimport { GlxyAsyncStatus, GalaxyAsyncStatusPipe } from './async-status/async-status.pipe';\nexport { GalaxyAsyncStatusPipe, GlxyAsyncStatus };\n\nimport { GalaxyCurrencyPipe } from './currency/currency.pipe';\nexport { GalaxyCurrencyPipe };\n\nimport { GalaxyDatePipe } from './date/date.pipe';\nexport { GalaxyDatePipe };\n\nimport { GalaxyOrdinalPipe } from './ordinal/ordinal.pipe';\nexport { GalaxyOrdinalPipe };\n\nimport { GalaxyITrustThisHtmlPipe } from './i-trust-this-html/i-trust-this-html.pipe';\nexport { GalaxyITrustThisHtmlPipe };\n\nimport { LinkyPipe } from './linky/linky.pipe';\nexport { LinkyPipe };\n\nimport { FormatStatPipe } from './format-stat/format-stat.pipe';\nexport { FormatStatPipe };\n\nimport { TruncateUrlPipe } from './truncate-url/truncate-url.pipe';\nexport { TruncateUrlPipe };\n\nimport { GlxyMarkdownPipe } from './markdown/markdown.pipe';\nexport { GlxyMarkdownPipe };\n\nimport { EscapeHtmlPipe } from './escape-html/escape-html.pipe';\nexport { EscapeHtmlPipe };\n\n@NgModule({\n providers: [TitleCasePipe],\n imports: [CommonModule, LinkyPipe, TruncateUrlPipe, GlxyMarkdownPipe, EscapeHtmlPipe],\n declarations: [\n GalaxyDatePipe,\n GalaxyOrdinalPipe,\n GalaxyCurrencyPipe,\n GalaxyAddressPipe,\n GalaxyITrustThisHtmlPipe,\n GalaxyAsyncStatusPipe,\n ],\n exports: [\n GalaxyDatePipe,\n GalaxyOrdinalPipe,\n GalaxyCurrencyPipe,\n GalaxyAddressPipe,\n GalaxyITrustThisHtmlPipe,\n GalaxyAsyncStatusPipe,\n LinkyPipe,\n TruncateUrlPipe,\n GlxyMarkdownPipe,\n EscapeHtmlPipe,\n ],\n})\nexport class GalaxyPipesModule {}\n","export * from './src/pipes.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\n \"version\": 4,\n \"country_calling_codes\": {\n \"1\": [\"US\", \"AG\", \"AI\", \"AS\", \"BB\", \"BM\", \"BS\", \"CA\", \"DM\", \"DO\", \"GD\", \"GU\", \"JM\", \"KN\", \"KY\", \"LC\", \"MP\", \"MS\", \"PR\", \"SX\", \"TC\", \"TT\", \"VC\", \"VG\", \"VI\"],\n \"7\": [\"RU\", \"KZ\"],\n \"20\": [\"EG\"],\n \"27\": [\"ZA\"],\n \"30\": [\"GR\"],\n \"31\": [\"NL\"],\n \"32\": [\"BE\"],\n \"33\": [\"FR\"],\n \"34\": [\"ES\"],\n \"36\": [\"HU\"],\n \"39\": [\"IT\", \"VA\"],\n \"40\": [\"RO\"],\n \"41\": [\"CH\"],\n \"43\": [\"AT\"],\n \"44\": [\"GB\", \"GG\", \"IM\", \"JE\"],\n \"45\": [\"DK\"],\n \"46\": [\"SE\"],\n \"47\": [\"NO\", \"SJ\"],\n \"48\": [\"PL\"],\n \"49\": [\"DE\"],\n \"51\": [\"PE\"],\n \"52\": [\"MX\"],\n \"53\": [\"CU\"],\n \"54\": [\"AR\"],\n \"55\": [\"BR\"],\n \"56\": [\"CL\"],\n \"57\": [\"CO\"],\n \"58\": [\"VE\"],\n \"60\": [\"MY\"],\n \"61\": [\"AU\", \"CC\", \"CX\"],\n \"62\": [\"ID\"],\n \"63\": [\"PH\"],\n \"64\": [\"NZ\"],\n \"65\": [\"SG\"],\n \"66\": [\"TH\"],\n \"81\": [\"JP\"],\n \"82\": [\"KR\"],\n \"84\": [\"VN\"],\n \"86\": [\"CN\"],\n \"90\": [\"TR\"],\n \"91\": [\"IN\"],\n \"92\": [\"PK\"],\n \"93\": [\"AF\"],\n \"94\": [\"LK\"],\n \"95\": [\"MM\"],\n \"98\": [\"IR\"],\n \"211\": [\"SS\"],\n \"212\": [\"MA\", \"EH\"],\n \"213\": [\"DZ\"],\n \"216\": [\"TN\"],\n \"218\": [\"LY\"],\n \"220\": [\"GM\"],\n \"221\": [\"SN\"],\n \"222\": [\"MR\"],\n \"223\": [\"ML\"],\n \"224\": [\"GN\"],\n \"225\": [\"CI\"],\n \"226\": [\"BF\"],\n \"227\": [\"NE\"],\n \"228\": [\"TG\"],\n \"229\": [\"BJ\"],\n \"230\": [\"MU\"],\n \"231\": [\"LR\"],\n \"232\": [\"SL\"],\n \"233\": [\"GH\"],\n \"234\": [\"NG\"],\n \"235\": [\"TD\"],\n \"236\": [\"CF\"],\n \"237\": [\"CM\"],\n \"238\": [\"CV\"],\n \"239\": [\"ST\"],\n \"240\": [\"GQ\"],\n \"241\": [\"GA\"],\n \"242\": [\"CG\"],\n \"243\": [\"CD\"],\n \"244\": [\"AO\"],\n \"245\": [\"GW\"],\n \"246\": [\"IO\"],\n \"247\": [\"AC\"],\n \"248\": [\"SC\"],\n \"249\": [\"SD\"],\n \"250\": [\"RW\"],\n \"251\": [\"ET\"],\n \"252\": [\"SO\"],\n \"253\": [\"DJ\"],\n \"254\": [\"KE\"],\n \"255\": [\"TZ\"],\n \"256\": [\"UG\"],\n \"257\": [\"BI\"],\n \"258\": [\"MZ\"],\n \"260\": [\"ZM\"],\n \"261\": [\"MG\"],\n \"262\": [\"RE\", \"YT\"],\n \"263\": [\"ZW\"],\n \"264\": [\"NA\"],\n \"265\": [\"MW\"],\n \"266\": [\"LS\"],\n \"267\": [\"BW\"],\n \"268\": [\"SZ\"],\n \"269\": [\"KM\"],\n \"290\": [\"SH\", \"TA\"],\n \"291\": [\"ER\"],\n \"297\": [\"AW\"],\n \"298\": [\"FO\"],\n \"299\": [\"GL\"],\n \"350\": [\"GI\"],\n \"351\": [\"PT\"],\n \"352\": [\"LU\"],\n \"353\": [\"IE\"],\n \"354\": [\"IS\"],\n \"355\": [\"AL\"],\n \"356\": [\"MT\"],\n \"357\": [\"CY\"],\n \"358\": [\"FI\", \"AX\"],\n \"359\": [\"BG\"],\n \"370\": [\"LT\"],\n \"371\": [\"LV\"],\n \"372\": [\"EE\"],\n \"373\": [\"MD\"],\n \"374\": [\"AM\"],\n \"375\": [\"BY\"],\n \"376\": [\"AD\"],\n \"377\": [\"MC\"],\n \"378\": [\"SM\"],\n \"380\": [\"UA\"],\n \"381\": [\"RS\"],\n \"382\": [\"ME\"],\n \"383\": [\"XK\"],\n \"385\": [\"HR\"],\n \"386\": [\"SI\"],\n \"387\": [\"BA\"],\n \"389\": [\"MK\"],\n \"420\": [\"CZ\"],\n \"421\": [\"SK\"],\n \"423\": [\"LI\"],\n \"500\": [\"FK\"],\n \"501\": [\"BZ\"],\n \"502\": [\"GT\"],\n \"503\": [\"SV\"],\n \"504\": [\"HN\"],\n \"505\": [\"NI\"],\n \"506\": [\"CR\"],\n \"507\": [\"PA\"],\n \"508\": [\"PM\"],\n \"509\": [\"HT\"],\n \"590\": [\"GP\", \"BL\", \"MF\"],\n \"591\": [\"BO\"],\n \"592\": [\"GY\"],\n \"593\": [\"EC\"],\n \"594\": [\"GF\"],\n \"595\": [\"PY\"],\n \"596\": [\"MQ\"],\n \"597\": [\"SR\"],\n \"598\": [\"UY\"],\n \"599\": [\"CW\", \"BQ\"],\n \"670\": [\"TL\"],\n \"672\": [\"NF\"],\n \"673\": [\"BN\"],\n \"674\": [\"NR\"],\n \"675\": [\"PG\"],\n \"676\": [\"TO\"],\n \"677\": [\"SB\"],\n \"678\": [\"VU\"],\n \"679\": [\"FJ\"],\n \"680\": [\"PW\"],\n \"681\": [\"WF\"],\n \"682\": [\"CK\"],\n \"683\": [\"NU\"],\n \"685\": [\"WS\"],\n \"686\": [\"KI\"],\n \"687\": [\"NC\"],\n \"688\": [\"TV\"],\n \"689\": [\"PF\"],\n \"690\": [\"TK\"],\n \"691\": [\"FM\"],\n \"692\": [\"MH\"],\n \"850\": [\"KP\"],\n \"852\": [\"HK\"],\n \"853\": [\"MO\"],\n \"855\": [\"KH\"],\n \"856\": [\"LA\"],\n \"880\": [\"BD\"],\n \"886\": [\"TW\"],\n \"960\": [\"MV\"],\n \"961\": [\"LB\"],\n \"962\": [\"JO\"],\n \"963\": [\"SY\"],\n \"964\": [\"IQ\"],\n \"965\": [\"KW\"],\n \"966\": [\"SA\"],\n \"967\": [\"YE\"],\n \"968\": [\"OM\"],\n \"970\": [\"PS\"],\n \"971\": [\"AE\"],\n \"972\": [\"IL\"],\n \"973\": [\"BH\"],\n \"974\": [\"QA\"],\n \"975\": [\"BT\"],\n \"976\": [\"MN\"],\n \"977\": [\"NP\"],\n \"992\": [\"TJ\"],\n \"993\": [\"TM\"],\n \"994\": [\"AZ\"],\n \"995\": [\"GE\"],\n \"996\": [\"KG\"],\n \"998\": [\"UZ\"]\n },\n \"countries\": {\n \"AC\": [\"247\", \"00\", \"(?:[01589]\\\\d|[46])\\\\d{4}\", [5, 6]],\n \"AD\": [\"376\", \"00\", \"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\", [6, 8, 9], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"[135-9]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"1\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]]]],\n \"AE\": [\"971\", \"00\", \"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\", [5, 6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{2,9})\", \"$1 $2\", [\"60|8\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[236]|[479][2-8]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{5})\", \"$1 $2 $3\", [\"[479]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"]], \"0\"],\n \"AF\": [\"93\", \"00\", \"[2-7]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-7]\"], \"0$1\"]], \"0\"],\n \"AG\": [\"1\", \"011\", \"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([457]\\\\d{6})$|1\", \"268$1\", 0, \"268\"],\n \"AI\": [\"1\", \"011\", \"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2457]\\\\d{6})$|1\", \"264$1\", 0, \"264\"],\n \"AL\": [\"355\", \"00\", \"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\", [6, 7, 8, 9], [[\"(\\\\d{3})(\\\\d{3,4})\", \"$1 $2\", [\"80|9\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"4[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2358][2-5]|4\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[23578]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"6\"], \"0$1\"]], \"0\"],\n \"AM\": [\"374\", \"00\", \"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]0\"], \"0 $1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"2|3[12]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"1|47\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[3-9]\"], \"0$1\"]], \"0\"],\n \"AO\": [\"244\", \"00\", \"[29]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[29]\"]]]],\n \"AR\": [\"54\", \"00\", \"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\", [10, 11], [[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$1 $2-$3\", [\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\", \"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\", \"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\", \"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"], \"0$1\", 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2-$3\", [\"1\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[68]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2-$3\", [\"[23]\"], \"0$1\", 1], [\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$2 15-$3-$4\", [\"9(?:2[2-469]|3[3-578])\", \"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\", \"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\", \"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\", \"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"], \"0$1\", 0, \"$1 $2 $3-$4\"], [\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$2 15-$3-$4\", [\"91\"], \"0$1\", 0, \"$1 $2 $3-$4\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1-$2-$3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$2 15-$3-$4\", [\"9\"], \"0$1\", 0, \"$1 $2 $3-$4\"]], \"0\", 0, \"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\", \"9$1\"],\n \"AS\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([267]\\\\d{6})$|1\", \"684$1\", 0, \"684\"],\n \"AT\": [\"43\", \"00\", \"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{3,12})\", \"$1 $2\", [\"1(?:11|[2-9])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})\", \"$1 $2\", [\"517\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,5})\", \"$1 $2\", [\"5[079]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,10})\", \"$1 $2\", [\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,9})\", \"$1 $2\", [\"[2-467]|5[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\", \"$1 $2 $3\", [\"5\"], \"0$1\"]], \"0\"],\n \"AU\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\", [5, 6, 7, 8, 9, 10, 12], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1 $2\", [\"16\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"16\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"14|4\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[2378]\"], \"(0$1)\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1(?:30|[89])\"]]], \"0\", 0, \"(183[12])|0\", 0, 0, 0, [[\"(?:(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d|3(?:(?:[0-3589]\\\\d|6[1-9]|7[0-35-9])\\\\d|4(?:[0-578]\\\\d|90)))\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|3\\\\d\\\\d)|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\", [9]], [\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, [\"163\\\\d{2,6}\", [5, 6, 7, 8, 9]], [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"AW\": [\"297\", \"00\", \"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[25-9]\"]]]],\n \"AX\": [\"358\", \"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\", \"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\", [5, 6, 7, 8, 9, 10, 11, 12], 0, \"0\", 0, 0, 0, 0, \"18\", 0, \"00\"],\n \"AZ\": [\"994\", \"00\", \"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[28]|2|365|46\", \"1[28]|2|365[45]|46\", \"1[28]|2|365(?:4|5[02])|46\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[13-9]\"], \"0$1\"]], \"0\"],\n \"BA\": [\"387\", \"00\", \"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6[1-3]|[7-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2-$3\", [\"[3-5]|6[56]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"6\"], \"0$1\"]], \"0\"],\n \"BB\": [\"1\", \"011\", \"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"246$1\", 0, \"246\"],\n \"BD\": [\"880\", \"00\", \"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\", [6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1-$2\", [\"31[5-8]|[459]1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1-$2\", [\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,6})\", \"$1-$2\", [\"[13-9]|2[23]\"], \"0$1\"], [\"(\\\\d)(\\\\d{7,8})\", \"$1-$2\", [\"2\"], \"0$1\"]], \"0\"],\n \"BE\": [\"32\", \"00\", \"4\\\\d{8}|[1-9]\\\\d{7}\", [8, 9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:80|9)0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[239]|4[23]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[15-8]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"4\"], \"0$1\"]], \"0\"],\n \"BF\": [\"226\", \"00\", \"[025-7]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[025-7]\"]]]],\n \"BG\": [\"359\", \"00\", \"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\", [6, 7, 8, 9, 12], [[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"43[1-6]|70[1-9]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:70|8)0\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3\", [\"43[1-7]|7\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[48]|9[08]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"BH\": [\"973\", \"00\", \"[136-9]\\\\d{7}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[13679]|8[02-4679]\"]]]],\n \"BI\": [\"257\", \"00\", \"(?:[267]\\\\d|31)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2367]\"]]]],\n \"BJ\": [\"229\", \"00\", \"(?:01\\\\d|[24-689])\\\\d{7}\", [8, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24-689]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"0\"]]]],\n \"BL\": [\"590\", \"00\", \"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"], [\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\n \"BM\": [\"1\", \"011\", \"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"441$1\", 0, \"441\"],\n \"BN\": [\"673\", \"00\", \"[2-578]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-578]\"]]]],\n \"BO\": [\"591\", \"00(?:1\\\\d)?\", \"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\", [8, 9], [[\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"[235]|4[46]\"]], [\"(\\\\d{8})\", \"$1\", [\"[67]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]], \"0\", 0, \"0(1\\\\d)?\"],\n \"BQ\": [\"599\", \"00\", \"(?:[34]1|7\\\\d)\\\\d{5}\", [7], 0, 0, 0, 0, 0, 0, \"[347]\"],\n \"BR\": [\"55\", \"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\", \"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\", [8, 9, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"300|4(?:0[02]|37)\", \"4(?:02|37)0|[34]00\"]], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\", \"$1 $2 $3\", [\"(?:[358]|90)0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2-$3\", [\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"], \"($1)\"], [\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\", \"$1 $2-$3\", [\"[16][1-9]|[2-57-9]\"], \"($1)\"]], \"0\", 0, \"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\", \"$2\"],\n \"BS\": [\"1\", \"011\", \"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([3-8]\\\\d{6})$|1\", \"242$1\", 0, \"242\"],\n \"BT\": [\"975\", \"00\", \"[17]\\\\d{7}|[2-8]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-68]|7[246]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[67]|7\"]]]],\n \"BW\": [\"267\", \"00\", \"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"90\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[24-6]|3[15-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[37]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"BY\": [\"375\", \"810\", \"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"800\"], \"8 $1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\", \"$1 $2 $3\", [\"800\"], \"8 $1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\", \"$1 $2-$3\", [\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\", \"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"], \"8 0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"1(?:[56]|7[467])|2[1-3]\"], \"8 0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[1-4]\"], \"8 0$1\"], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"8 $1\"]], \"8\", 0, \"0|80?\", 0, 0, 0, 0, \"8~10\"],\n \"BZ\": [\"501\", \"00\", \"(?:0800\\\\d|[2-8])\\\\d{6}\", [7, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[2-8]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1-$2-$3-$4\", [\"0\"]]]],\n \"CA\": [\"1\", \"011\", \"[2-9]\\\\d{9}|3\\\\d{6}\", [7, 10], 0, \"1\", 0, 0, 0, 0, 0, [[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\", [10]], [\"\", [10]], [\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\", [10]], [\"900[2-9]\\\\d{6}\", [10]], [\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|33|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\", [10]], 0, [\"310\\\\d{4}\", [7]], 0, [\"600[2-9]\\\\d{6}\", [10]]]],\n \"CC\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\", [6, 7, 8, 9, 10, 12], 0, \"0\", 0, \"([59]\\\\d{7})$|0\", \"8$1\", 0, 0, [[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\", [9]], [\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, 0, [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"CD\": [\"243\", \"00\", \"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"88\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"[1-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"5\"], \"0$1\"]], \"0\"],\n \"CF\": [\"236\", \"00\", \"(?:[27]\\\\d{3}|8776)\\\\d{4}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[278]\"]]]],\n \"CG\": [\"242\", \"00\", \"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\", [9], [[\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[02]\"]]]],\n \"CH\": [\"41\", \"00\", \"8\\\\d{11}|[2-9]\\\\d{8}\", [9, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8[047]|90\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-79]|81\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"8\"], \"0$1\"]], \"0\"],\n \"CI\": [\"225\", \"00\", \"[02]\\\\d{9}\", [10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\", \"$1 $2 $3 $4\", [\"2\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"0\"]]]],\n \"CK\": [\"682\", \"00\", \"[2-578]\\\\d{4}\", [5], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"[2-578]\"]]]],\n \"CL\": [\"56\", \"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\", \"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\", [9, 10, 11], [[\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"219\", \"2196\"], \"($1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"44\"]], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2[1-36]\"], \"($1)\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"9[2-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"], \"($1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"60|8\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"60\"]]]],\n \"CM\": [\"237\", \"00\", \"[26]\\\\d{8}|88\\\\d{6,7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"88\"]], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"[26]|88\"]]]],\n \"CN\": [\"86\", \"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\", \"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{5,6})\", \"$1 $2\", [\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\", \"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\", \"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\", \"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\", \"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\", \"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\", \"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\", \"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"(?:4|80)0\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"10|2(?:[02-57-9]|1[1-9])\", \"10|2(?:[02-57-9]|1[1-9])\", \"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{7,8})\", \"$1 $2\", [\"9\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"80\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-578]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"1[3-9]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"[12]\"], \"0$1\", 1]], \"0\", 0, \"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\", 0, 0, 0, 0, \"00\"],\n \"CO\": [\"57\", \"00(?:4(?:[14]4|56)|[579])\", \"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\", [8, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"46\"]], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"6|90\"], \"($1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"3[0-357]|91\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{7})\", \"$1-$2-$3\", [\"1\"], \"0$1\", 0, \"$1 $2 $3\"]], \"0\", 0, \"0([3579]|4(?:[14]4|56))?\"],\n \"CR\": [\"506\", \"00\", \"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\", [8, 10], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]|8[3-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[89]\"]]], 0, 0, \"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\n \"CU\": [\"53\", \"119\", \"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\", [6, 7, 8, 10], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1 $2\", [\"2[1-4]|[34]\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{6,7})\", \"$1 $2\", [\"7\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"[56]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"8\"], \"0$1\"]], \"0\"],\n \"CV\": [\"238\", \"0\", \"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[2-589]\"]]]],\n \"CW\": [\"599\", \"00\", \"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[3467]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9[4-8]\"]]], 0, 0, 0, 0, 0, \"[69]\"],\n \"CX\": [\"61\", \"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\", \"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\", [6, 7, 8, 9, 10, 12], 0, \"0\", 0, \"([59]\\\\d{7})$|0\", \"8$1\", 0, 0, [[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\", [9]], [\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\", [9]], [\"180(?:0\\\\d{3}|2)\\\\d{3}\", [7, 10]], [\"190[0-26]\\\\d{6}\", [10]], 0, 0, 0, 0, [\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\", [9]], [\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\", [6, 8, 10, 12]]], \"0011\"],\n \"CY\": [\"357\", \"00\", \"(?:[279]\\\\d|[58]0)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[257-9]\"]]]],\n \"CZ\": [\"420\", \"00\", \"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\", [9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-8]|9[015-7]\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"96\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]]]],\n \"DE\": [\"49\", \"00\", \"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [[\"(\\\\d{2})(\\\\d{3,13})\", \"$1 $2\", [\"3[02]|40|[68]9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,12})\", \"$1 $2\", [\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\", \"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2,11})\", \"$1 $2\", [\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\", \"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"138\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{2,10})\", \"$1 $2\", [\"3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,11})\", \"$1 $2\", [\"181\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\", \"$1 $2 $3\", [\"1(?:3|80)|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7,8})\", \"$1 $2\", [\"1[67]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7,12})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{6})\", \"$1 $2\", [\"185\", \"1850\", \"18500\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{7})\", \"$1 $2\", [\"18[68]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{7})\", \"$1 $2\", [\"15[1279]\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{6})\", \"$1 $2\", [\"15[03568]\", \"15(?:[0568]|31)\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{8})\", \"$1 $2\", [\"18\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\", \"$1 $2 $3\", [\"1(?:6[023]|7)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\", \"$1 $2 $3\", [\"15[279]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\", \"$1 $2 $3\", [\"15\"], \"0$1\"]], \"0\"],\n \"DJ\": [\"253\", \"00\", \"(?:2\\\\d|77)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[27]\"]]]],\n \"DK\": [\"45\", \"00\", \"[2-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-9]\"]]]],\n \"DM\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-7]\\\\d{6})$|1\", \"767$1\", 0, \"767\"],\n \"DO\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"8001|8[024]9\"],\n \"DZ\": [\"213\", \"00\", \"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[1-4]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-8]\"], \"0$1\"]], \"0\"],\n \"EC\": [\"593\", \"00\", \"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\", [8, 9, 10, 11], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2-$3\", [\"[2-7]\"], \"(0$1)\", 0, \"$1-$2-$3\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"EE\": [\"372\", \"00\", \"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\", \"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]], [\"(\\\\d{4})(\\\\d{3,4})\", \"$1 $2\", [\"[45]|8(?:00|[1-49])\", \"[45]|8(?:00[1-9]|[1-49])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"EG\": [\"20\", \"00\", \"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{7,8})\", \"$1 $2\", [\"[23]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6,7})\", \"$1 $2\", [\"1[35]|[4-6]|8[2468]|9[235-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{8})\", \"$1 $2\", [\"1\"], \"0$1\"]], \"0\"],\n \"EH\": [\"212\", \"00\", \"[5-8]\\\\d{8}\", [9], 0, \"0\", 0, 0, 0, 0, \"528[89]\"],\n \"ER\": [\"291\", \"00\", \"[178]\\\\d{6}\", [7], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[178]\"], \"0$1\"]], \"0\"],\n \"ES\": [\"34\", \"00\", \"[5-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[89]00\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-9]\"]]]],\n \"ET\": [\"251\", \"00\", \"(?:11|[2-579]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-579]\"], \"0$1\"]], \"0\"],\n \"FI\": [\"358\", \"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\", \"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\", [5, 6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{5})\", \"$1\", [\"20[2-59]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1 $2\", [\"(?:[1-3]0|[68])0|70[07-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4,8})\", \"$1 $2\", [\"[14]|2[09]|50|7[135]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6,10})\", \"$1 $2\", [\"7\"], \"0$1\"], [\"(\\\\d)(\\\\d{4,9})\", \"$1 $2\", [\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"], \"0$1\"]], \"0\", 0, 0, 0, 0, \"1[03-79]|[2-9]\", 0, \"00\"],\n \"FJ\": [\"679\", \"0(?:0|52)\", \"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\", [7, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[235-9]|45\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"0\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"FK\": [\"500\", \"00\", \"[2-7]\\\\d{4}\", [5]],\n \"FM\": [\"691\", \"00\", \"(?:[39]\\\\d\\\\d|820)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[389]\"]]]],\n \"FO\": [\"298\", \"00\", \"[2-9]\\\\d{5}\", [6], [[\"(\\\\d{6})\", \"$1\", [\"[2-9]\"]]], 0, 0, \"(10(?:01|[12]0|88))\"],\n \"FR\": [\"33\", \"00\", \"[1-9]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0 $1\"], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"[1-79]\"], \"0$1\"]], \"0\"],\n \"GA\": [\"241\", \"00\", \"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-7]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"0\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"11|[67]\"], \"0$1\"]], 0, 0, \"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\", \"$1\"],\n \"GB\": [\"44\", \"00\", \"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\", [7, 9, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"800\", \"8001\", \"80011\", \"800111\", \"8001111\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"845\", \"8454\", \"84546\", \"845464\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"800\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{4,5})\", \"$1 $2\", [\"1(?:38|5[23]|69|76|94)\", \"1(?:(?:38|69)7|5(?:24|39)|768|946)\", \"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5,6})\", \"$1 $2\", [\"1(?:[2-69][02-9]|[78])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[25]|7(?:0|6[02-9])\", \"[25]|7(?:0|6(?:[03-9]|2[356]))\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1389]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-35])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\", [9, 10]], [\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\", [10]], [\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"], [\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\", [7, 10]], [\"70\\\\d{8}\", [10]], 0, [\"(?:3[0347]|55)\\\\d{8}\", [10]], [\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\", [10]], [\"56\\\\d{8}\", [10]]], 0, \" x\"],\n \"GD\": [\"1\", \"011\", \"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"473$1\", 0, \"473\"],\n \"GE\": [\"995\", \"00\", \"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"70\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"32\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[57]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[348]\"], \"0$1\"]], \"0\"],\n \"GF\": [\"594\", \"00\", \"(?:[56]94\\\\d|7093)\\\\d{5}|(?:80|9\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-7]|9[47]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[89]\"], \"0$1\"]], \"0\"],\n \"GG\": [\"44\", \"00\", \"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\", [7, 9, 10], 0, \"0\", 0, \"([25-9]\\\\d{5})$|0\", \"1481$1\", 0, 0, [[\"1481[25-9]\\\\d{5}\", [10]], [\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\", [10]], [\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"], [\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\", [7, 10]], [\"70\\\\d{8}\", [10]], 0, [\"(?:3[0347]|55)\\\\d{8}\", [10]], [\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\", [10]], [\"56\\\\d{8}\", [10]]]],\n \"GH\": [\"233\", \"00\", \"(?:[235]\\\\d{3}|800)\\\\d{5}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[235]\"], \"0$1\"]], \"0\"],\n \"GI\": [\"350\", \"00\", \"(?:[25]\\\\d|60)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"2\"]]]],\n \"GL\": [\"299\", \"00\", \"(?:19|[2-689]\\\\d|70)\\\\d{4}\", [6], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"19|[2-9]\"]]]],\n \"GM\": [\"220\", \"00\", \"[2-9]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"GN\": [\"224\", \"00\", \"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"3\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[67]\"]]]],\n \"GP\": [\"590\", \"00\", \"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-79]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"], [\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\n \"GQ\": [\"240\", \"00\", \"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235]\"]], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[89]\"]]]],\n \"GR\": [\"30\", \"00\", \"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\", [10, 11, 12], [[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"21|7\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2689]\"]], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\", \"$1 $2 $3\", [\"8\"]]]],\n \"GT\": [\"502\", \"00\", \"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\", [8, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-8]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]]]],\n \"GU\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"671$1\", 0, \"671\"],\n \"GW\": [\"245\", \"00\", \"[49]\\\\d{8}|4\\\\d{6}\", [7, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"40\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[49]\"]]]],\n \"GY\": [\"592\", \"001\", \"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"HK\": [\"852\", \"00(?:30|5[09]|[126-9]?)\", \"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\", [5, 6, 7, 8, 9, 11], [[\"(\\\\d{3})(\\\\d{2,5})\", \"$1 $2\", [\"900\", \"9003\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"9\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"HN\": [\"504\", \"00\", \"8\\\\d{10}|[237-9]\\\\d{7}\", [8, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"[237-9]\"]]]],\n \"HR\": [\"385\", \"00\", \"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\", [6, 7, 8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"6[01]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"6|7[245]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-57]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"HT\": [\"509\", \"00\", \"(?:[2-489]\\\\d|55)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-589]\"]]]],\n \"HU\": [\"36\", \"00\", \"[235-7]\\\\d{8}|[1-9]\\\\d{7}\", [8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"(06 $1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"], \"(06 $1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-9]\"], \"06 $1\"]], \"06\"],\n \"ID\": [\"62\", \"00[89]\", \"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\", [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"15\"]], [\"(\\\\d{2})(\\\\d{5,9})\", \"$1 $2\", [\"2[124]|[36]1\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5,7})\", \"$1 $2\", [\"800\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5,8})\", \"$1 $2\", [\"[2-79]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\", \"$1-$2-$3\", [\"8[1-35-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6,8})\", \"$1 $2\", [\"1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"804\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"80\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1-$2-$3\", [\"8\"], \"0$1\"]], \"0\"],\n \"IE\": [\"353\", \"00\", \"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"2[24-9]|47|58|6[237-9]|9[35-9]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[45]0\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2569]|4[1-69]|7[14]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"70\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"81\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"4\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"IL\": [\"972\", \"0(?:0|1[2-9])\", \"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{4})(\\\\d{3})\", \"$1-$2\", [\"125\"]], [\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\", \"$1-$2-$3\", [\"121\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[2-489]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[57]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3\", [\"12\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1-$2\", [\"159\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3-$4\", [\"1[7-9]\"]], [\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3-$4\", [\"15\"]]], \"0\"],\n \"IM\": [\"44\", \"00\", \"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\", [10], 0, \"0\", 0, \"([25-8]\\\\d{5})$|0\", \"1624$1\", 0, \"74576|(?:16|7[56])24\"],\n \"IN\": [\"91\", \"00\", \"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\", [8, 9, 10, 11, 12, 13], [[\"(\\\\d{8})\", \"$1\", [\"5(?:0|2[23]|3[03]|[67]1|88)\", \"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\", \"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"], 0, 1], [\"(\\\\d{4})(\\\\d{4,5})\", \"$1 $2\", [\"180\", \"1800\"], 0, 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"140\"], 0, 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\", \"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\", \"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\", \"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\", \"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\", \"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\", \"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"], \"0$1\", 1], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"[6-9]\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1(?:6|8[06])\", \"1(?:6|8[06]0)\"], 0, 1], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"18\"], 0, 1]], \"0\"],\n \"IO\": [\"246\", \"00\", \"3\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"3\"]]]],\n \"IQ\": [\"964\", \"00\", \"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"IR\": [\"98\", \"00\", \"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\", [4, 5, 6, 7, 10], [[\"(\\\\d{4,5})\", \"$1\", [\"96\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4,5})\", \"$1 $2\", [\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-8]\"], \"0$1\"]], \"0\"],\n \"IS\": [\"354\", \"00|1(?:0(?:01|[12]0)|100)\", \"(?:38\\\\d|[4-9])\\\\d{6}\", [7, 9], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[4-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"3\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"IT\": [\"39\", \"00\", \"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\", [6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{4,6})\", \"$1 $2\", [\"0[26]\"]], [\"(\\\\d{3})(\\\\d{3,6})\", \"$1 $2\", [\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\", \"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]], [\"(\\\\d{4})(\\\\d{2,6})\", \"$1 $2\", [\"0(?:[13-579][2-46-8]|8[236-8])\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"894\"]], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"0[26]|5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"1(?:44|[679])|[378]|43\"]], [\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"0[13-57-9][0159]|14\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\", \"$1 $2 $3\", [\"0[26]\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"3\"]]], 0, 0, 0, 0, 0, 0, [[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\", [6, 7, 8, 9, 10, 11]], [\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\", [9, 10]], [\"80(?:0\\\\d{3}|3)\\\\d{3}\", [6, 9]], [\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\", [6, 8, 9, 10]], [\"1(?:78\\\\d|99)\\\\d{6}\", [9, 10]], [\"3[2-8]\\\\d{9,10}\", [11, 12]], 0, 0, [\"55\\\\d{8}\", [10]], [\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\", [6, 9]]]],\n \"JE\": [\"44\", \"00\", \"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\", [10], 0, \"0\", 0, \"([0-24-8]\\\\d{5})$|0\", \"1534$1\", 0, 0, [[\"1534[0-24-8]\\\\d{5}\"], [\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"], [\"80(?:07(?:35|81)|8901)\\\\d{4}\"], [\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"], [\"701511\\\\d{4}\"], 0, [\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"], [\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"], [\"56\\\\d{8}\"]]],\n \"JM\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"658|876\"],\n \"JO\": [\"962\", \"00\", \"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\", [8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2356]|87\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"70\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"JP\": [\"81\", \"010\", \"00[1-9]\\\\d{6,14}|[25-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\", [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1-$2-$3\", [\"(?:12|57|99)0\"], \"0$1\"], [\"(\\\\d{4})(\\\\d)(\\\\d{4})\", \"$1-$2-$3\", [\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\", \"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\", \"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"60\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"3|4(?:2[09]|7[01])|6[1-9]\", \"3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\", \"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\", \"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1-$2-$3\", [\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"800\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[25-9]\"], \"0$1\"]], \"0\", 0, \"(000[259]\\\\d{6})$|(?:(?:003768)0?)|0\", \"$1\"],\n \"KE\": [\"254\", \"000\", \"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5,7})\", \"$1 $2\", [\"[24-6]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[17]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\"],\n \"KG\": [\"996\", \"00\", \"8\\\\d{9}|[235-9]\\\\d{8}\", [9, 10], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"3(?:1[346]|[24-79])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235-79]|88\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"KH\": [\"855\", \"00[14-9]\", \"1\\\\d{9}|[1-9]\\\\d{7,8}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"KI\": [\"686\", \"00\", \"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\", [5, 8], 0, \"0\"],\n \"KM\": [\"269\", \"00\", \"[3478]\\\\d{6}\", [7], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[3478]\"]]]],\n \"KN\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-7]\\\\d{6})$|1\", \"869$1\", 0, \"869\"],\n \"KP\": [\"850\", \"00|99\", \"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\", [8, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-7]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"]], \"0\"],\n \"KR\": [\"82\", \"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\", \"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\", [5, 6, 8, 9, 10, 11, 12, 13, 14], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1-$2\", [\"(?:3[1-3]|[46][1-4]|5[1-5])1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"1\"]], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1-$2-$3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1-$2-$3\", [\"[36]0|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1-$2-$3\", [\"[1346]|5[1-5]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2-$3\", [\"[57]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\", \"$1-$2-$3\", [\"5\"], \"0$1\"]], \"0\", 0, \"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\n \"KW\": [\"965\", \"00\", \"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\", [7, 8], [[\"(\\\\d{4})(\\\\d{3,4})\", \"$1 $2\", [\"[169]|2(?:[235]|4[1-35-9])|52\"]], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[245]\"]]]],\n \"KY\": [\"1\", \"011\", \"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"345$1\", 0, \"345\"],\n \"KZ\": [\"7\", \"810\", \"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\", [10, 14], 0, \"8\", 0, 0, 0, 0, \"33|7\", 0, \"8~10\"],\n \"LA\": [\"856\", \"00\", \"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2[13]|3[14]|[4-8]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"30[0135-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[23]\"], \"0$1\"]], \"0\"],\n \"LB\": [\"961\", \"00\", \"[27-9]\\\\d{7}|[13-9]\\\\d{6}\", [7, 8], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[27-9]\"]]], \"0\"],\n \"LC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-8]\\\\d{6})$|1\", \"758$1\", 0, \"758\"],\n \"LI\": [\"423\", \"00\", \"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\", [7, 9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[2379]|8(?:0[09]|7)\", \"[2379]|8(?:0(?:02|9)|7)\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"69\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]]], \"0\", 0, \"(1001)|0\"],\n \"LK\": [\"94\", \"00\", \"[1-9]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[1-689]\"], \"0$1\"]], \"0\"],\n \"LR\": [\"231\", \"00\", \"(?:[245]\\\\d|33|77|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\", [7, 8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"4[67]|[56]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-578]\"], \"0$1\"]], \"0\"],\n \"LS\": [\"266\", \"00\", \"(?:[256]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2568]\"]]]],\n \"LT\": [\"370\", \"00\", \"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\", [8], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"52[0-7]\"], \"(0-$1)\", 1], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[7-9]\"], \"0 $1\", 1], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"37|4(?:[15]|6[1-8])\"], \"(0-$1)\", 1], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[3-6]\"], \"(0-$1)\", 1]], \"0\", 0, \"[08]\"],\n \"LU\": [\"352\", \"00\", \"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\", [4, 5, 6, 7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"20[2-689]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\", \"$1 $2 $3 $4\", [\"2(?:[0367]|4[3-8])\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"80[01]|90[015]\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"20\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\", \"$1 $2 $3 $4 $5\", [\"2(?:[0367]|4[3-8])\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\", \"$1 $2 $3 $4\", [\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]], 0, 0, \"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\n \"LV\": [\"371\", \"00\", \"(?:[268]\\\\d|90)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[269]|8[01]\"]]]],\n \"LY\": [\"218\", \"00\", \"[2-9]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{7})\", \"$1-$2\", [\"[2-9]\"], \"0$1\"]], \"0\"],\n \"MA\": [\"212\", \"00\", \"[5-8]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"5[45]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1-$2\", [\"5(?:2[2-46-9]|3[3-9]|9)|8(?:0[89]|92)\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1-$2\", [\"8\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1-$2\", [\"[5-7]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"5(?:2(?:[0-25-79]\\\\d|3[1-578]|4[02-46-8]|8[0235-7])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[014-9]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"], [\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[0167]\\\\d|2[0-4]|5[01]|8[0-3]))\\\\d{6}\"], [\"80[0-7]\\\\d{6}\"], [\"89\\\\d{7}\"], 0, 0, 0, 0, [\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\n \"MC\": [\"377\", \"00\", \"(?:[3489]|6\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"4\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[389]\"]], [\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4 $5\", [\"6\"], \"0$1\"]], \"0\"],\n \"MD\": [\"373\", \"00\", \"(?:[235-7]\\\\d|[89]0)\\\\d{6}\", [8], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"22|3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"[25-7]\"], \"0$1\"]], \"0\"],\n \"ME\": [\"382\", \"00\", \"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[2-9]\"], \"0$1\"]], \"0\"],\n \"MF\": [\"590\", \"00\", \"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"], [\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"], [\"80[0-5]\\\\d{6}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\n \"MG\": [\"261\", \"00\", \"[23]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[23]\"], \"0$1\"]], \"0\", 0, \"([24-9]\\\\d{6})$|0\", \"20$1\"],\n \"MH\": [\"692\", \"011\", \"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[2-6]\"]]], \"1\"],\n \"MK\": [\"389\", \"00\", \"[2-578]\\\\d{7}\", [8], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2|34[47]|4(?:[37]7|5[47]|64)\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[347]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[58]\"], \"0$1\"]], \"0\"],\n \"ML\": [\"223\", \"00\", \"[24-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24-9]\"]]]],\n \"MM\": [\"95\", \"00\", \"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\", [6, 7, 8, 9, 10], [[\"(\\\\d)(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"16|2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[12]|452|678|86\", \"[12]|452|6788|86\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[4-7]|8[1-35]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\", \"$1 $2 $3\", [\"9(?:2[0-4]|[35-9]|4[137-9])\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"92\"], \"0$1\"], [\"(\\\\d)(\\\\d{5})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"MN\": [\"976\", \"001\", \"[12]\\\\d{7,9}|[5-9]\\\\d{7}\", [8, 9, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[12]1\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[5-9]\"]], [\"(\\\\d{3})(\\\\d{5,6})\", \"$1 $2\", [\"[12]2[1-3]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5,6})\", \"$1 $2\", [\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\", \"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"], \"0$1\"], [\"(\\\\d{5})(\\\\d{4,5})\", \"$1 $2\", [\"[12]\"], \"0$1\"]], \"0\"],\n \"MO\": [\"853\", \"00\", \"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\", [7, 8], [[\"(\\\\d{4})(\\\\d{3})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[268]\"]]]],\n \"MP\": [\"1\", \"011\", \"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"670$1\", 0, \"670\"],\n \"MQ\": [\"596\", \"00\", \"(?:596\\\\d|7091)\\\\d{5}|(?:69|[89]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-79]|8(?:0[6-9]|[36])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"MR\": [\"222\", \"00\", \"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-48]\"]]]],\n \"MS\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([34]\\\\d{6})$|1\", \"664$1\", 0, \"664\"],\n \"MT\": [\"356\", \"00\", \"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[2357-9]\"]]]],\n \"MU\": [\"230\", \"0(?:0|[24-7]0|3[03])\", \"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\", [7, 8, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-46]|8[013]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[57]\"]], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"8\"]]], 0, 0, 0, 0, 0, 0, 0, \"020\"],\n \"MV\": [\"960\", \"0(?:0|19)\", \"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\", [7, 10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[34679]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"MW\": [\"265\", \"00\", \"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\", [7, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[137-9]\"], \"0$1\"]], \"0\"],\n \"MX\": [\"52\", \"0[09]\", \"[2-9]\\\\d{9}\", [10], [[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"33|5[56]|81\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"MY\": [\"60\", \"00\", \"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"[4-79]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1-$2 $3\", [\"1(?:[02469]|[378][1-9]|53)|8\", \"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"], \"0$1\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1-$2 $3\", [\"3\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1-$2-$3-$4\", [\"1(?:[367]|80)\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1-$2 $3\", [\"15\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1-$2 $3\", [\"1\"], \"0$1\"]], \"0\"],\n \"MZ\": [\"258\", \"00\", \"(?:2|8\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2|8[2-79]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]]]],\n \"NA\": [\"264\", \"00\", \"[68]\\\\d{7,8}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"88\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"6\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"87\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"NC\": [\"687\", \"00\", \"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\", [6], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1.$2.$3\", [\"[02-57-9]\"]]]],\n \"NE\": [\"227\", \"00\", \"[027-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"08\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[089]|2[013]|7[0467]\"]]]],\n \"NF\": [\"672\", \"00\", \"[13]\\\\d{5}\", [6], [[\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"1[0-3]\"]], [\"(\\\\d)(\\\\d{5})\", \"$1 $2\", [\"[13]\"]]], 0, 0, \"([0-258]\\\\d{4})$\", \"3$1\"],\n \"NG\": [\"234\", \"009\", \"38\\\\d{6}|[78]\\\\d{9,13}|(?:20|9\\\\d)\\\\d{8}\", [8, 10, 11, 12, 13, 14], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"3\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[7-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"20[129]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\", \"$1 $2 $3\", [\"[78]\"], \"0$1\"]], \"0\"],\n \"NI\": [\"505\", \"00\", \"(?:1800|[25-8]\\\\d{3})\\\\d{4}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[125-8]\"]]]],\n \"NL\": [\"31\", \"00\", \"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\", [5, 6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{4,7})\", \"$1 $2\", [\"[89]0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"66\"], \"0$1\"], [\"(\\\\d)(\\\\d{8})\", \"$1 $2\", [\"6\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-578]|91\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\", [\"9\"], \"0$1\"]], \"0\"],\n \"NO\": [\"47\", \"00\", \"(?:0|[2-9]\\\\d{3})\\\\d{4}\", [5, 8], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[2-79]\"]]], 0, 0, 0, 0, 0, \"[02-689]|7[0-8]\"],\n \"NP\": [\"977\", \"00\", \"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d)(\\\\d{7})\", \"$1-$2\", [\"1[2-6]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1-$2\", [\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1-$2\", [\"9\"]]], \"0\"],\n \"NR\": [\"674\", \"00\", \"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[4-68]\"]]]],\n \"NU\": [\"683\", \"00\", \"(?:[4-7]|888\\\\d)\\\\d{3}\", [4, 7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"8\"]]]],\n \"NZ\": [\"64\", \"0(?:0|161)\", \"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{3,8})\", \"$1 $2\", [\"8[1-79]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"50[036-8]|8|90\", \"50(?:[0367]|88)|8|90\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"24|[346]|7[2-57-9]|9[2-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2(?:10|74)|[589]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"1|2[028]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\", \"$1 $2 $3\", [\"2(?:[169]|7[0-35-9])|7\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\"],\n \"OM\": [\"968\", \"00\", \"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\", [7, 8, 9], [[\"(\\\\d{3})(\\\\d{4,6})\", \"$1 $2\", [\"[58]\"]], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"2\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[179]\"]]]],\n \"PA\": [\"507\", \"00\", \"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\", [7, 8, 10, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[1-57-9]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1-$2\", [\"[68]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]]],\n \"PE\": [\"51\", \"00|19(?:1[124]|77|90)00\", \"(?:[14-8]|9\\\\d)\\\\d{7}\", [8, 9], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"80\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"1\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[4-8]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"]]], \"0\", 0, 0, 0, 0, 0, 0, \"00\", \" Anexo \"],\n \"PF\": [\"689\", \"00\", \"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\", [6, 8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"44\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"4|8[7-9]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]]]],\n \"PG\": [\"675\", \"00|140[1-3]\", \"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"18|[2-69]|85\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[78]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"PH\": [\"63\", \"00\", \"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\", [6, 8, 9, 10, 11, 12, 13], [[\"(\\\\d)(\\\\d{5})\", \"$1 $2\", [\"2\"], \"(0$1)\"], [\"(\\\\d{4})(\\\\d{4,6})\", \"$1 $2\", [\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\", \"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"], \"(0$1)\"], [\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"346|4(?:27|9[35])|883\", \"3469|4(?:279|9(?:30|56))|8834\"], \"(0$1)\"], [\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-7]|8[2-8]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]], [\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3 $4\", [\"1\"]]], \"0\"],\n \"PK\": [\"92\", \"00\", \"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\", \"$1 $2 $3\", [\"[89]0\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"1\"]], [\"(\\\\d{3})(\\\\d{6,7})\", \"$1 $2\", [\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\", \"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{7,8})\", \"$1 $2\", [\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"], \"(0$1)\"], [\"(\\\\d{5})(\\\\d{5})\", \"$1 $2\", [\"58\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{7})\", \"$1 $2\", [\"3\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[24-9]\"], \"(0$1)\"]], \"0\"],\n \"PL\": [\"48\", \"00\", \"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\", [6, 7, 8, 9, 10], [[\"(\\\\d{5})\", \"$1\", [\"19\"]], [\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"11|20|64\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1 $2 $3\", [\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\", \"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"64\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"1[2-8]|[2-7]|8[1-79]|9[145]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"8\"]]]],\n \"PM\": [\"508\", \"00\", \"[45]\\\\d{5}|(?:708|8\\\\d\\\\d)\\\\d{6}\", [6, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[45]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"], \"0$1\"]], \"0\"],\n \"PR\": [\"1\", \"011\", \"(?:[589]\\\\d\\\\d|787)\\\\d{7}\", [10], 0, \"1\", 0, 0, 0, 0, \"787|939\"],\n \"PS\": [\"970\", \"00\", \"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\", [8, 9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[2489]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"PT\": [\"351\", \"00\", \"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2[12]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"16|[236-9]\"]]]],\n \"PW\": [\"680\", \"01[12]\", \"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-9]\"]]]],\n \"PY\": [\"595\", \"00\", \"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\", [6, 7, 8, 9, 10, 11], [[\"(\\\\d{3})(\\\\d{3,6})\", \"$1 $2\", [\"[2-9]0\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"], \"(0$1)\"], [\"(\\\\d{3})(\\\\d{4,5})\", \"$1 $2\", [\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"87\"]], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"9(?:[5-79]|8[1-7])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-8]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"9\"]]], \"0\"],\n \"QA\": [\"974\", \"00\", \"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\", [7, 8, 9, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"2[16]|8\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[3-7]\"]]]],\n \"RE\": [\"262\", \"00\", \"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[26-9]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, [[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"], [\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"], [\"80\\\\d{7}\"], [\"89[1-37-9]\\\\d{6}\"], 0, 0, 0, 0, [\"9(?:399[0-3]|479[0-5]|76(?:2[278]|3[0-37]))\\\\d{4}\"], [\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\n \"RO\": [\"40\", \"00\", \"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\", [6, 9], [[\"(\\\\d{3})(\\\\d{3})\", \"$1 $2\", [\"2[3-6]\", \"2[3-6]\\\\d9\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"219|31\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[23]1\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[236-9]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, 0, \" int \"],\n \"RS\": [\"381\", \"00\", \"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\", [6, 7, 8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3,9})\", \"$1 $2\", [\"(?:2[389]|39)0|[7-9]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{5,10})\", \"$1 $2\", [\"[1-36]\"], \"0$1\"]], \"0\"],\n \"RU\": [\"7\", \"810\", \"8\\\\d{13}|[347-9]\\\\d{9}\", [10, 14], [[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"7(?:1[0-8]|2[1-9])\", \"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\", \"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"], \"8 ($1)\", 1], [\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"7(?:1[0-68]|2[1-9])\", \"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\", \"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"], \"8 ($1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"8 ($1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[349]|8(?:[02-7]|1[1-8])\"], \"8 ($1)\", 1], [\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"8\"], \"8 ($1)\"]], \"8\", 0, 0, 0, 0, \"3[04-689]|[489]\", 0, \"8~10\"],\n \"RW\": [\"250\", \"00\", \"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\", [8, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"0\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[7-9]\"], \"0$1\"]], \"0\"],\n \"SA\": [\"966\", \"00\", \"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\", [9, 10], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"9\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"5\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"81\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]]], \"0\"],\n \"SB\": [\"677\", \"0[01]\", \"[6-9]\\\\d{6}|[1-6]\\\\d{4}\", [5, 7], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\n \"SC\": [\"248\", \"010|0[0-2]\", \"(?:[2489]\\\\d|64)\\\\d{5}\", [7], [[\"(\\\\d)(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[246]|9[57]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"SD\": [\"249\", \"00\", \"[19]\\\\d{8}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[19]\"], \"0$1\"]], \"0\"],\n \"SE\": [\"46\", \"00\", \"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\", [6, 7, 8, 9, 10, 12], [[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\", \"$1-$2 $3\", [\"20\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"9(?:00|39|44|9)\"], \"0$1\", 0, \"$1 $2\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\", \"$1-$2 $3\", [\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"8\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\", \"$1-$2 $3\", [\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\", \"$1-$2 $3\", [\"9(?:00|39|44)\"], \"0$1\", 0, \"$1 $2 $3\"], [\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"10|7\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"8\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4\", [\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\", \"$1-$2 $3 $4\", [\"9\"], \"0$1\", 0, \"$1 $2 $3 $4\"], [\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1-$2 $3 $4 $5\", [\"[26]\"], \"0$1\", 0, \"$1 $2 $3 $4 $5\"]], \"0\"],\n \"SG\": [\"65\", \"0[0-3]\\\\d\", \"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\", [8, 10, 11], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[369]|8(?:0[1-9]|[1-9])\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"]], [\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"]], [\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"1\"]]]],\n \"SH\": [\"290\", \"00\", \"(?:[256]\\\\d|8)\\\\d{3}\", [4, 5], 0, 0, 0, 0, 0, 0, \"[256]\"],\n \"SI\": [\"386\", \"00|10(?:22|66|88|99)\", \"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\", [5, 6, 7, 8], [[\"(\\\\d{2})(\\\\d{3,6})\", \"$1 $2\", [\"8[09]|9\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"59|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[37][01]|4[0139]|51|6\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[1-57]\"], \"(0$1)\"]], \"0\", 0, 0, 0, 0, 0, 0, \"00\"],\n \"SJ\": [\"47\", \"00\", \"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\", [5, 8], 0, 0, 0, 0, 0, 0, \"79\"],\n \"SK\": [\"421\", \"00\", \"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\", [6, 7, 9], [[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\", \"$1 $2 $3\", [\"21\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\", \"$1 $2 $3\", [\"[3-5][1-8]1\", \"[3-5][1-8]1[67]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\", \"$1/$2 $3 $4\", [\"2\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[689]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1/$2 $3 $4\", [\"[3-5]\"], \"0$1\"]], \"0\"],\n \"SL\": [\"232\", \"00\", \"(?:[237-9]\\\\d|66)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[236-9]\"], \"(0$1)\"]], \"0\"],\n \"SM\": [\"378\", \"00\", \"(?:0549|[5-7]\\\\d)\\\\d{6}\", [8, 10], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[5-7]\"]], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"0\"]]], 0, 0, \"([89]\\\\d{5})$\", \"0549$1\"],\n \"SN\": [\"221\", \"00\", \"(?:[378]\\\\d|93)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[379]\"]]]],\n \"SO\": [\"252\", \"00\", \"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\", [6, 7, 8, 9], [[\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"8[125]\"]], [\"(\\\\d{6})\", \"$1\", [\"[134]\"]], [\"(\\\\d)(\\\\d{6})\", \"$1 $2\", [\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]], [\"(\\\\d)(\\\\d{7})\", \"$1 $2\", [\"(?:2|90)4|[67]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[348]|64|79|90\"]], [\"(\\\\d{2})(\\\\d{5,7})\", \"$1 $2\", [\"1|28|6[0-35-9]|77|9[2-9]\"]]], \"0\"],\n \"SR\": [\"597\", \"00\", \"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\", [6, 7], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1-$2-$3\", [\"56\"]], [\"(\\\\d{3})(\\\\d{3})\", \"$1-$2\", [\"[2-5]\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"[6-8]\"]]]],\n \"SS\": [\"211\", \"00\", \"[19]\\\\d{8}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[19]\"], \"0$1\"]], \"0\"],\n \"ST\": [\"239\", \"00\", \"(?:22|9\\\\d)\\\\d{5}\", [7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[29]\"]]]],\n \"SV\": [\"503\", \"00\", \"[267]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\", [7, 8, 11], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[89]\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[267]\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"]]]],\n \"SX\": [\"1\", \"011\", \"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"(5\\\\d{6})$|1\", \"721$1\", 0, \"721\"],\n \"SY\": [\"963\", \"00\", \"[1-359]\\\\d{8}|[1-5]\\\\d{7}\", [8, 9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-4]|5[1-3]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[59]\"], \"0$1\", 1]], \"0\"],\n \"SZ\": [\"268\", \"00\", \"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\", [8, 9], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[0237]\"]], [\"(\\\\d{5})(\\\\d{4})\", \"$1 $2\", [\"9\"]]]],\n \"TA\": [\"290\", \"00\", \"8\\\\d{3}\", [4], 0, 0, 0, 0, 0, 0, \"8\"],\n \"TC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-479]\\\\d{6})$|1\", \"649$1\", 0, \"649\"],\n \"TD\": [\"235\", \"00|16\", \"(?:22|[689]\\\\d|77)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[26-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"00\"],\n \"TG\": [\"228\", \"00\", \"[279]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[279]\"]]]],\n \"TH\": [\"66\", \"00[1-9]\", \"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\", [8, 9, 10, 13], [[\"(\\\\d)(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"2\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[13-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"1\"]]], \"0\"],\n \"TJ\": [\"992\", \"810\", \"[0-57-9]\\\\d{8}\", [9], [[\"(\\\\d{6})(\\\\d)(\\\\d{2})\", \"$1 $2 $3\", [\"331\", \"3317\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"44[02-479]|[34]7\"]], [\"(\\\\d{4})(\\\\d)(\\\\d{4})\", \"$1 $2 $3\", [\"3(?:[1245]|3[12])\"]], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[0-57-9]\"]]], 0, 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"TK\": [\"690\", \"00\", \"[2-47]\\\\d{3,6}\", [4, 5, 6, 7]],\n \"TL\": [\"670\", \"00\", \"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\", [7, 8], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[2-489]|70\"]], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"7\"]]]],\n \"TM\": [\"993\", \"810\", \"(?:[1-6]\\\\d|71)\\\\d{6}\", [8], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"12\"], \"(8 $1)\"], [\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\", \"$1 $2-$3-$4\", [\"[1-5]\"], \"(8 $1)\"], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"[67]\"], \"8 $1\"]], \"8\", 0, 0, 0, 0, 0, 0, \"8~10\"],\n \"TN\": [\"216\", \"00\", \"[2-57-9]\\\\d{7}\", [8], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-57-9]\"]]]],\n \"TO\": [\"676\", \"00\", \"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\", [5, 7], [[\"(\\\\d{2})(\\\\d{3})\", \"$1-$2\", [\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]], [\"(\\\\d{4})(\\\\d{3})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[5-9]\"]]]],\n \"TR\": [\"90\", \"00\", \"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\", [7, 10, 12, 13], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"512|8[01589]|90\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"5(?:[0-59]|61)\", \"5(?:[0-59]|61[06])\", \"5(?:[0-59]|61[06]1)\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[24][1-8]|3[1-9]\"], \"(0$1)\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\", \"$1 $2 $3\", [\"80\"], \"0$1\", 1]], \"0\"],\n \"TT\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-46-8]\\\\d{6})$|1\", \"868$1\", 0, \"868\"],\n \"TV\": [\"688\", \"00\", \"(?:2|7\\\\d\\\\d|90)\\\\d{4}\", [5, 6, 7], [[\"(\\\\d{2})(\\\\d{3})\", \"$1 $2\", [\"2\"]], [\"(\\\\d{2})(\\\\d{4})\", \"$1 $2\", [\"90\"]], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7\"]]]],\n \"TW\": [\"886\", \"0(?:0[25-79]|19)\", \"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\", [7, 8, 9, 10, 11], [[\"(\\\\d{2})(\\\\d)(\\\\d{4})\", \"$1 $2 $3\", [\"202\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[258]0\"], \"0$1\"], [\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\", \"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[49]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, 0, \"#\"],\n \"TZ\": [\"255\", \"00[056]\", \"(?:[25-8]\\\\d|41|90)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[24]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"5\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[67]\"], \"0$1\"]], \"0\"],\n \"UA\": [\"380\", \"00\", \"[89]\\\\d{9}|[3-9]\\\\d{8}\", [9, 10], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\", \"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\", \"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[3-7]|89|9[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[89]\"], \"0$1\"]], \"0\", 0, 0, 0, 0, 0, 0, \"0~0\"],\n \"UG\": [\"256\", \"00[057]\", \"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{4})(\\\\d{5})\", \"$1 $2\", [\"202\", \"2024\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{6})\", \"$1 $2\", [\"[27-9]|4(?:6[45]|[7-9])\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"[34]\"], \"0$1\"]], \"0\"],\n \"US\": [\"1\", \"011\", \"[2-9]\\\\d{9}|3\\\\d{6}\", [10], [[\"(\\\\d{3})(\\\\d{4})\", \"$1-$2\", [\"310\"], 0, 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"($1) $2-$3\", [\"[2-9]\"], 0, 1, \"$1-$2-$3\"]], \"1\", 0, 0, 0, 0, 0, [[\"(?:3052(?:0[0-8]|[1-9]\\\\d)|5056(?:[0-35-9]\\\\d|4[468]))\\\\d{4}|(?:305[3-9]|472[24]|505[2-57-9]|983[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-47-9]|1[02-9]|2[0135-79]|3[0-24679]|4[167]|5[0-2]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"], [\"\"], [\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"], [\"900[2-9]\\\\d{6}\"], [\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"], 0, 0, 0, [\"305209\\\\d{4}\"]]],\n \"UY\": [\"598\", \"0(?:0|1[3-9]\\\\d)\", \"0004\\\\d{2,9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\", [6, 7, 8, 9, 10, 11, 12, 13], [[\"(\\\\d{3})(\\\\d{3,4})\", \"$1 $2\", [\"0\"]], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[49]0|8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"9\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[124]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"0\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3 $4\", [\"0\"]]], \"0\", 0, 0, 0, 0, 0, 0, \"00\", \" int. \"],\n \"UZ\": [\"998\", \"00\", \"(?:20|33|[5-9]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"[235-9]\"]]]],\n \"VA\": [\"39\", \"00\", \"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\", [6, 7, 8, 9, 10, 11, 12], 0, 0, 0, 0, 0, 0, \"06698\"],\n \"VC\": [\"1\", \"011\", \"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-7]\\\\d{6})$|1\", \"784$1\", 0, \"784\"],\n \"VE\": [\"58\", \"00\", \"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\", [10], [[\"(\\\\d{3})(\\\\d{7})\", \"$1-$2\", [\"[24-689]\"], \"0$1\"]], \"0\"],\n \"VG\": [\"1\", \"011\", \"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\", [10], 0, \"1\", 0, \"([2-578]\\\\d{6})$|1\", \"284$1\", 0, \"284\"],\n \"VI\": [\"1\", \"011\", \"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\", [10], 0, \"1\", 0, \"([2-9]\\\\d{6})$|1\", \"340$1\", 0, \"340\"],\n \"VN\": [\"84\", \"00\", \"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\", [7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"80\"], \"0$1\", 1], [\"(\\\\d{4})(\\\\d{4,6})\", \"$1 $2\", [\"1\"], 0, 1], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"6\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[357-9]\"], \"0$1\", 1], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"2[48]\"], \"0$1\", 1], [\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"2\"], \"0$1\", 1]], \"0\"],\n \"VU\": [\"678\", \"00\", \"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\", [5, 7], [[\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"[57-9]\"]]]],\n \"WF\": [\"681\", \"00\", \"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\", [6, 9], [[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3\", [\"[47-9]\"]], [\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\", \"$1 $2 $3 $4\", [\"8\"]]]],\n \"WS\": [\"685\", \"0\", \"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\", [5, 6, 7, 10], [[\"(\\\\d{5})\", \"$1\", [\"[2-5]|6[1-9]\"]], [\"(\\\\d{3})(\\\\d{3,7})\", \"$1 $2\", [\"[68]\"]], [\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"7\"]]]],\n \"XK\": [\"383\", \"00\", \"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{5})\", \"$1 $2\", [\"[89]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[2-4]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"2|39\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7,10})\", \"$1 $2\", [\"3\"], \"0$1\"]], \"0\"],\n \"YE\": [\"967\", \"00\", \"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\", [7, 8, 9], [[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"[1-6]|7(?:[24-6]|8[0-7])\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"7\"], \"0$1\"]], \"0\"],\n \"YT\": [\"262\", \"00\", \"7093\\\\d{5}|(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\", [9], 0, \"0\", 0, 0, 0, 0, 0, [[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"], [\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"], [\"80\\\\d{7}\"], 0, 0, 0, 0, 0, [\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\n \"ZA\": [\"27\", \"00\", \"[1-79]\\\\d{8}|8\\\\d{4,9}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{2})(\\\\d{3,4})\", \"$1 $2\", [\"8[1-4]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\", \"$1 $2 $3\", [\"8[1-4]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"860\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"[1-9]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"8\"], \"0$1\"]], \"0\"],\n \"ZM\": [\"260\", \"00\", \"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\", [9], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[28]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"[79]\"], \"0$1\"]], \"0\"],\n \"ZW\": [\"263\", \"00\", \"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\", [5, 6, 7, 8, 9, 10], [[\"(\\\\d{3})(\\\\d{3,5})\", \"$1 $2\", [\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"], \"0$1\"], [\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\", \"$1 $2 $3\", [\"[49]\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{4})\", \"$1 $2\", [\"80\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{7})\", \"$1 $2\", [\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\", \"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"], \"(0$1)\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"7\"], \"0$1\"], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\", \"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{6})\", \"$1 $2\", [\"8\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3,5})\", \"$1 $2\", [\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"], \"0$1\"], [\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\", \"$1 $2 $3\", [\"29[013-9]|39|54\"], \"0$1\"], [\"(\\\\d{4})(\\\\d{3,5})\", \"$1 $2\", [\"(?:25|54)8\", \"258|5483\"], \"0$1\"]], \"0\"]\n },\n \"nonGeographic\": {\n \"800\": [\"800\", 0, \"(?:00|[1-9]\\\\d)\\\\d{6}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"\\\\d\"]]], 0, 0, 0, 0, 0, 0, [0, 0, [\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\n \"808\": [\"808\", 0, \"[1-9]\\\\d{7}\", [8], [[\"(\\\\d{4})(\\\\d{4})\", \"$1 $2\", [\"[1-9]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, [\"[1-9]\\\\d{7}\"]]],\n \"870\": [\"870\", 0, \"7\\\\d{11}|[235-7]\\\\d{8}\", [9, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"[235-7]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"], 0, 0, 0, 0, 0, 0, [\"2\\\\d{8}\", [9]]]],\n \"878\": [\"878\", 0, \"10\\\\d{10}\", [12], [[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\", \"$1 $2 $3\", [\"1\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, [\"10\\\\d{10}\"]]],\n \"881\": [\"881\", 0, \"6\\\\d{9}|[0-36-9]\\\\d{8}\", [9, 10], [[\"(\\\\d)(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\", [\"[0-37-9]\"]], [\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\", \"$1 $2 $3\", [\"6\"]]], 0, 0, 0, 0, 0, 0, [0, [\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\n \"882\": [\"882\", 0, \"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\", [7, 8, 9, 10, 11, 12], [[\"(\\\\d{2})(\\\\d{5})\", \"$1 $2\", [\"16|342\"]], [\"(\\\\d{2})(\\\\d{6})\", \"$1 $2\", [\"49\"]], [\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\", \"$1 $2 $3\", [\"1[36]|9\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\", \"$1 $2 $3\", [\"3[23]\"]], [\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\", \"$1 $2 $3\", [\"16\"]], [\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"10|23|3(?:[15]|4[57])|4|51\"]], [\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"34\"]], [\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\", \"$1 $2 $3\", [\"[1-35]\"]]], 0, 0, 0, 0, 0, 0, [0, [\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\", [7, 8, 9, 10, 12]], 0, 0, 0, [\"348[57]\\\\d{7}\", [11]], 0, 0, [\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\n \"883\": [\"883\", 0, \"(?:[1-4]\\\\d|51)\\\\d{6,10}\", [8, 9, 10, 11, 12], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\", \"$1 $2 $3\", [\"[14]|2[24-689]|3[02-689]|51[24-9]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3\", [\"510\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\", \"$1 $2 $3\", [\"21\"]], [\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"51[13]\"]], [\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\", \"$1 $2 $3 $4\", [\"[235]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, [\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\n \"888\": [\"888\", 0, \"\\\\d{11}\", [11], [[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\", \"$1 $2 $3\"]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, [\"\\\\d{11}\"]]],\n \"979\": [\"979\", 0, \"[1359]\\\\d{8}\", [9], [[\"(\\\\d)(\\\\d{4})(\\\\d{4})\", \"$1 $2 $3\", [\"[1359]\"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, [\"[1359]\\\\d{8}\"]]]\n }\n};","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js';\nexport default function withMetadataArgument(func, _arguments) {\n var args = Array.prototype.slice.call(_arguments);\n args.push(metadata);\n return func.apply(this, args);\n}","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n var _super = _createSuper(ParseError);\n function ParseError(code) {\n var _this;\n _classCallCheck(this, ParseError);\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n return _createClass(ParseError);\n}(/*#__PURE__*/_wrapNativeSuper(Error));\nexport { ParseError as default };\n","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n","var objectConstructor = {}.constructor;\nexport default function isObject(object) {\n return object !== undefined && object !== null && object.constructor === objectConstructor;\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport compare from './tools/semver-compare.js';\nimport isObject from './helpers/isObject.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n return Metadata;\n}();\nexport { Metadata as default };\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n return NumberingPlan;\n}();\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n this._format = format;\n this.metadata = metadata;\n }\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() &&\n // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n this.type = type;\n this.metadata = metadata;\n }\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n return Type;\n}();\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n case 'MOBILE':\n return types[1];\n case 'TOLL_FREE':\n return types[2];\n case 'PREMIUM_RATE':\n return types[3];\n case 'PERSONAL_NUMBER':\n return types[4];\n case 'VOICEMAIL':\n return types[5];\n case 'UAN':\n return types[6];\n case 'PAGER':\n return types[7];\n case 'VOIP':\n return types[8];\n case 'SHARED_COST':\n return types[9];\n }\n}\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n if (!isObject(metadata) || !isObject(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar typeOf = function typeOf(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries.hasOwnProperty(country);\n}\nfunction setVersion(metadata) {\n var version = metadata.version;\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER +\n// Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp(\n// Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' +\n// Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n i++;\n }\n}\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n if (digit) {\n result += digit;\n }\n }\n return result;\n}\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} emitEvent - An optional \"emit event\" function.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n // `emitEvent` argument was added to this `export`ed function on Dec 26th, 2023.\n // Any 3rd-party code that used to `import` and call this function before that\n // won't be passing any `emitEvent` argument.\n //\n // The addition of the `emitEvent` argument was to fix the slightly-weird behavior\n // of parsing an input string when the user inputs something like `\"2+7\"\n // https://github.com/catamphetamine/react-phone-number-input/issues/437\n //\n // If the parser encounters an unexpected `+` in a string being parsed\n // then it simply discards that out-of-place `+` and any following characters.\n //\n if (typeof emitEvent === 'function') {\n emitEvent('end');\n }\n return;\n }\n return '+';\n } // Allow digits.\n\n return parseDigit(character);\n}\n","// Deprecated. Import from 'metadata.js' directly instead.\nexport { getCountryCallingCode as default } from './metadata.js';\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nexport default function mergeArrays(a, b) {\n var merged = a.slice();\n for (var _iterator = _createForOfIteratorHelperLoose(b), _step; !(_step = _iterator()).done;) {\n var element = _step.value;\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b) {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"<possiblePengths/>\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n var mobile_type = metadata.type('MOBILE');\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n metadata = new Metadata(metadata);\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returns an empty object — `{}` —\n // that means that the phone number is malformed,\n // so it can't possibly be valid.\n\n if (!input.country && !input.countryCallingCode) {\n return;\n }\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n return 'FIXED_LINE';\n }\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n return matchesEntirely(nationalNumber, type.pattern());\n}\n","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(nationalNumber, metadata.nationalNumberPattern());\n}\n","import Metadata from '../metadata.js';\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\n\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\n var _metadata = new Metadata(metadata);\n var possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode);\n if (!possibleCountries) {\n return [];\n }\n return possibleCountries.filter(function (country) {\n return couldNationalNumberBelongToCountry(nationalNumber, country, metadata);\n });\n}\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\n var _metadata = new Metadata(metadata);\n _metadata.selectNumberingPlan(country);\n if (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\n return true;\n }\n return false;\n}\n","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() :\n // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n return formattedNumber;\n}\n","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n switch (name) {\n case 'tel':\n number = value;\n break;\n case 'ext':\n ext = value;\n break;\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n break;\n }\n } // If the phone number is not viable, then abort.\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n var result = {\n number: number\n };\n if (ext) {\n result.ext = ext;\n }\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n if (!number) {\n return '';\n }\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n};\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n metadata = new Metadata(metadata);\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n if (!format) {\n return number;\n }\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n return formattedNumber;\n }\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nimport Metadata from './metadata.js';\nimport isPossibleNumber from './isPossible.js';\nimport isValidNumber from './isValid.js'; // import checkNumberLength from './helpers/checkNumberLength.js'\n\nimport getNumberType from './helpers/getNumberType.js';\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js';\nimport formatNumber from './format.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nvar PhoneNumber = /*#__PURE__*/function () {\n /**\r\n * @param {string} countryOrCountryCallingCode\r\n * @param {string} nationalNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {PhoneNumber}\r\n */\n function PhoneNumber(countryOrCountryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n if (!countryOrCountryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n if (!metadata) {\n throw new TypeError('`metadata` not passed');\n }\n var _getCountryAndCountry = getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadata),\n country = _getCountryAndCountry.country,\n countryCallingCode = _getCountryAndCountry.countryCallingCode;\n this.country = country;\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber; // Exclude `metadata` property output from `PhoneNumber.toString()`\n // so that it doesn't clutter the console output of Node.js.\n // Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n // it would output the whole internal structure of the `metadata` object.\n\n this.getMetadata = function () {\n return metadata;\n };\n }\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"getPossibleCountries\",\n value: function getPossibleCountries() {\n if (this.country) {\n return [this.country];\n }\n return getPossibleCountriesForNumber(this.countryCallingCode, this.nationalNumber, this.getMetadata());\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.getMetadata());\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\n // but later it was found out that it doesn't include the possible `TOO_SHORT` result\n // returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\n // so eventually I simply commented out this method from the `PhoneNumber` class\n // and just left the `validatePhoneNumberLength()` function, even though that one would require\n // and additional step to also validate the actual country / calling code of the phone number.\n // validateLength() {\n // \tconst metadata = new Metadata(this.getMetadata())\n // \tmetadata.selectNumberingPlan(this.countryCallingCode)\n // \tconst result = checkNumberLength(this.nationalNumber, metadata)\n // \tif (result !== 'IS_POSSIBLE') {\n // \t\treturn result\n // \t}\n // }\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n return PhoneNumber;\n}();\nexport { PhoneNumber as default };\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\n var country;\n var countryCallingCode;\n var metadata = new Metadata(metadataJson); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n if (isCountryCode(countryOrCountryCallingCode)) {\n country = countryOrCountryCallingCode;\n metadata.selectNumberingPlan(country);\n countryCallingCode = metadata.countryCallingCode();\n } else {\n countryCallingCode = countryOrCountryCallingCode;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n country = '001';\n }\n }\n }\n return {\n country: country,\n countryCallingCode: countryCallingCode\n };\n}\n","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n return number;\n}\n","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n var nationalPrefix;\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n return {\n nationalNumber: number\n };\n}\n","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n return true;\n}\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n default:\n return true;\n }\n}\n","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n return {\n number: number\n };\n}\n","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n }\n var isNumberWithIddPrefix; // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n isNumberWithIddPrefix = true;\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n if (countryCallingCode) {\n return {\n countryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n return {\n // No need to set it to `UNSPECIFIED`. It can be just `undefined`.\n // countryCallingCodeSource: 'UNSPECIFIED',\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n if (number[1] === '0') {\n return {};\n }\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n i++;\n }\n return {};\n} // The possible values for the returned `countryCallingCodeSource` are:\n//\n// Copy-pasted from:\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\n//\n// // The source from which the country_code is derived. This is not set in the\n// // general parsing method, but in the method that parses and keeps raw_input.\n// // New fields could be added upon request.\n// enum CountryCodeSource {\n// // Default value returned if this is not set, because the phone number was\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\n// // return false if this is the case.\n// UNSPECIFIED = 0;\n//\n// // The country_code is derived based on a phone number with a leading \"+\",\n// // e.g. the French number \"+33 1 42 68 53 00\".\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\n//\n// // The country_code is derived based on a phone number with a leading IDD,\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\n// FROM_NUMBER_WITH_IDD = 5;\n//\n// // The country_code is derived based on a phone number without a leading\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\n// // supplied as France.\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\n//\n// // The country_code is derived NOT based on the phone number itself, but\n// // from the defaultCountry parameter provided in the parsing function by the\n// // clients. This happens mostly for numbers written in the national format\n// // (without country code). For example, this would be set when parsing the\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\n// // France.\n// FROM_DEFAULT_COUNTRY = 20;\n// }\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nexport default function getCountryByNationalNumber(nationalPhoneNumber, _ref) {\n var countries = _ref.countries,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata); // const matchingCountries = []\n\n for (var _iterator = _createForOfIteratorHelperLoose(countries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // \"Leading digits\" patterns are only defined for about 20% of all countries.\n // By definition, matching \"leading digits\" is a sufficient but not a necessary\n // condition for a phone number to belong to a country.\n // The point of \"leading digits\" check is that it's the fastest one to get a match.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n // because of the intended use of that feature.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n // If both the `defaultCountry` and the \"main\" one match the phone number,\n // don't prefer the `defaultCountry` over the \"main\" one.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\n return country; // // If the `defaultCountry` is among the `matchingCountries` then return it.\n // if (defaultCountry) {\n // \tif (country === defaultCountry) {\n // \t\treturn country\n // \t}\n // \tmatchingCountries.push(country)\n // } else {\n // \treturn country\n // }\n }\n } // // Return the first (\"main\") one of the `matchingCountries`.\n // if (matchingCountries.length > 0) {\n // \treturn matchingCountries[0]\n // }\n}\n","import getCountryByNationalNumber from './getCountryByNationalNumber.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, _ref) {\n var nationalPhoneNumber = _ref.nationalNumber,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n }\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n return getCountryByNationalNumber(nationalPhoneNumber, {\n countries: possibleCountries,\n defaultCountry: defaultCountry,\n metadata: metadata.metadata\n });\n}\n","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\n// Example: `\"tel:12133734253;phone-context=+1\"`.\n// This function parses the full phone number from the local number and the `phone-context`\n// when the `phone-context` contains a `+` sign.\nimport { VALID_DIGITS // PLUS_CHARS\n} from '../constants.js';\nexport var PLUS_SIGN = '+';\nvar RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?';\nvar RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')';\nvar RFC3966_GLOBAL_NUMBER_DIGITS_ = '^' + '\\\\' + PLUS_SIGN + RFC3966_PHONE_DIGIT_ + '*' + '[' + VALID_DIGITS + ']' + RFC3966_PHONE_DIGIT_ + '*' + '$';\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g'); // In this port of Google's library, we don't accept alpha characters in phone numbers.\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\n\nvar ALPHANUM_ = VALID_DIGITS;\nvar RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar VALID_ALPHA_ = 'a-zA-Z';\nvar RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$';\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g');\nexport var RFC3966_PREFIX_ = 'tel:';\nexport var RFC3966_PHONE_CONTEXT_ = ';phone-context=';\nexport var RFC3966_ISDN_SUBADDRESS_ = ';isub=';\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\n\nexport default function extractPhoneContext(numberToExtractFrom) {\n var indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_); // If no phone-context parameter is present\n\n if (indexOfPhoneContext < 0) {\n return null;\n }\n var phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length; // If phone-context parameter is empty\n\n if (phoneContextStart >= numberToExtractFrom.length) {\n return '';\n }\n var phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart); // If phone-context is not the last parameter\n\n if (phoneContextEnd >= 0) {\n return numberToExtractFrom.substring(phoneContextStart, phoneContextEnd);\n } else {\n return numberToExtractFrom.substring(phoneContextStart);\n }\n}\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\n\nexport function isPhoneContextValid(phoneContext) {\n if (phoneContext === null) {\n return true;\n }\n if (phoneContext.length === 0) {\n return false;\n } // Does phone-context value match pattern of global-number-digits or domainname.\n\n return RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) || RFC3966_DOMAINNAME_PATTERN_.test(phoneContext);\n}\n","import extractPhoneContext, { isPhoneContextValid, PLUS_SIGN, RFC3966_PREFIX_, RFC3966_PHONE_CONTEXT_, RFC3966_ISDN_SUBADDRESS_ } from './extractPhoneContext.js';\nimport ParseError from '../ParseError.js';\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\n\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, _ref) {\n var extractFormattedPhoneNumber = _ref.extractFormattedPhoneNumber;\n var phoneContext = extractPhoneContext(numberToParse);\n if (!isPhoneContextValid(phoneContext)) {\n throw new ParseError('NOT_A_NUMBER');\n }\n var phoneNumberString;\n if (phoneContext === null) {\n // Extract a possible number from the string passed in.\n // (this strips leading characters that could not be the start of a phone number)\n phoneNumberString = extractFormattedPhoneNumber(numberToParse) || '';\n } else {\n phoneNumberString = ''; // If the phone context contains a phone number prefix, we need to capture\n // it, whereas domains will be ignored.\n\n if (phoneContext.charAt(0) === PLUS_SIGN) {\n phoneNumberString += phoneContext;\n } // Now append everything between the \"tel:\" prefix and the phone-context.\n // This should include the national number, an optional extension or\n // isdn-subaddress component. Note we also handle the case when \"tel:\" is\n // missing, as we have seen in some of the phone number inputs.\n // In that case, we append everything from the beginning.\n\n var indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_);\n var indexOfNationalNumber; // RFC 3966 \"tel:\" prefix is preset at this stage because\n // `isPhoneContextValid()` requires it to be present.\n\n /* istanbul ignore else */\n\n if (indexOfRfc3966Prefix >= 0) {\n indexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length;\n } else {\n indexOfNationalNumber = 0;\n }\n var indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_);\n phoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext);\n } // Delete the isdn-subaddress and everything after it if it is present.\n // Note extension won't appear at the same time with isdn-subaddress\n // according to paragraph 5.3 of the RFC3966 spec.\n\n var indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_);\n if (indexOfIsdn > 0) {\n phoneNumberString = phoneNumberString.substring(0, indexOfIsdn);\n } // If both phone context and isdn-subaddress are absent but other\n // parameters are present, the parameters are left in nationalNumber.\n // This is because we are concerned about deleting content from a potential\n // number string when there is no strong evidence that the number is\n // actually written in RFC3966.\n\n if (phoneNumberString !== '') {\n return phoneNumberString;\n }\n}\n","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossible.js'; // import { parseRFC3966 } from './helpers/RFC3966.js'\n\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n throw new ParseError('NOT_A_NUMBER');\n }\n return {};\n }\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n countryCallingCodeSource = _parsePhoneNumber.countryCallingCodeSource,\n carrierCode = _parsePhoneNumber.carrierCode;\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n return {};\n } // Validate national (significant) number length.\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n return {};\n }\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n if (country) {\n phoneNumber.country = country;\n }\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n if (ext) {\n phoneNumber.ext = ext;\n }\n phoneNumber.__countryCallingCodeSource = countryCallingCodeSource;\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction _extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n return;\n }\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n if (startsAt < 0) {\n return;\n }\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nfunction parseInput(text, v2, extract) {\n // // Parse RFC 3966 phone number URI.\n // if (text && text.indexOf('tel:') === 0) {\n // \treturn parseRFC3966(text)\n // }\n // let number = extractFormattedPhoneNumber(text, extract, v2)\n var number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\n extractFormattedPhoneNumber: function extractFormattedPhoneNumber(text) {\n return _extractFormattedPhoneNumber(text, extract, v2);\n }\n }); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n var withExtensionStripped = extractExtension(number);\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n if (ext) {\n result.ext = ext;\n }\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCodeSource = _extractCountryCallin.countryCallingCodeSource,\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n var country;\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is passed in \"national\" format\n // then `number` is defined and `countryCallingCode` is `undefined`.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n if (!number) {\n return {\n countryCallingCodeSource: countryCallingCodeSource,\n countryCallingCode: countryCallingCode\n };\n }\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, {\n nationalNumber: nationalNumber,\n defaultCountry: defaultCountry,\n metadata: metadata\n });\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n countryCallingCodeSource: countryCallingCodeSource,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport isObject from './helpers/isObject.js'; // Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\n\nexport default function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n}\n","import _parseNumber from '../parse.js';\nimport normalizeArguments from '../normalizeArguments.js';\nexport default function parseNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n return _parseNumber(text, options, metadata);\n}\n","import withMetadataArgument from '../min/exports/withMetadataArgument.js';\nimport _parse from '../es6/legacy/parse.js';\nexport function parse() {\n return withMetadataArgument(_parse, arguments);\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport _formatNumber from '../format.js';\nimport parse from '../parse.js';\nimport isObject from '../helpers/isObject.js';\nexport default function formatNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n format = _normalizeArguments.format,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n return _formatNumber(input, format, options, metadata);\n} // Sort out arguments\n\nfunction normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 5),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3],\n arg_5 = _Array$prototype$slic2[4];\n var input;\n var format;\n var options;\n var metadata; // Sort out arguments.\n // If the phone number is passed as a string.\n // `format('8005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If country code is supplied.\n // `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\n if (typeof arg_3 === 'string') {\n format = arg_3;\n if (arg_5) {\n options = arg_4;\n metadata = arg_5;\n } else {\n metadata = arg_4;\n }\n input = parse(arg_1, {\n defaultCountry: arg_2,\n extended: true\n }, metadata);\n } // Just an international phone number is supplied\n // `format('+78005553535', 'NATIONAL', [options], metadata)`.\n else {\n if (typeof arg_2 !== 'string') {\n throw new Error('`format` argument not passed to `formatNumber(number, format)`');\n }\n format = arg_2;\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n }\n input = parse(arg_1, {\n extended: true\n }, metadata);\n }\n } // If the phone number is passed as a parsed number object.\n // `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\n else if (isObject(arg_1)) {\n input = arg_1;\n format = arg_2;\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); // Legacy lowercase formats.\n\n if (format === 'International') {\n format = 'INTERNATIONAL';\n } else if (format === 'National') {\n format = 'NATIONAL';\n }\n return {\n input: input,\n format: format,\n options: options,\n metadata: metadata\n };\n}\n","import withMetadataArgument from '../min/exports/withMetadataArgument.js';\nimport _format from '../es6/legacy/format.js';\nexport function format() {\n return withMetadataArgument(_format, arguments);\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport parse from './parse.js';\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n return parse(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n","import parsePhoneNumberWithError_ from './parsePhoneNumberWithError_.js';\nimport normalizeArguments from './normalizeArguments.js';\nexport default function parsePhoneNumberWithError() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n return parsePhoneNumberWithError_(text, options, metadata);\n}\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n try {\n return parsePhoneNumberWithError(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n","import normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n return parsePhoneNumber_(text, options, metadata);\n}\n","import Metadata from './metadata.js';\nexport default function getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n","export { default as ParseError } from '../es6/ParseError.js';\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\nexport { default as parsePhoneNumberWithError, default as parsePhoneNumber } from '../es6/parsePhoneNumberWithError.js';\n\n// `parsePhoneNumberFromString()` named export is now considered legacy:\n// it has been promoted to a default export due to being too verbose.\nexport { default, default as parsePhoneNumberFromString } from '../es6/parsePhoneNumber.js';\nexport { default as isValidPhoneNumber } from '../es6/isValidPhoneNumber.js';\nexport { default as isPossiblePhoneNumber } from '../es6/isPossiblePhoneNumber.js';\nexport { default as validatePhoneNumberLength } from '../es6/validatePhoneNumberLength.js';\n\n// Deprecated.\nexport { default as findNumbers } from '../es6/legacy/findNumbers.js';\nexport { default as searchNumbers } from '../es6/legacy/searchNumbers.js';\nexport { default as findPhoneNumbersInText } from '../es6/findPhoneNumbersInText.js';\nexport { default as searchPhoneNumbersInText } from '../es6/searchPhoneNumbersInText.js';\nexport { default as PhoneNumberMatcher } from '../es6/PhoneNumberMatcher.js';\nexport { default as AsYouType } from '../es6/AsYouType.js';\nexport { DIGIT_PLACEHOLDER } from '../es6/AsYouTypeFormatter.js';\nexport { default as getCountries } from '../es6/getCountries.js';\nexport { default as Metadata, isSupportedCountry, getCountryCallingCode, getExtPrefix } from '../es6/metadata.js';\nexport { default as getExampleNumber } from '../es6/getExampleNumber.js';\nexport { default as formatIncompletePhoneNumber } from '../es6/formatIncompletePhoneNumber.js';\nexport { default as parseIncompletePhoneNumber, parsePhoneNumberCharacter } from '../es6/parseIncompletePhoneNumber.js';\nexport { default as parseDigits } from '../es6/helpers/parseDigits.js';\nexport { parseRFC3966, formatRFC3966 } from '../es6/helpers/RFC3966.js';","import withMetadataArgument from './withMetadataArgument.js';\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js';\nexport function parsePhoneNumberWithError() {\n return withMetadataArgument(_parsePhoneNumberWithError, arguments);\n}","import withMetadataArgument from './withMetadataArgument.js';\nimport { default as _parsePhoneNumber } from '../../core/index.js';\nexport function parsePhoneNumber() {\n return withMetadataArgument(_parsePhoneNumber, arguments);\n}","import withMetadataArgument from './withMetadataArgument.js';\nimport { getCountries as _getCountries } from '../../core/index.js';\nexport function getCountries() {\n return withMetadataArgument(_getCountries, arguments);\n}","import withMetadataArgument from './withMetadataArgument.js';\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js';\nexport function getCountryCallingCode() {\n return withMetadataArgument(_getCountryCallingCode, arguments);\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport isViablePhoneNumber from '../helpers/isViablePhoneNumber.js';\nimport _getNumberType from '../helpers/getNumberType.js';\nimport isObject from '../helpers/isObject.js';\nimport parse from '../parse.js'; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata; // `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\n if (!input.phone) {\n return;\n }\n return _getNumberType(input, options, metadata);\n} // Sort out arguments\n\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n var input;\n var options = {};\n var metadata; // If the phone number is passed as a string.\n // `getNumberType('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If \"default country\" argument is being passed\n // then convert it to an `options` object.\n // `getNumberType('88005553535', 'RU', metadata)`.\n if (!isObject(arg_2)) {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, {\n defaultCountry: arg_2\n }, metadata);\n } else {\n input = {};\n }\n } // No \"resrict country\" argument is being passed.\n // International phone number is passed.\n // `getNumberType('+78005553535', metadata)`.\n else {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, undefined, metadata);\n } else {\n input = {};\n }\n }\n } // If the phone number is passed as a parsed phone number.\n // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\n else if (isObject(arg_1)) {\n input = arg_1;\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.');\n return {\n input: input,\n options: options,\n metadata: metadata\n };\n}\n","import _isValidNumber from '../isValid.js';\nimport { normalizeArguments } from './getNumberType.js'; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function isValidNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata; // `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\n if (!input.phone) {\n return false;\n }\n return _isValidNumber(input, options, metadata);\n}\n","// Deprecated.\n\nimport withMetadataArgument from '../min/exports/withMetadataArgument.js';\nimport _isValidNumber from '../es6/legacy/isValidNumber.js';\nexport function isValidNumber() {\n return withMetadataArgument(_isValidNumber, arguments);\n}","// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\nexport { parsePhoneNumberWithError, parsePhoneNumberWithError as parsePhoneNumber } from './min/exports/parsePhoneNumberWithError.js';\n// `parsePhoneNumberFromString()` named export is now considered legacy:\n// it has been promoted to a default export due to being too verbose.\nexport { parsePhoneNumber as parsePhoneNumberFromString, parsePhoneNumber as default } from './min/exports/parsePhoneNumber.js';\nexport { isValidPhoneNumber } from './min/exports/isValidPhoneNumber.js';\nexport { isPossiblePhoneNumber } from './min/exports/isPossiblePhoneNumber.js';\nexport { validatePhoneNumberLength } from './min/exports/validatePhoneNumberLength.js';\n\n// Deprecated.\nexport { findNumbers } from './min/exports/findNumbers.js';\nexport { searchNumbers } from './min/exports/searchNumbers.js';\nexport { findPhoneNumbersInText } from './min/exports/findPhoneNumbersInText.js';\nexport { searchPhoneNumbersInText } from './min/exports/searchPhoneNumbersInText.js';\nexport { PhoneNumberMatcher } from './min/exports/PhoneNumberMatcher.js';\nexport { AsYouType } from './min/exports/AsYouType.js';\nexport { DIGIT_PLACEHOLDER } from './es6/AsYouTypeFormatter.js';\nexport { isSupportedCountry } from './min/exports/isSupportedCountry.js';\nexport { getCountries } from './min/exports/getCountries.js';\n// `getPhoneCode` name is deprecated, use `getCountryCallingCode` instead.\nexport { getCountryCallingCode, getCountryCallingCode as getPhoneCode } from './min/exports/getCountryCallingCode.js';\nexport { getExtPrefix } from './min/exports/getExtPrefix.js';\nexport { Metadata } from './min/exports/Metadata.js';\nexport { getExampleNumber } from './min/exports/getExampleNumber.js';\nexport { formatIncompletePhoneNumber } from './min/exports/formatIncompletePhoneNumber.js';\nexport { ParseError, parseIncompletePhoneNumber, parsePhoneNumberCharacter, parseDigits, parseRFC3966, formatRFC3966 } from './core/index.js';\n\n// Deprecated (old) exports.\nexport { parse as parseNumber, parse } from './index.es6.exports/parse.js';\nexport { format as formatNumber, format } from './index.es6.exports/format.js';\nexport { getNumberType } from './index.es6.exports/getNumberType.js';\nexport { isPossibleNumber } from './index.es6.exports/isPossibleNumber.js';\nexport { isValidNumber } from './index.es6.exports/isValidNumber.js';\nexport { isValidNumberForRegion } from './index.es6.exports/isValidNumberForRegion.js';\nexport { findPhoneNumbers } from './index.es6.exports/findPhoneNumbers.js';\nexport { searchPhoneNumbers } from './index.es6.exports/searchPhoneNumbers.js';\nexport { PhoneNumberSearch } from './index.es6.exports/PhoneNumberSearch.js';\n\n// Deprecated DIGITS export.\n// (it was used in `react-phone-number-input`)\nexport { DIGITS } from './es6/helpers/parseDigits.js';\n\n// Deprecated \"custom\" exports.\nexport { default as parseCustom } from './es6/legacy/parse.js';\nexport { default as formatCustom } from './es6/legacy/format.js';\nexport { default as isValidNumberCustom } from './es6/legacy/isValidNumber.js';\nexport { default as findPhoneNumbersCustom } from './es6/legacy/findPhoneNumbers.js';\nexport { searchPhoneNumbers as searchPhoneNumbersCustom } from './es6/legacy/findPhoneNumbers.js';\nexport { PhoneNumberSearch as PhoneNumberSearchCustom } from './es6/legacy/findPhoneNumbersInitialImplementation.js';\nexport { default as getNumberTypeCustom } from './es6/legacy/getNumberType.js';\nexport { default as getCountryCallingCodeCustom, default as getPhoneCodeCustom } from './es6/getCountryCallingCode.js';\nexport { default as AsYouTypeCustom } from './es6/AsYouType.js';"],"mappings":"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,MACL,IAAK,eACL,IAAK,KACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,SACL,IAAK,SACL,IAAK,IACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,WACL,IAAK,OACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,gBACL,IAAK,SACL,IAAK,KACL,IAAK,OACL,IAAK,KACL,IAAK,KACL,IAAK,OACL,IAAK,MACL,IAAK,eACL,IAAK,SACL,IAAK,KACL,IAAK,SACL,IAAK,SACL,IAAK,KACL,IAAK,IACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,IACL,IAAK,IACL,IAAK,SACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,KACL,IAAK,qBACL,IAAK,IACL,IAAK,SACL,IAAK,OACL,IAAK,KACL,IAAK,KACL,IAAK,SACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,SACL,IAAK,KACL,IAAK,KACL,IAAK,SACL,IAAK,IACL,IAAK,SACL,IAAK,MACL,IAAK,MACL,IAAK,IACL,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,KACL,IAAK,SACL,IAAK,SACL,IAAK,MACL,IAAK,sBACL,IAAK,SACL,IAAK,UACL,IAAK,SACL,IAAK,IACL,IAAK,SACL,IAAK,iBACL,IAAK,KACL,IAAK,KACL,IAAK,OACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,OACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,OACL,IAAK,IACL,IAAK,SACL,IAAK,KACL,IAAK,IACL,IAAK,gBACL,IAAK,KACL,IAAK,SACL,IAAK,SACL,IAAK,MACL,IAAK,IACL,IAAK,MACL,IAAK,MACL,IAAK,SACL,IAAK,MACL,IAAK,IACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,eACL,IAAK,KACL,IAAK,OACL,IAAK,SACL,IAAK,KACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,IACL,IAAK,MACL,IAAK,SACL,IAAK,QACL,IAAK,MACL,IAAK,SACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,GACP,IC5LA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAMC,GAAoB,KAC1BD,GAAO,QAAU,SAA+BE,EAAc,CAC5D,GAAI,OAAOA,GAAiB,SAC1B,OAEF,IAAMC,EAAOD,EAAa,YAAY,EACtC,GAAK,OAAO,UAAU,eAAe,KAAKD,GAAmBE,CAAI,EAGjE,OAAOF,GAAkBE,CAAI,CAC/B,EACAH,GAAO,QAAQ,kBAAoBC,KCXnC,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CACA,IAAIC,GAAM,CACR,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAA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,KACAC,KACAC,KACAC,KAWIR,GAAS,CACX,KAAM,KACN,eAAgBS,GAChB,WAAYC,GACZ,eAAgBC,GAChB,SAAUC,GACV,MAAOC,GACP,QAAS,CACP,aAAc,EACd,sBAAuB,CACzB,CACF,EACOZ,GAAQD,KC3Bf,IAAIc,GA4JAC,GAmBGC,GA/KPC,GAAAC,EAAA,KAAIJ,GAAuB,CACzB,iBAAkB,CAChB,WAAY,CACV,IAAK,wBACL,MAAO,gCACT,EACA,gBAAiB,CACf,IAAK,wBACL,MAAO,gCACT,CACF,EACA,SAAU,CACR,WAAY,CACV,IAAK,YACL,MAAO,oBACT,EACA,gBAAiB,CACf,IAAK,YACL,MAAO,oBACT,CACF,EACA,YAAa,CACX,WAAY,eACZ,gBAAiB,eACnB,EACA,iBAAkB,CAChB,WAAY,CACV,IAAK,uBACL,MAAO,+BACT,EACA,gBAAiB,CACf,IAAK,uBACL,MAAO,+BACT,CACF,EACA,SAAU,CACR,WAAY,CACV,IAAK,WACL,MAAO,mBACT,EACA,gBAAiB,CACf,IAAK,WACL,MAAO,mBACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,gBACL,MAAO,wBACT,EACA,gBAAiB,CACf,IAAK,gBACL,MAAO,wBACT,CACF,EACA,OAAQ,CACN,WAAY,CACV,IAAK,WACL,MAAO,mBACT,EACA,gBAAiB,CACf,IAAK,WACL,MAAO,mBACT,CACF,EACA,MAAO,CACL,WAAY,CACV,IAAK,QACL,MAAO,gBACT,EACA,gBAAiB,CACf,IAAK,QACL,MAAO,iBACT,CACF,EACA,YAAa,CACX,WAAY,CACV,IAAK,eACL,MAAO,uBACT,EACA,gBAAiB,CACf,IAAK,eACL,MAAO,uBACT,CACF,EACA,OAAQ,CACN,WAAY,CACV,IAAK,UACL,MAAO,kBACT,EACA,gBAAiB,CACf,IAAK,UACL,MAAO,kBACT,CACF,EACA,aAAc,CACZ,WAAY,CACV,IAAK,eACL,MAAO,uBACT,EACA,gBAAiB,CACf,IAAK,eACL,MAAO,wBACT,CACF,EACA,QAAS,CACP,WAAY,CACV,IAAK,UACL,MAAO,kBACT,EAC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AAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,KAAM,IAAI,EAClB,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,KAAM,IAAI,EAClB,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,KAAM,IAAI,EAClB,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,KAAM,KAAM,IAAI,EACxB,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,KAAM,IAAI,EAClB,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,EACZ,IAAO,CAAC,IAAI,CACd,EACA,UAAa,CACX,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,CAAC,CAAC,EACvD,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EACpM,GAAM,CAAC,MAAO,KAAM,yDAA0D,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAM,CAAC,EAAG,CAAC,wBAAyB,WAAY,CAAC,kBAAkB,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,OAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACzU,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACxG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,oBAAqB,QAAS,EAAG,KAAK,EAC1G,GAAM,CAAC,MAAO,KAAM,yDAA0D,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC5X,GAAM,CAAC,MAAO,KAAM,gCAAiC,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,MAAM,EAAG,CAAC,mBAAoB,QAAS,CAAC,SAAS,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACpR,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAC3F,GAAM,CAAC,KAAM,KAAM,uCAAwC,CAAC,GAAI,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,uFAAwF,kNAAmN,kSAAmS,6WAA6W,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,MAAO,CAAC,EAAG,CAAC,gCAAiC,cAAe,CAAC,yBAA0B,4FAA6F,wNAAyN,4SAA6S,sXAAsX,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,gCAAiC,cAAe,CAAC,IAAI,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,GAAG,EAAG,MAAO,EAAG,aAAa,CAAC,EAAG,IAAK,EAAG,0jBAA2jB,KAAK,EACrlG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,KAAM,KAAM,mKAAoK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,qDAAqD,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,gBAAgB,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9oB,GAAM,CAAC,KAAM,sDAAuD,+EAAgF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,QAAQ,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,cAAc,CAAC,CAAC,EAAG,IAAK,EAAG,cAAe,EAAG,EAAG,EAAG,CAAC,CAAC,8cAA+c,CAAC,CAAC,CAAC,EAAG,CAAC,0GAA2G,CAAC,CAAC,CAAC,EAAG,CAAC,yBAA0B,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,kBAAmB,CAAC,EAAE,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,cAAe,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,2CAA4C,CAAC,CAAC,CAAC,EAAG,CAAC,mDAAoD,CAAC,EAAG,EAAG,GAAI,EAAE,CAAC,CAAC,EAAG,MAAM,EACjyC,GAAM,CAAC,MAAO,KAAM,8BAA+B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EACnG,GAAM,CAAC,MAAO,sDAAuD,4FAA6F,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,KAAM,EAAG,IAAI,EAChO,GAAM,CAAC,MAAO,KAAM,wCAAyC,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,iBAAkB,qBAAsB,2BAA2B,EAAG,OAAO,EAAG,CAAC,mCAAoC,cAAe,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,GAAG,EACxV,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,cAAc,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,aAAa,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC/Q,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,MAAO,KAAM,kFAAmF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,gBAAgB,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,sLAAsL,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,cAAc,EAAG,KAAK,EAAG,CAAC,kBAAmB,QAAS,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAClgB,GAAM,CAAC,KAAM,KAAM,sBAAuB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,WAAW,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,aAAa,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC5U,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAC5G,GAAM,CAAC,MAAO,KAAM,iDAAkD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,6BAA8B,cAAe,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,iBAAiB,EAAG,KAAK,EAAG,CAAC,0BAA2B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,qCAAqC,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,WAAW,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,WAAW,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,YAAY,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACnmB,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACjG,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EACnH,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,UAAU,CAAC,EAAG,CAAC,2CAA4C,iBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EACnM,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,CAAC,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,qCAAqC,EAAG,CAAC,0GAA0G,EAAG,CAAC,eAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,4CAA4C,CAAC,CAAC,EACvU,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EACtF,GAAM,CAAC,MAAO,cAAe,qCAAsC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,gBAAiB,QAAS,CAAC,aAAa,CAAC,EAAG,CAAC,WAAY,KAAM,CAAC,MAAM,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,IAAK,EAAG,UAAU,EAC3N,GAAM,CAAC,MAAO,KAAM,uBAAwB,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAO,EAC1E,GAAM,CAAC,KAAM,yCAA0C,0FAA2F,CAAC,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,oBAAqB,oBAAoB,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,4DAA4D,EAAG,MAAM,EAAG,CAAC,2BAA4B,WAAY,CAAC,oBAAoB,EAAG,MAAM,CAAC,EAAG,IAAK,EAAG,8DAA+D,IAAI,EAC7jB,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,eAAe,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAClL,GAAM,CAAC,MAAO,KAAM,uDAAwD,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,gBAAgB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EACxU,GAAM,CAAC,MAAO,MAAO,mIAAoI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,KAAK,EAAG,MAAM,EAAG,CAAC,6BAA8B,WAAY,CAAC,KAAK,EAAG,MAAM,EAAG,CAAC,2BAA4B,WAAY,CAAC,oDAAqD,uFAAuF,EAAG,OAAO,EAAG,CAAC,mCAAoC,cAAe,CAAC,yBAAyB,EAAG,OAAO,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,EAAG,OAAO,EAAG,CAAC,6BAA8B,WAAY,CAAC,MAAM,EAAG,MAAM,CAAC,EAAG,IAAK,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,MAAM,EACtuB,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,gCAAiC,cAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3J,GAAM,CAAC,IAAK,MAAO,sBAAuB,CAAC,EAAG,EAAE,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,qNAAsN,CAAC,EAAE,CAAC,EAAG,CAAC,GAAI,CAAC,EAAE,CAAC,EAAG,CAAC,uCAAwC,CAAC,EAAE,CAAC,EAAG,CAAC,iBAAkB,CAAC,EAAE,CAAC,EAAG,CAAC,sPAAuP,CAAC,EAAE,CAAC,EAAG,EAAG,CAAC,YAAa,CAAC,CAAC,CAAC,EAAG,EAAG,CAAC,iBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EACjrB,GAAM,CAAC,KAAM,sDAAuD,qEAAsE,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,EAAG,IAAK,EAAG,kBAAmB,MAAO,EAAG,EAAG,CAAC,CAAC,0IAA2I,CAAC,CAAC,CAAC,EAAG,CAAC,0GAA2G,CAAC,CAAC,CAAC,EAAG,CAAC,yBAA0B,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,kBAAmB,CAAC,EAAE,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,2CAA4C,CAAC,CAAC,CAAC,EAAG,CAAC,mDAAoD,CAAC,EAAG,EAAG,GAAI,EAAE,CAAC,CAAC,EAAG,MAAM,EAC5pB,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9a,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EACtH,GAAM,CAAC,MAAO,KAAM,8BAA+B,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1J,GAAM,CAAC,KAAM,KAAM,uBAAwB,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,WAAW,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,WAAW,EAAG,KAAK,EAAG,CAAC,2CAA4C,iBAAkB,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAClR,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,EAAE,EAAG,CAAC,CAAC,gCAAiC,cAAe,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAC7J,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EACtF,GAAM,CAAC,KAAM,yDAA0D,qCAAsC,CAAC,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,MAAM,EAAG,MAAM,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,wBAAyB,WAAY,CAAC,SAAS,EAAG,MAAM,EAAG,CAAC,wBAAyB,WAAY,CAAC,QAAQ,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,kDAAkD,EAAG,MAAM,EAAG,CAAC,6BAA8B,WAAY,CAAC,MAAM,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAC/lB,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,IAAI,CAAC,EAAG,CAAC,wCAAyC,iBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAC5L,GAAM,CAAC,KAAM,6BAA8B,2HAA4H,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,2TAA4T,kWAAmW,wXAAyX,0XAA2X,sXAAsX,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,+QAAgR,4SAA6S,qUAAsU,sUAAsU,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,WAAW,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,2BAA4B,2BAA4B,4DAA4D,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,+LAA+L,EAAG,MAAO,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,MAAM,EAAG,MAAO,CAAC,CAAC,EAAG,IAAK,EAAG,4BAA6B,EAAG,EAAG,EAAG,EAAG,IAAI,EAC/hI,GAAM,CAAC,KAAM,4BAA6B,4CAA6C,CAAC,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,MAAM,EAAG,CAAC,mBAAoB,QAAS,CAAC,aAAa,CAAC,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,MAAO,EAAG,UAAU,CAAC,EAAG,IAAK,EAAG,0BAA0B,EACpV,GAAM,CAAC,MAAO,KAAM,gDAAiD,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,cAAc,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,CAAC,EAAG,EAAG,EAAG,qCAAqC,EAChO,GAAM,CAAC,KAAM,MAAO,kDAAmD,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,aAAa,EAAG,OAAO,EAAG,CAAC,kBAAmB,QAAS,CAAC,GAAG,EAAG,OAAO,EAAG,CAAC,gBAAiB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9R,GAAM,CAAC,MAAO,IAAK,6BAA8B,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAC7G,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,EAAG,CAAC,wBAAyB,WAAY,CAAC,QAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAM,EACrL,GAAM,CAAC,KAAM,sDAAuD,qEAAsE,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,EAAG,IAAK,EAAG,kBAAmB,MAAO,EAAG,EAAG,CAAC,CAAC,4JAA6J,CAAC,CAAC,CAAC,EAAG,CAAC,0GAA2G,CAAC,CAAC,CAAC,EAAG,CAAC,yBAA0B,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,kBAAmB,CAAC,EAAE,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,2CAA4C,CAAC,CAAC,CAAC,EAAG,CAAC,mDAAoD,CAAC,EAAG,EAAG,GAAI,EAAE,CAAC,CAAC,EAAG,MAAM,EAC9qB,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EACjG,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,gBAAgB,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,IAAI,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAC9T,GAAM,CAAC,KAAM,KAAM,gMAAiM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,sBAAuB,QAAS,CAAC,gBAAgB,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,sGAAuG,8GAA8G,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,uGAAwG,0bAA0b,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,aAAa,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,UAAU,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,YAAa,iBAAiB,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,CAAC,EAAG,GAAG,EAC19D,GAAM,CAAC,MAAO,KAAM,oBAAqB,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAC7G,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EACvG,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,IAAK,MAAO,2BAA4B,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,cAAc,EACvF,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EAClR,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,OAAO,EAAG,QAAS,EAAG,UAAU,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EACjQ,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,mDAAoD,8EAA8E,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,sBAAuB,0BAA0B,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3a,GAAM,CAAC,KAAM,KAAM,yCAA0C,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,kBAAmB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,8BAA8B,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC/S,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,SAAS,EACrE,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACtG,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAC7J,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,CAAC,EAAG,GAAG,EACvH,GAAM,CAAC,MAAO,sDAAuD,2EAA4E,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,WAAY,KAAM,CAAC,UAAU,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,2BAA2B,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,sBAAsB,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,kBAAmB,QAAS,CAAC,wCAAwC,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,iBAAkB,EAAG,IAAI,EAC7gB,GAAM,CAAC,MAAO,YAAa,qCAAsC,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAAY,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EACrM,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,CAAC,EACtC,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC/F,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,WAAY,KAAM,CAAC,OAAO,CAAC,CAAC,EAAG,EAAG,EAAG,qBAAqB,EACpG,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,MAAM,EAAG,CAAC,wCAAyC,iBAAkB,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,GAAG,EAChM,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,gCAAiC,cAAe,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,SAAS,EAAG,KAAK,CAAC,EAAG,EAAG,EAAG,0DAA2D,IAAI,EACjV,GAAM,CAAC,KAAM,KAAM,qCAAsC,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,OAAQ,QAAS,SAAU,SAAS,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAO,OAAQ,QAAS,QAAQ,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,yBAA0B,qCAAsC,kDAAkD,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,wBAAwB,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,sBAAuB,gCAAgC,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,07CAA27C,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,4NAA6N,CAAC,EAAE,CAAC,EAAG,CAAC,gCAAgC,EAAG,CAAC,8DAA+D,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,WAAY,CAAC,EAAE,CAAC,EAAG,EAAG,CAAC,uBAAwB,CAAC,EAAE,CAAC,EAAG,CAAC,4FAA6F,CAAC,EAAE,CAAC,EAAG,CAAC,WAAY,CAAC,EAAE,CAAC,CAAC,EAAG,EAAG,IAAI,EAC9rF,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,MAAM,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EAC/T,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,aAAa,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EAC/N,GAAM,CAAC,KAAM,KAAM,kDAAmD,CAAC,EAAG,EAAG,EAAE,EAAG,EAAG,IAAK,EAAG,oBAAqB,SAAU,EAAG,EAAG,CAAC,CAAC,mBAAoB,CAAC,EAAE,CAAC,EAAG,CAAC,oCAAqC,CAAC,EAAE,CAAC,EAAG,CAAC,gCAAgC,EAAG,CAAC,6DAA8D,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,WAAY,CAAC,EAAE,CAAC,EAAG,EAAG,CAAC,uBAAwB,CAAC,EAAE,CAAC,EAAG,CAAC,4FAA6F,CAAC,EAAE,CAAC,EAAG,CAAC,WAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EACxe,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACvK,GAAM,CAAC,MAAO,KAAM,uBAAwB,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EACvF,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/G,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAClF,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EACrL,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,kFAAkF,EAAG,CAAC,0GAA0G,EAAG,CAAC,eAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,4CAA4C,CAAC,CAAC,EAC9f,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAO,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAC5J,GAAM,CAAC,KAAM,KAAM,iDAAkD,CAAC,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,4DAA4D,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAC/U,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAC5J,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,MAAO,KAAM,qBAAsB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAC7I,GAAM,CAAC,MAAO,MAAO,6BAA8B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAClG,GAAM,CAAC,MAAO,0BAA2B,sDAAuD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAO,MAAM,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,gCAAgC,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAClX,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EACnG,GAAM,CAAC,MAAO,KAAM,iEAAkE,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,UAAU,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACxgB,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAC3G,GAAM,CAAC,KAAM,KAAM,4BAA6B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,SAAS,EAAG,CAAC,2BAA4B,WAAY,CAAC,sDAAsD,EAAG,SAAS,EAAG,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,OAAO,CAAC,EAAG,IAAI,EACtS,GAAM,CAAC,KAAM,SAAU,gFAAiF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,cAAc,EAAG,OAAO,EAAG,CAAC,qBAAsB,QAAS,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,QAAQ,EAAG,OAAO,EAAG,CAAC,6BAA8B,WAAY,CAAC,WAAW,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAChpB,GAAM,CAAC,MAAO,KAAM,sDAAuD,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,gCAAgC,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,OAAO,EAAG,CAAC,0BAA2B,WAAY,CAAC,GAAG,EAAG,OAAO,EAAG,CAAC,6BAA8B,WAAY,CAAC,sBAAsB,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,OAAO,EAAG,CAAC,gCAAiC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAChsB,GAAM,CAAC,MAAO,gBAAiB,gDAAiD,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,KAAK,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,KAAK,CAAC,EAAG,CAAC,wBAAyB,WAAY,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,KAAK,CAAC,EAAG,CAAC,gCAAiC,cAAe,CAAC,QAAQ,CAAC,EAAG,CAAC,qCAAsC,cAAe,CAAC,IAAI,CAAC,CAAC,EAAG,GAAG,EACphB,GAAM,CAAC,KAAM,KAAM,oCAAqC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,oBAAqB,SAAU,EAAG,sBAAsB,EACjI,GAAM,CAAC,KAAM,KAAM,0CAA2C,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,WAAY,KAAM,CAAC,8BAA+B,4CAA6C,4CAA4C,EAAG,EAAG,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,MAAO,MAAM,EAAG,EAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,KAAK,EAAG,EAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,qCAAsC,2DAA4D,0FAA0F,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,sYAAuY,meAAoe,ukBAAukB,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,iKAAkK,wSAAyS,iWAAiW,EAAG,MAAO,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,MAAO,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,eAAgB,eAAe,EAAG,EAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,IAAI,EAAG,EAAG,CAAC,CAAC,EAAG,GAAG,EAChnG,GAAM,CAAC,MAAO,KAAM,UAAW,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1E,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACrP,GAAM,CAAC,KAAM,KAAM,wCAAyC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,aAAc,KAAM,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,0EAA0E,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACpW,GAAM,CAAC,MAAO,4BAA6B,wBAAyB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAClM,GAAM,CAAC,KAAM,KAAM,8FAA+F,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,wCAAyC,uDAAuD,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,gCAAgC,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,KAAK,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,SAAS,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,wBAAwB,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,qBAAqB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,8aAA+a,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,CAAC,EAAG,CAAC,iCAAkC,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,wBAAyB,CAAC,EAAG,CAAC,CAAC,EAAG,CAAC,iHAAkH,CAAC,EAAG,EAAG,EAAG,EAAE,CAAC,EAAG,CAAC,sBAAuB,CAAC,EAAG,EAAE,CAAC,EAAG,CAAC,kBAAmB,CAAC,GAAI,EAAE,CAAC,EAAG,EAAG,EAAG,CAAC,WAAY,CAAC,EAAE,CAAC,EAAG,CAAC,8BAA+B,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC,EAC3jD,GAAM,CAAC,KAAM,KAAM,oCAAqC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,sBAAuB,SAAU,EAAG,EAAG,CAAC,CAAC,oBAAoB,EAAG,CAAC,qDAAqD,EAAG,CAAC,8BAA8B,EAAG,CAAC,uGAAuG,EAAG,CAAC,cAAc,EAAG,EAAG,CAAC,+GAA+G,EAAG,CAAC,2FAA2F,EAAG,CAAC,UAAU,CAAC,CAAC,EACnkB,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,SAAS,EACtF,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,WAAW,EAAG,OAAO,EAAG,CAAC,qBAAsB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC3R,GAAM,CAAC,KAAM,MAAO,yDAA0D,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,uFAAwF,wKAAyK,sLAAsL,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,4BAA6B,6CAA6C,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,sVAAuV,soBAAuoB,yvBAAyvB,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,kCAAkC,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,uCAAwC,IAAI,EACx2F,GAAM,CAAC,MAAO,MAAO,2DAA4D,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EACtQ,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,qBAAqB,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,aAAa,EAAG,KAAK,EAAG,CAAC,kCAAmC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9P,GAAM,CAAC,MAAO,WAAY,wBAAyB,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EACnL,GAAM,CAAC,MAAO,KAAM,mDAAoD,CAAC,EAAG,CAAC,EAAG,EAAG,GAAG,EACtF,GAAM,CAAC,MAAO,KAAM,eAAgB,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC/F,GAAM,CAAC,IAAK,MAAO,2BAA4B,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACrG,GAAM,CAAC,MAAO,QAAS,iCAAkC,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAChP,GAAM,CAAC,KAAM,sDAAuD,2GAA4G,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,8BAA8B,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,0BAA2B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,2BAA2B,EACrpB,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,+BAA+B,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC7K,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,IAAK,MAAO,qCAAsC,CAAC,GAAI,EAAE,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,OAAQ,EAAG,MAAM,EACxG,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,mBAAmB,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,YAAY,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EAC7S,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,+CAA+C,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,CAAC,EAAG,GAAG,EACrN,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,sBAAuB,yBAAyB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,IAAK,EAAG,UAAU,EACvU,GAAM,CAAC,KAAM,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,CAAC,EAAG,GAAG,EAClK,GAAM,CAAC,MAAO,KAAM,mDAAoD,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,YAAY,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,CAAC,EAAG,GAAG,EAC5Q,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjG,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,SAAS,EAAG,SAAU,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,OAAQ,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,qBAAqB,EAAG,SAAU,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,SAAU,CAAC,CAAC,EAAG,IAAK,EAAG,MAAM,EACtU,GAAM,CAAC,MAAO,KAAM,yEAA0E,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,kEAAkE,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,kEAAkE,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,WAAW,CAAC,EAAG,CAAC,qCAAsC,cAAe,CAAC,oBAAoB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,gBAAgB,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,6CAA8C,iBAAkB,CAAC,oBAAoB,CAAC,EAAG,CAAC,qCAAsC,cAAe,CAAC,iDAAiD,CAAC,CAAC,EAAG,EAAG,EAAG,mDAAmD,EACp4B,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,aAAa,CAAC,CAAC,CAAC,EAC7G,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9F,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,uCAAuC,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,+HAA+H,EAAG,CAAC,wEAAwE,EAAG,CAAC,eAAe,EAAG,CAAC,UAAU,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,yCAAyC,CAAC,CAAC,EAC7lB,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,EAAG,CAAC,wCAAyC,iBAAkB,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC7P,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,GAAG,EACpO,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACpI,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,CAAC,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,wDAAwD,EAAG,CAAC,0GAA0G,EAAG,CAAC,eAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,4CAA4C,CAAC,CAAC,EAC1V,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,oBAAqB,MAAM,EAClJ,GAAM,CAAC,MAAO,MAAO,kCAAmC,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,EAAG,GAAG,EAC5G,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,8BAA8B,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9P,GAAM,CAAC,MAAO,KAAM,eAAgB,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1G,GAAM,CAAC,KAAM,KAAM,oEAAqE,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,mFAAmF,EAAG,KAAK,EAAG,CAAC,0BAA2B,WAAY,CAAC,kBAAmB,kBAAkB,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,eAAe,EAAG,KAAK,EAAG,CAAC,0BAA2B,WAAY,CAAC,6BAA6B,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAClwB,GAAM,CAAC,MAAO,MAAO,2BAA4B,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,YAAY,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,sCAAuC,0CAA0C,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EAC/Y,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC/I,GAAM,CAAC,IAAK,MAAO,8BAA+B,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACxG,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,yBAAyB,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACxO,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EACvH,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,kBAAmB,QAAS,EAAG,KAAK,EACxG,GAAM,CAAC,MAAO,KAAM,wCAAyC,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAC/G,GAAM,CAAC,MAAO,uBAAwB,uCAAwC,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,eAAe,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAK,EACvP,GAAM,CAAC,MAAO,YAAa,2CAA4C,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAC3M,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,SAAS,EAAG,KAAK,CAAC,EAAG,GAAG,EACjQ,GAAM,CAAC,KAAM,QAAS,cAAe,CAAC,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,aAAa,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EACtL,GAAM,CAAC,KAAM,KAAM,iCAAkC,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,+BAAgC,kDAAkD,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,eAAe,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACpf,GAAM,CAAC,MAAO,KAAM,mBAAoB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,WAAW,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAC5J,GAAM,CAAC,MAAO,KAAM,eAAgB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACrR,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAClH,GAAM,CAAC,MAAO,KAAM,gBAAiB,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAC3K,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,EAAG,CAAC,gBAAiB,QAAS,CAAC,MAAM,CAAC,CAAC,EAAG,EAAG,EAAG,mBAAoB,KAAK,EACzJ,GAAM,CAAC,MAAO,MAAO,2CAA4C,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EACvc,GAAM,CAAC,MAAO,KAAM,8BAA+B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EACpG,GAAM,CAAC,KAAM,KAAM,+EAAgF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,gBAAiB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,yCAAyC,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,YAAY,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACne,GAAM,CAAC,KAAM,KAAM,0BAA2B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,QAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,iBAAiB,EAC1M,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,gBAAiB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,mCAAmC,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EACxO,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EACxG,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAC5F,GAAM,CAAC,KAAM,aAAc,0FAA2F,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,iBAAkB,sBAAsB,EAAG,KAAK,EAAG,CAAC,wBAAyB,WAAY,CAAC,2BAA2B,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,kBAAkB,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,UAAU,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,wBAAwB,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAClmB,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,MAAM,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EACxM,GAAM,CAAC,MAAO,KAAM,oDAAqD,CAAC,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,UAAU,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAChO,GAAM,CAAC,KAAM,0BAA2B,wBAAyB,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,OAAO,EAAG,CAAC,gBAAiB,QAAS,CAAC,GAAG,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,SAAS,EACjT,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,UAAU,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAChP,GAAM,CAAC,MAAO,cAAe,mDAAoD,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,cAAc,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAC9M,GAAM,CAAC,KAAM,KAAM,kDAAmD,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,gBAAiB,QAAS,CAAC,GAAG,EAAG,OAAO,EAAG,CAAC,qBAAsB,QAAS,CAAC,qEAAsE,qHAAqH,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,wBAAyB,+BAA+B,EAAG,OAAO,EAAG,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,cAAc,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,qCAAsC,cAAe,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EACrwB,GAAM,CAAC,KAAM,KAAM,kKAAmK,CAAC,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,kJAAmJ,qKAAqK,EAAG,OAAO,EAAG,CAAC,qBAAsB,QAAS,CAAC,4DAA4D,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,OAAO,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,mDAAmD,EAAG,OAAO,EAAG,CAAC,mCAAoC,cAAe,CAAC,QAAQ,EAAG,OAAO,CAAC,EAAG,GAAG,EAC/hC,GAAM,CAAC,KAAM,KAAM,wDAAyD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,WAAY,KAAM,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,UAAU,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,iFAAkF,iFAAiF,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,gDAAgD,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,6BAA6B,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EACnpB,GAAM,CAAC,MAAO,KAAM,mCAAoC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACpP,GAAM,CAAC,IAAK,MAAO,4BAA6B,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,SAAS,EACnF,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EAC1O,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,OAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,YAAY,CAAC,CAAC,CAAC,EAC7K,GAAM,CAAC,MAAO,SAAU,iCAAkC,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EACzG,GAAM,CAAC,MAAO,KAAM,uDAAwD,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,uCAAuC,EAAG,OAAO,EAAG,CAAC,qBAAsB,QAAS,CAAC,wDAAwD,EAAG,OAAO,EAAG,CAAC,6BAA8B,WAAY,CAAC,sDAAsD,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,oBAAoB,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EAChqB,GAAM,CAAC,MAAO,KAAM,iDAAkD,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC3K,GAAM,CAAC,MAAO,KAAM,kCAAmC,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,sCAAsC,EAAG,CAAC,4GAA4G,EAAG,CAAC,UAAU,EAAG,CAAC,kBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,mDAAmD,EAAG,CAAC,iCAAiC,CAAC,CAAC,EAChc,GAAM,CAAC,KAAM,KAAM,qCAAsC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAU,YAAY,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAO,EAChV,GAAM,CAAC,MAAO,KAAM,wGAAyG,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,sBAAsB,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,QAAQ,EAAG,KAAK,CAAC,EAAG,GAAG,EACnR,GAAM,CAAC,IAAK,MAAO,yBAA0B,CAAC,GAAI,EAAE,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,qBAAsB,qDAAsD,uEAAuE,EAAG,SAAU,CAAC,EAAG,CAAC,gCAAiC,cAAe,CAAC,sBAAuB,2EAA4E,4LAA4L,EAAG,SAAU,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,SAAU,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,0BAA0B,EAAG,SAAU,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,QAAQ,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,kBAAmB,EAAG,MAAM,EACr4B,GAAM,CAAC,MAAO,KAAM,iCAAkC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EAC5O,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EACpU,GAAM,CAAC,MAAO,QAAS,0BAA2B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAC/H,GAAM,CAAC,MAAO,aAAc,yBAA0B,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,aAAa,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAC9I,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EACvG,GAAM,CAAC,KAAM,KAAM,0EAA2E,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,IAAI,EAAG,MAAO,EAAG,UAAU,EAAG,CAAC,mBAAoB,QAAS,CAAC,iBAAiB,EAAG,MAAO,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,wCAAwC,EAAG,MAAO,EAAG,UAAU,EAAG,CAAC,kCAAmC,cAAe,CAAC,GAAG,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,6BAA8B,WAAY,CAAC,sHAAsH,EAAG,MAAO,EAAG,UAAU,EAAG,CAAC,6BAA8B,WAAY,CAAC,eAAe,EAAG,MAAO,EAAG,UAAU,EAAG,CAAC,qCAAsC,cAAe,CAAC,mDAAmD,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,mCAAoC,cAAe,CAAC,MAAM,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,gCAAiC,cAAe,CAAC,GAAG,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,mCAAoC,cAAe,CAAC,+EAA+E,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,MAAO,EAAG,aAAa,EAAG,CAAC,2CAA4C,iBAAkB,CAAC,MAAM,EAAG,MAAO,EAAG,gBAAgB,CAAC,EAAG,GAAG,EACx2C,GAAM,CAAC,KAAM,YAAa,+CAAgD,CAAC,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,yBAAyB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EACtS,GAAM,CAAC,MAAO,KAAM,uBAAwB,CAAC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAO,EAC7E,GAAM,CAAC,MAAO,uBAAwB,mCAAoC,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,uBAAuB,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,QAAQ,EAAG,OAAO,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAC7W,GAAM,CAAC,KAAM,KAAM,gCAAiC,CAAC,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EAClF,GAAM,CAAC,MAAO,KAAM,yCAA0C,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,0BAA2B,WAAY,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,cAAe,iBAAiB,EAAG,KAAK,EAAG,CAAC,gCAAiC,cAAe,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,EAAG,KAAK,CAAC,EAAG,GAAG,EACha,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,SAAS,EAAG,OAAO,CAAC,EAAG,GAAG,EAC9G,GAAM,CAAC,MAAO,KAAM,0BAA2B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,gBAAiB,QAAQ,EAC/L,GAAM,CAAC,MAAO,KAAM,wBAAyB,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAC9K,GAAM,CAAC,MAAO,KAAM,uDAAwD,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,EAAG,CAAC,WAAY,KAAM,CAAC,OAAO,CAAC,EAAG,CAAC,gBAAiB,QAAS,CAAC,+BAA+B,CAAC,EAAG,CAAC,gBAAiB,QAAS,CAAC,gBAAgB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,gBAAgB,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,0BAA0B,CAAC,CAAC,EAAG,GAAG,EACrZ,GAAM,CAAC,MAAO,KAAM,6BAA8B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAChM,GAAM,CAAC,MAAO,KAAM,aAAc,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EACvG,GAAM,CAAC,MAAO,KAAM,oBAAqB,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EACvF,GAAM,CAAC,MAAO,KAAM,6CAA8C,CAAC,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAM,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EACrN,GAAM,CAAC,IAAK,MAAO,sCAAuC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,eAAgB,QAAS,EAAG,KAAK,EAC5G,GAAM,CAAC,MAAO,KAAM,4BAA6B,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,cAAc,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,MAAO,CAAC,CAAC,EAAG,GAAG,EACpM,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAClJ,GAAM,CAAC,MAAO,KAAM,UAAW,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,EACzD,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,qBAAsB,QAAS,EAAG,KAAK,EAC3G,GAAM,CAAC,MAAO,QAAS,2BAA4B,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,QAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAI,EACpJ,GAAM,CAAC,MAAO,KAAM,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EACxG,GAAM,CAAC,KAAM,UAAW,6CAA8C,CAAC,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,GAAG,EAChQ,GAAM,CAAC,MAAO,MAAO,iBAAkB,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,MAAO,MAAM,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,kBAAkB,CAAC,EAAG,CAAC,wBAAyB,WAAY,CAAC,mBAAmB,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,UAAU,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAM,EACvT,GAAM,CAAC,MAAO,KAAM,iBAAkB,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAClD,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,YAAY,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EACtJ,GAAM,CAAC,MAAO,MAAO,wBAAyB,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,IAAI,EAAG,QAAQ,EAAG,CAAC,gCAAiC,cAAe,CAAC,OAAO,EAAG,QAAQ,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,MAAM,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAM,EACjR,GAAM,CAAC,MAAO,KAAM,iBAAkB,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EACnG,GAAM,CAAC,MAAO,KAAM,oDAAqD,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,iCAAiC,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EACrO,GAAM,CAAC,KAAM,KAAM,iDAAkD,CAAC,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,iBAAiB,EAAG,MAAO,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,iBAAkB,qBAAsB,qBAAqB,EAAG,MAAO,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,kBAAkB,EAAG,QAAS,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,IAAI,EAAG,MAAO,CAAC,CAAC,EAAG,GAAG,EACzb,GAAM,CAAC,IAAK,MAAO,2BAA4B,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,sBAAuB,QAAS,EAAG,KAAK,EACxG,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAC5K,GAAM,CAAC,MAAO,mBAAoB,+CAAgD,CAAC,EAAG,EAAG,EAAG,GAAI,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,0BAA2B,WAAY,CAAC,wCAAyC,8CAA8C,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,EAC1f,GAAM,CAAC,MAAO,UAAW,4BAA6B,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EACvR,GAAM,CAAC,MAAO,KAAM,yBAA0B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,8DAA+D,iFAAiF,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,wFAAyF,mGAAmG,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,iBAAiB,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAK,EACnoB,GAAM,CAAC,MAAO,UAAW,qCAAsC,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAO,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,yBAAyB,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EACnP,GAAM,CAAC,IAAK,MAAO,sBAAuB,CAAC,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,KAAK,EAAG,EAAG,CAAC,EAAG,CAAC,2BAA4B,aAAc,CAAC,OAAO,EAAG,EAAG,EAAG,UAAU,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,ytBAAytB,EAAG,CAAC,EAAE,EAAG,CAAC,sCAAsC,EAAG,CAAC,gBAAgB,EAAG,CAAC,yOAAyO,EAAG,EAAG,EAAG,EAAG,CAAC,cAAc,CAAC,CAAC,EACtuC,GAAM,CAAC,MAAO,mBAAoB,iDAAkD,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,GAAG,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,SAAS,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,GAAG,CAAC,EAAG,CAAC,qCAAsC,cAAe,CAAC,GAAG,CAAC,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,QAAQ,EACvc,GAAM,CAAC,MAAO,KAAM,2BAA4B,CAAC,CAAC,EAAG,CAAC,CAAC,mCAAoC,cAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EACvH,GAAM,CAAC,KAAM,KAAM,+EAAgF,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAO,EACtJ,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACzG,GAAM,CAAC,KAAM,KAAM,uCAAwC,CAAC,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,UAAU,EAAG,KAAK,CAAC,EAAG,GAAG,EAC1H,GAAM,CAAC,IAAK,MAAO,+BAAgC,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,qBAAsB,QAAS,EAAG,KAAK,EAC3G,GAAM,CAAC,IAAK,MAAO,8BAA+B,CAAC,EAAE,EAAG,EAAG,IAAK,EAAG,mBAAoB,QAAS,EAAG,KAAK,EACxG,GAAM,CAAC,KAAM,KAAM,mDAAoD,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,MAAO,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,GAAG,EAAG,EAAG,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,MAAO,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,MAAO,CAAC,CAAC,EAAG,GAAG,EAC3b,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC7G,GAAM,CAAC,MAAO,KAAM,qCAAsC,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EACpL,GAAM,CAAC,MAAO,IAAK,gDAAiD,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,WAAY,KAAM,CAAC,cAAc,CAAC,EAAG,CAAC,qBAAsB,QAAS,CAAC,MAAM,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1M,GAAM,CAAC,MAAO,KAAM,gDAAiD,CAAC,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,sBAAuB,QAAS,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACrT,GAAM,CAAC,MAAO,KAAM,+BAAgC,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,CAAC,0BAA2B,WAAY,CAAC,0BAA0B,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EAC1M,GAAM,CAAC,MAAO,KAAM,gDAAiD,CAAC,CAAC,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,4CAA4C,EAAG,CAAC,8EAA8E,EAAG,CAAC,UAAU,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,kCAAkC,CAAC,CAAC,EACtS,GAAM,CAAC,KAAM,KAAM,yBAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,QAAQ,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,KAAK,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,EAAG,KAAK,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,CAAC,EAAG,GAAG,EACxW,GAAM,CAAC,MAAO,KAAM,oCAAqC,CAAC,CAAC,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,MAAM,EAAG,KAAK,CAAC,EAAG,GAAG,EAC9K,GAAM,CAAC,MAAO,KAAM,wHAAyH,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAAG,CAAC,CAAC,qBAAsB,QAAS,CAAC,wFAAwF,EAAG,KAAK,EAAG,CAAC,0BAA2B,WAAY,CAAC,MAAM,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,6CAA8C,4EAA4E,EAAG,OAAO,EAAG,CAAC,2BAA4B,WAAY,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,+CAAgD,+CAA+C,EAAG,KAAK,EAAG,CAAC,mBAAoB,QAAS,CAAC,GAAG,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,2IAA2I,EAAG,KAAK,EAAG,CAAC,6BAA8B,WAAY,CAAC,iBAAiB,EAAG,KAAK,EAAG,CAAC,qBAAsB,QAAS,CAAC,aAAc,UAAU,EAAG,KAAK,CAAC,EAAG,GAAG,CACznC,EACA,cAAiB,CACf,IAAO,CAAC,MAAO,EAAG,wBAAyB,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,KAAK,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,CAAC,uBAAuB,CAAC,CAAC,EAC7I,IAAO,CAAC,MAAO,EAAG,cAAe,CAAC,CAAC,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,OAAO,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,aAAa,CAAC,CAAC,EAChJ,IAAO,CAAC,MAAO,EAAG,yBAA0B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,SAAS,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,sCAAsC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EACjN,IAAO,CAAC,MAAO,EAAG,YAAa,CAAC,EAAE,EAAG,CAAC,CAAC,2BAA4B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,WAAW,CAAC,CAAC,EACjJ,IAAO,CAAC,MAAO,EAAG,yBAA0B,CAAC,EAAG,EAAE,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,UAAU,CAAC,EAAG,CAAC,0BAA2B,WAAY,CAAC,GAAG,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,wBAAwB,CAAC,CAAC,EAC7M,IAAO,CAAC,MAAO,EAAG,uEAAwE,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,mBAAoB,QAAS,CAAC,QAAQ,CAAC,EAAG,CAAC,mBAAoB,QAAS,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,SAAS,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,OAAO,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,4BAA4B,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,6BAA8B,WAAY,CAAC,QAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,kEAAmE,CAAC,EAAG,EAAG,EAAG,GAAI,EAAE,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,gBAAiB,CAAC,EAAE,CAAC,EAAG,EAAG,EAAG,CAAC,+KAA+K,CAAC,CAAC,EACj2B,IAAO,CAAC,MAAO,EAAG,2BAA4B,CAAC,EAAG,EAAG,GAAI,GAAI,EAAE,EAAG,CAAC,CAAC,6BAA8B,WAAY,CAAC,mCAAmC,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,KAAK,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,IAAI,CAAC,EAAG,CAAC,2BAA4B,WAAY,CAAC,QAAQ,CAAC,EAAG,CAAC,mCAAoC,cAAe,CAAC,OAAO,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,kIAAkI,CAAC,CAAC,EACliB,IAAO,CAAC,MAAO,EAAG,UAAW,CAAC,EAAE,EAAG,CAAC,CAAC,2BAA4B,UAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,SAAS,CAAC,CAAC,EAChI,IAAO,CAAC,MAAO,EAAG,eAAgB,CAAC,CAAC,EAAG,CAAC,CAAC,wBAAyB,WAAY,CAAC,QAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,cAAc,CAAC,CAAC,CAC3I,CACF,ICpde,SAARG,EAAsCC,EAAMC,EAAY,CAC7D,IAAIC,EAAO,MAAM,UAAU,MAAM,KAAKD,CAAU,EAChD,OAAAC,EAAK,KAAKC,EAAQ,EACXH,EAAK,MAAM,KAAME,CAAI,CAC9B,CAPA,IAAAE,GAAAC,EAAA,KAEAC,OCFA,IACWC,GAGAC,GAEAC,GAGAC,EAEPC,GACAC,GACAC,GACOC,GACPC,GAEAC,GAKOC,GACAC,GAvBXC,GAAAC,EAAA,KACWb,GAAqB,EAGrBC,GAAqB,GAErBC,GAA0B,EAG1BC,EAAe,6CAEtBC,GAAS,mCACTC,GAAU,UACVC,GAAO,UACAC,GAAa,8BACpBC,GAAW,mCAEXC,GAAS,sBAKFC,GAAoB,GAAG,OAAON,EAAM,EAAE,OAAOC,EAAO,EAAE,OAAOC,EAAI,EAAE,OAAOC,EAAU,EAAE,OAAOC,EAAQ,EAAE,OAAOC,EAAM,EACpHE,GAAa,YCvBxB,SAASG,GAAQC,EAAK,CACpB,0BAEA,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAK,CAClG,OAAO,OAAOA,CAChB,EAAI,SAAUA,EAAK,CACjB,OAAOA,GAAqB,OAAO,QAArB,YAA+BA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC1H,EAAGD,GAAQC,CAAG,CAChB,CACA,SAASC,GAAkBC,EAAQC,EAAO,CACxC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACrC,IAAIC,EAAaF,EAAMC,CAAC,EACxBC,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeH,EAAQG,EAAW,IAAKA,CAAU,CAC1D,CACF,CACA,SAASC,GAAaC,EAAaC,EAAYC,EAAa,CAC1D,OAAID,GAAYP,GAAkBM,EAAY,UAAWC,CAAU,EAC/DC,GAAaR,GAAkBM,EAAaE,CAAW,EAC3D,OAAO,eAAeF,EAAa,YAAa,CAC9C,SAAU,EACZ,CAAC,EACMA,CACT,CACA,SAASG,GAAgBC,EAAUJ,EAAa,CAC9C,GAAI,EAAEI,aAAoBJ,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,CACA,SAASK,GAAUC,EAAUC,EAAY,CACvC,GAAI,OAAOA,GAAe,YAAcA,IAAe,KACrD,MAAM,IAAI,UAAU,oDAAoD,EAE1ED,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CACrE,YAAa,CACX,MAAOD,EACP,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EACD,OAAO,eAAeA,EAAU,YAAa,CAC3C,SAAU,EACZ,CAAC,EACGC,GAAYC,GAAgBF,EAAUC,CAAU,CACtD,CACA,SAASE,GAAaC,EAAS,CAC7B,IAAIC,EAA4BC,GAA0B,EAC1D,OAAO,UAAgC,CACrC,IAAIC,EAAQC,GAAgBJ,CAAO,EACjCK,EACF,GAAIJ,EAA2B,CAC7B,IAAIK,EAAYF,GAAgB,IAAI,EAAE,YACtCC,EAAS,QAAQ,UAAUF,EAAO,UAAWG,CAAS,CACxD,MACED,EAASF,EAAM,MAAM,KAAM,SAAS,EAEtC,OAAOI,GAA2B,KAAMF,CAAM,CAChD,CACF,CACA,SAASE,GAA2BC,EAAMC,EAAM,CAC9C,GAAIA,IAAS3B,GAAQ2B,CAAI,IAAM,UAAY,OAAOA,GAAS,YACzD,OAAOA,EACF,GAAIA,IAAS,OAClB,MAAM,IAAI,UAAU,0DAA0D,EAEhF,OAAOC,GAAuBF,CAAI,CACpC,CACA,SAASE,GAAuBF,EAAM,CACpC,GAAIA,IAAS,OACX,MAAM,IAAI,eAAe,2DAA2D,EAEtF,OAAOA,CACT,CACA,SAASG,GAAiBC,EAAO,CAC/B,IAAIC,EAAS,OAAO,KAAQ,WAAa,IAAI,IAAQ,OACrD,OAAAF,GAAmB,SAA0BC,EAAO,CAClD,GAAIA,IAAU,MAAQ,CAACE,GAAkBF,CAAK,EAAG,OAAOA,EACxD,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,UAAU,oDAAoD,EAE1E,GAAI,OAAOC,EAAW,IAAa,CACjC,GAAIA,EAAO,IAAID,CAAK,EAAG,OAAOC,EAAO,IAAID,CAAK,EAC9CC,EAAO,IAAID,EAAOG,CAAO,CAC3B,CACA,SAASA,GAAU,CACjB,OAAOC,GAAWJ,EAAO,UAAWR,GAAgB,IAAI,EAAE,WAAW,CACvE,CACA,OAAAW,EAAQ,UAAY,OAAO,OAAOH,EAAM,UAAW,CACjD,YAAa,CACX,MAAOG,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EACMjB,GAAgBiB,EAASH,CAAK,CACvC,EACOD,GAAiBC,CAAK,CAC/B,CACA,SAASI,GAAWC,EAAQC,EAAMN,EAAO,CACvC,OAAIV,GAA0B,EAC5Bc,GAAa,QAAQ,UAErBA,GAAa,SAAoBC,EAAQC,EAAMN,EAAO,CACpD,IAAIO,EAAI,CAAC,IAAI,EACbA,EAAE,KAAK,MAAMA,EAAGD,CAAI,EACpB,IAAI5B,EAAc,SAAS,KAAK,MAAM2B,EAAQE,CAAC,EAC3CzB,EAAW,IAAIJ,EACnB,OAAIsB,GAAOd,GAAgBJ,EAAUkB,EAAM,SAAS,EAC7ClB,CACT,EAEKsB,GAAW,MAAM,KAAM,SAAS,CACzC,CACA,SAASd,IAA4B,CAEnC,GADI,OAAO,QAAY,KAAe,CAAC,QAAQ,WAC3C,QAAQ,UAAU,KAAM,MAAO,GACnC,GAAI,OAAO,OAAU,WAAY,MAAO,GACxC,GAAI,CACF,eAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAC,EAAG,UAAY,CAAC,CAAC,CAAC,EACtE,EACT,MAAY,CACV,MAAO,EACT,CACF,CACA,SAASY,GAAkBM,EAAI,CAC7B,OAAO,SAAS,SAAS,KAAKA,CAAE,EAAE,QAAQ,eAAe,IAAM,EACjE,CACA,SAAStB,GAAgBuB,EAAGC,EAAG,CAC7B,OAAAxB,GAAkB,OAAO,gBAAkB,SAAyBuB,EAAGC,EAAG,CACxE,OAAAD,EAAE,UAAYC,EACPD,CACT,EACOvB,GAAgBuB,EAAGC,CAAC,CAC7B,CACA,SAASlB,GAAgBiB,EAAG,CAC1B,OAAAjB,GAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyBiB,EAAG,CAC5F,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAC/C,EACOjB,GAAgBiB,CAAC,CAC1B,CA9IA,IAqJIE,EArJJC,GAAAC,EAAA,KAqJIF,EAA0B,SAAUG,EAAQ,CAC9C/B,GAAU4B,EAAYG,CAAM,EAC5B,IAAIC,EAAS5B,GAAawB,CAAU,EACpC,SAASA,EAAWK,EAAM,CACxB,IAAIC,EACJ,OAAApC,GAAgB,KAAM8B,CAAU,EAChCM,EAAQF,EAAO,KAAK,KAAMC,CAAI,EAG9B,OAAO,eAAelB,GAAuBmB,CAAK,EAAGN,EAAW,SAAS,EACzEM,EAAM,KAAOA,EAAM,YAAY,KACxBA,CACT,CACA,OAAOxC,GAAakC,CAAU,CAChC,EAAeZ,GAAiB,KAAK,CAAC,IC3JvB,SAARmB,GAAkBC,EAAGC,EAAG,CAC7BD,EAAIA,EAAE,MAAM,GAAG,EACfC,EAAIA,EAAE,MAAM,GAAG,EAGf,QAFIC,EAAKF,EAAE,CAAC,EAAE,MAAM,GAAG,EACnBG,EAAKF,EAAE,CAAC,EAAE,MAAM,GAAG,EACd,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAIG,EAAK,OAAOF,EAAG,CAAC,CAAC,EACjBG,EAAK,OAAOF,EAAG,CAAC,CAAC,EACrB,GAAIC,EAAKC,EAAI,MAAO,GACpB,GAAIA,EAAKD,EAAI,MAAO,GACpB,GAAI,CAAC,MAAMA,CAAE,GAAK,MAAMC,CAAE,EAAG,MAAO,GACpC,GAAI,MAAMD,CAAE,GAAK,CAAC,MAAMC,CAAE,EAAG,MAAO,EACtC,CACA,OAAIL,EAAE,CAAC,GAAKC,EAAE,CAAC,EACND,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAI,EAAID,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAI,GAAK,EAEvC,CAACD,EAAE,CAAC,GAAKC,EAAE,CAAC,EAAI,EAAID,EAAE,CAAC,GAAK,CAACC,EAAE,CAAC,EAAI,GAAK,CAClD,CAzBA,IAAAK,GAAAC,EAAA,QCCe,SAARC,GAA0BC,EAAQ,CACvC,OAA+BA,GAAW,MAAQA,EAAO,cAAgBC,EAC3E,CAHA,IAAIA,GAAJC,GAAAC,EAAA,KAAIF,GAAoB,CAAC,EAAE,cCA3B,SAASG,GAAQC,EAAK,CACpB,0BAEA,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAK,CAClG,OAAO,OAAOA,CAChB,EAAI,SAAUA,EAAK,CACjB,OAAOA,GAAqB,OAAO,QAArB,YAA+BA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC1H,EAAGD,GAAQC,CAAG,CAChB,CACA,SAASC,GAAgBC,EAAUC,EAAa,CAC9C,GAAI,EAAED,aAAoBC,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,CACA,SAASC,GAAkBC,EAAQC,EAAO,CACxC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACrC,IAAIC,EAAaF,EAAMC,CAAC,EACxBC,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeH,EAAQG,EAAW,IAAKA,CAAU,CAC1D,CACF,CACA,SAASC,GAAaN,EAAaO,EAAYC,EAAa,CAC1D,OAAID,GAAYN,GAAkBD,EAAY,UAAWO,CAAU,EAC/DC,GAAaP,GAAkBD,EAAaQ,CAAW,EAC3D,OAAO,eAAeR,EAAa,YAAa,CAC9C,SAAU,EACZ,CAAC,EACMA,CACT,CAwdA,SAASS,GAAQC,EAAOC,EAAM,CAC5B,OAAQA,EAAM,CACZ,IAAK,aACH,OAAOD,EAAM,CAAC,EAChB,IAAK,SACH,OAAOA,EAAM,CAAC,EAChB,IAAK,YACH,OAAOA,EAAM,CAAC,EAChB,IAAK,eACH,OAAOA,EAAM,CAAC,EAChB,IAAK,kBACH,OAAOA,EAAM,CAAC,EAChB,IAAK,YACH,OAAOA,EAAM,CAAC,EAChB,IAAK,MACH,OAAOA,EAAM,CAAC,EAChB,IAAK,QACH,OAAOA,EAAM,CAAC,EAChB,IAAK,OACH,OAAOA,EAAM,CAAC,EAChB,IAAK,cACH,OAAOA,EAAM,CAAC,CAClB,CACF,CACO,SAASE,GAAiBC,EAAU,CACzC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,2EAA2E,EAI7F,GAAI,CAACC,GAASD,CAAQ,GAAK,CAACC,GAASD,EAAS,SAAS,EACrD,MAAM,IAAI,MAAM,sJAAsJ,OAAOC,GAASD,CAAQ,EAAI,yBAA2B,OAAO,KAAKA,CAAQ,EAAE,KAAK,IAAI,EAAI,KAAO,KAAOE,GAAOF,CAAQ,EAAI,KAAOA,EAAU,GAAG,CAAC,CAE1T,CAoCO,SAASG,GAAsBC,EAASJ,EAAU,CAEvD,GADAA,EAAW,IAAIK,EAASL,CAAQ,EAC5BA,EAAS,WAAWI,CAAO,EAC7B,OAAOJ,EAAS,QAAQI,CAAO,EAAE,mBAAmB,EAEtD,MAAM,IAAI,MAAM,oBAAoB,OAAOA,CAAO,CAAC,CACrD,CACO,SAASE,GAAmBF,EAASJ,EAAU,CAGpD,OAAOA,EAAS,UAAU,eAAeI,CAAO,CAClD,CACA,SAASG,GAAWP,EAAU,CAC5B,IAAIQ,EAAUR,EAAS,QACnB,OAAOQ,GAAY,UACrB,KAAK,GAAKA,IAAY,EACtB,KAAK,GAAKA,IAAY,EACtB,KAAK,GAAKA,IAAY,EACtB,KAAK,GAAKA,IAAY,GAEjBA,EAEMC,GAAQD,EAASE,EAAE,IAAM,GAClC,KAAK,GAAK,GACDD,GAAQD,EAASG,EAAE,IAAM,GAClC,KAAK,GAAK,GAEV,KAAK,GAAK,GANV,KAAK,GAAK,EAShB,CAzlBA,IAqCID,GAEAC,GACAC,GACAC,GAKAR,EA4NAS,GAoJAC,GAkEAC,GACAC,GA2DAf,GA5hBJgB,EAAAC,EAAA,KA+BAC,KACAC,KAKIX,GAAK,QAELC,GAAK,SACLC,GAAqB,SACrBC,GAAuB,QAKvBR,EAAwB,UAAY,CACtC,SAASA,EAASL,EAAU,CAC1Bf,GAAgB,KAAMoB,CAAQ,EAC9BN,GAAiBC,CAAQ,EACzB,KAAK,SAAWA,EAChBO,GAAW,KAAK,KAAMP,CAAQ,CAChC,CACA,OAAAP,GAAaY,EAAU,CAAC,CACtB,IAAK,eACL,MAAO,UAAwB,CAC7B,OAAO,OAAO,KAAK,KAAK,SAAS,SAAS,EAAE,OAAO,SAAUiB,EAAG,CAC9D,OAAOA,IAAM,KACf,CAAC,CACH,CACF,EAAG,CACD,IAAK,qBACL,MAAO,SAA4BC,EAAa,CAC9C,OAAO,KAAK,SAAS,UAAUA,CAAW,CAC5C,CACF,EAAG,CACD,IAAK,gBACL,MAAO,UAAyB,CAC9B,GAAI,OAAK,IAAM,KAAK,IAAM,KAAK,IAI/B,OAAO,KAAK,SAAS,eAAiB,KAAK,SAAS,eACtD,CACF,EAAG,CACD,IAAK,aACL,MAAO,SAAoBnB,EAAS,CAClC,OAAO,KAAK,mBAAmBA,CAAO,IAAM,MAC9C,CACF,EAAG,CACD,IAAK,iBACL,MAAO,SAAwBoB,EAAa,CAC1C,GAAI,KAAK,8BAA8BA,CAAW,EAChD,MAAO,GAET,GAAI,KAAK,cAAc,GACrB,GAAI,KAAK,cAAc,EAAEA,CAAW,EAClC,MAAO,OAEJ,CAEL,IAAIC,EAAe,KAAK,oBAAoB,EAAED,CAAW,EACzD,GAAIC,GAAgBA,EAAa,SAAW,GAAKA,EAAa,CAAC,IAAM,MACnE,MAAO,EAEX,CACF,CACF,EAAG,CACD,IAAK,6BACL,MAAO,SAAoCD,EAAa,CACtD,OAAI,KAAK,cAAc,EACd,OAAK,cAAc,EAAEA,CAAW,EAEhC,MAAK,8BAA8BA,CAAW,CAEzD,CACF,EAAG,CACD,IAAK,UACL,MAAO,SAAiBD,EAAa,CACnC,OAAO,KAAK,oBAAoBA,CAAW,CAC7C,CACF,EAAG,CACD,IAAK,sBACL,MAAO,SAA6BA,EAAaC,EAAa,CAM5D,GAJID,GAAeV,GAAqB,KAAKU,CAAW,IACtDC,EAAcD,EACdA,EAAc,MAEZA,GAAeA,IAAgB,MAAO,CACxC,GAAI,CAAC,KAAK,WAAWA,CAAW,EAC9B,MAAM,IAAI,MAAM,oBAAoB,OAAOA,CAAW,CAAC,EAEzD,KAAK,cAAgB,IAAIT,GAAc,KAAK,mBAAmBS,CAAW,EAAG,IAAI,CACnF,SAAWC,EAAa,CACtB,GAAI,CAAC,KAAK,eAAeA,CAAW,EAClC,MAAM,IAAI,MAAM,yBAAyB,OAAOA,CAAW,CAAC,EAE9D,KAAK,cAAgB,IAAIV,GAAc,KAAK,yBAAyBU,CAAW,EAAG,IAAI,CACzF,MACE,KAAK,cAAgB,OAEvB,OAAO,IACT,CACF,EAAG,CACD,IAAK,gCACL,MAAO,SAAuCA,EAAa,CACzD,IAAIC,EAAe,KAAK,oBAAoB,EAAED,CAAW,EACzD,GAAIC,EAUF,OAAIA,EAAa,SAAW,GAAKA,EAAa,CAAC,EAAE,SAAW,EAC1D,OAEKA,CAEX,CACF,EAAG,CACD,IAAK,+BACL,MAAO,SAAsCD,EAAa,CACxD,IAAIC,EAAe,KAAK,8BAA8BD,CAAW,EACjE,GAAIC,EACF,OAAOA,EAAa,CAAC,CAEzB,CACF,EAAG,CACD,IAAK,2BACL,MAAO,SAAkCD,EAAa,CACpD,IAAID,EAAc,KAAK,6BAA6BC,CAAW,EAC/D,GAAID,EACF,OAAO,KAAK,mBAAmBA,CAAW,EAE5C,GAAI,KAAK,cAAc,EAAG,CACxB,IAAIvB,EAAW,KAAK,cAAc,EAAEwB,CAAW,EAC/C,GAAIxB,EACF,OAAOA,CAEX,KAAO,CAML,IAAIyB,EAAe,KAAK,oBAAoB,EAAED,CAAW,EACzD,GAAIC,GAAgBA,EAAa,SAAW,GAAKA,EAAa,CAAC,IAAM,MACnE,OAAO,KAAK,SAAS,UAAU,KAAK,CAExC,CACF,CACF,EAAG,CACD,IAAK,qBACL,MAAO,UAA8B,CACnC,OAAO,KAAK,cAAc,YAAY,CACxC,CACF,EAAG,CACD,IAAK,YACL,MAAO,UAAqB,CAC1B,OAAO,KAAK,cAAc,UAAU,CACtC,CACF,EAAG,CACD,IAAK,mBACL,MAAO,UAA4B,CACjC,OAAO,KAAK,cAAc,iBAAiB,CAC7C,CACF,EAAG,CACD,IAAK,wBACL,MAAO,UAAiC,CACtC,OAAO,KAAK,cAAc,sBAAsB,CAClD,CACF,EAAG,CACD,IAAK,kBACL,MAAO,UAA2B,CAChC,OAAO,KAAK,cAAc,gBAAgB,CAC5C,CACF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,OAAO,KAAK,cAAc,QAAQ,CACpC,CACF,EAAG,CACD,IAAK,2BACL,MAAO,UAAoC,CACzC,OAAO,KAAK,cAAc,yBAAyB,CACrD,CACF,EAAG,CACD,IAAK,8BACL,MAAO,UAAuC,CAC5C,OAAO,KAAK,cAAc,4BAA4B,CACxD,CACF,EAAG,CACD,IAAK,gBACL,MAAO,UAAyB,CAC9B,OAAO,KAAK,cAAc,cAAc,CAC1C,CACF,EAAG,CACD,IAAK,WACL,MAAO,UAAoB,CACzB,OAAO,KAAK,cAAc,SAAS,CACrC,CACF,EAAG,CACD,IAAK,OACL,MAAO,SAAcC,EAAO,CAC1B,OAAO,KAAK,cAAc,KAAKA,CAAK,CACtC,CACF,EAAG,CACD,IAAK,MACL,MAAO,UAAe,CACpB,OAAO,KAAK,cAAc,IAAI,CAChC,CACF,EAAG,CACD,IAAK,sBACL,MAAO,UAA+B,CACpC,OAAI,KAAK,GAAW,KAAK,SAAS,gCAC3B,KAAK,SAAS,qBACvB,CACF,EAAG,CACD,IAAK,oCACL,MAAO,SAA2CF,EAAa,CAC7D,OAAO,KAAK,oBAAoBA,CAAW,CAC7C,CACF,EAAG,CACD,IAAK,2BACL,MAAO,UAAoC,CACzC,OAAO,KAAK,gBAAkB,MAChC,CACF,CAAC,CAAC,EACKnB,CACT,EAAE,EAEES,GAA6B,UAAY,CAC3C,SAASA,EAAcd,EAAU2B,EAAsB,CACrD1C,GAAgB,KAAM6B,CAAa,EACnC,KAAK,qBAAuBa,EAC5B,KAAK,SAAW3B,EAChBO,GAAW,KAAK,KAAMoB,EAAqB,QAAQ,CACrD,CACA,OAAAlC,GAAaqB,EAAe,CAAC,CAC3B,IAAK,cACL,MAAO,UAAuB,CAC5B,OAAO,KAAK,SAAS,CAAC,CACxB,CAMF,EAAG,CACD,IAAK,qCACL,MAAO,UAA8C,CACnD,OAAO,KAAK,qBAAqB,yBAAyB,KAAK,YAAY,CAAC,CAC9E,CACF,EAAG,CACD,IAAK,YACL,MAAO,UAAqB,CAC1B,GAAI,OAAK,IAAM,KAAK,IACpB,OAAO,KAAK,SAAS,CAAC,CACxB,CACF,EAAG,CACD,IAAK,mBACL,MAAO,UAA4B,CACjC,GAAI,OAAK,IAAM,KAAK,IACpB,OAAO,KAAK,SAAS,EAAE,CACzB,CACF,EAAG,CACD,IAAK,wBACL,MAAO,UAAiC,CACtC,OAAI,KAAK,IAAM,KAAK,GAAW,KAAK,SAAS,CAAC,EACvC,KAAK,SAAS,CAAC,CACxB,CACF,EAAG,CACD,IAAK,kBACL,MAAO,UAA2B,CAChC,GAAI,MAAK,GACT,OAAO,KAAK,SAAS,KAAK,GAAK,EAAI,CAAC,CACtC,CACF,EAAG,CACD,IAAK,cACL,MAAO,SAAqBd,EAAU,CACpC,OAAOA,EAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,CAAC,CAC/C,CAGF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,IAAI4B,EAAQ,KACRC,EAAU,KAAK,YAAY,KAAK,QAAQ,GAAK,KAAK,YAAY,KAAK,mCAAmC,CAAC,GAAK,CAAC,EACjH,OAAOA,EAAQ,IAAI,SAAUP,EAAG,CAC9B,OAAO,IAAIP,GAAOO,EAAGM,CAAK,CAC5B,CAAC,CACH,CACF,EAAG,CACD,IAAK,iBACL,MAAO,UAA0B,CAC/B,OAAO,KAAK,SAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,CAAC,CACpD,CACF,EAAG,CACD,IAAK,mCACL,MAAO,SAA0C5B,EAAU,CACzD,OAAOA,EAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,CAAC,CAC/C,CAGF,EAAG,CACD,IAAK,+BACL,MAAO,UAAwC,CAC7C,OAAO,KAAK,iCAAiC,KAAK,QAAQ,GAAK,KAAK,iCAAiC,KAAK,mCAAmC,CAAC,CAChJ,CACF,EAAG,CACD,IAAK,4BACL,MAAO,UAAqC,CAC1C,OAAO,KAAK,SAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,CAAC,CACpD,CACF,EAAG,CACD,IAAK,2BACL,MAAO,UAAoC,CAGzC,OAAO,KAAK,0BAA0B,GAAK,KAAK,eAAe,CACjE,CACF,EAAG,CACD,IAAK,8BACL,MAAO,UAAuC,CAC5C,OAAO,KAAK,SAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,CAAC,CACpD,CACF,EAAG,CACD,IAAK,6CACL,MAAO,UAAsD,CAC3D,MAAO,CAAC,CAAC,KAAK,SAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,CAAC,CACtD,CAIF,EAAG,CACD,IAAK,yDACL,MAAO,UAAkE,CACvE,OAAO,KAAK,2CAA2C,KAAK,QAAQ,GAAK,KAAK,2CAA2C,KAAK,mCAAmC,CAAC,CACpK,CACF,EAAG,CACD,IAAK,gBACL,MAAO,UAAyB,CAC9B,OAAO,KAAK,SAAS,KAAK,GAAK,EAAI,KAAK,GAAK,EAAI,EAAE,CACrD,CACF,EAAG,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,OAAO,KAAK,SAAS,KAAK,GAAK,EAAI,KAAK,GAAK,GAAK,EAAE,CACtD,CACF,EAAG,CACD,IAAK,WACL,MAAO,UAAoB,CAIzB,OAAI,KAAK,MAAM,GAAK,KAAK,MAAM,EAAE,SAAW,EACnC,GAIF,CAAC,CAAC,KAAK,MAAM,CACtB,CACF,EAAG,CACD,IAAK,OACL,MAAO,SAAc8B,EAAQ,CAC3B,GAAI,KAAK,SAAS,GAAKlC,GAAQ,KAAK,MAAM,EAAGkC,CAAM,EACjD,OAAO,IAAIb,GAAKrB,GAAQ,KAAK,MAAM,EAAGkC,CAAM,EAAG,IAAI,CAEvD,CACF,EAAG,CACD,IAAK,MACL,MAAO,UAAe,CACpB,OAAI,KAAK,IAAM,KAAK,GAAWlB,GACxB,KAAK,SAAS,EAAE,GAAKA,EAC9B,CACF,CAAC,CAAC,EACKE,CACT,EAAE,EACEC,GAAsB,UAAY,CACpC,SAASA,EAAOgB,EAAQ/B,EAAU,CAChCf,GAAgB,KAAM8B,CAAM,EAC5B,KAAK,QAAUgB,EACf,KAAK,SAAW/B,CAClB,CACA,OAAAP,GAAasB,EAAQ,CAAC,CACpB,IAAK,UACL,MAAO,UAAmB,CACxB,OAAO,KAAK,QAAQ,CAAC,CACvB,CACF,EAAG,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,OAAO,KAAK,QAAQ,CAAC,CACvB,CACF,EAAG,CACD,IAAK,wBACL,MAAO,UAAiC,CACtC,OAAO,KAAK,QAAQ,CAAC,GAAK,CAAC,CAC7B,CACF,EAAG,CACD,IAAK,+BACL,MAAO,UAAwC,CAC7C,OAAO,KAAK,QAAQ,CAAC,GAAK,KAAK,SAAS,6BAA6B,CACvE,CACF,EAAG,CACD,IAAK,yDACL,MAAO,UAAkE,CACvE,MAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,GAAK,KAAK,SAAS,uDAAuD,CACnG,CACF,EAAG,CACD,IAAK,0DACL,MAAO,UAAmE,CAMxE,OAAO,KAAK,mBAAmB,GAAK,CAAC,KAAK,uDAAuD,CACnG,CACF,EAAG,CACD,IAAK,qBACL,MAAO,UAA8B,CACnC,MAAO,QAAK,6BAA6B,GAEzC,CAACC,GAAgC,KAAK,KAAK,6BAA6B,CAAC,EAK3E,CACF,EAAG,CACD,IAAK,sBACL,MAAO,UAA+B,CACpC,OAAO,KAAK,QAAQ,CAAC,GAAK,KAAK,OAAO,CACxC,CACF,CAAC,CAAC,EACKD,CACT,EAAE,EAOEC,GAAkC,cAClCC,GAAoB,UAAY,CAClC,SAASA,EAAKnB,EAAME,EAAU,CAC5Bf,GAAgB,KAAMgC,CAAI,EAC1B,KAAK,KAAOnB,EACZ,KAAK,SAAWE,CAClB,CACA,OAAAP,GAAawB,EAAM,CAAC,CAClB,IAAK,UACL,MAAO,UAAmB,CACxB,OAAI,KAAK,SAAS,GAAW,KAAK,KAC3B,KAAK,KAAK,CAAC,CACpB,CACF,EAAG,CACD,IAAK,kBACL,MAAO,UAA2B,CAChC,GAAI,MAAK,SAAS,GAClB,OAAO,KAAK,KAAK,CAAC,GAAK,KAAK,SAAS,gBAAgB,CACvD,CACF,CAAC,CAAC,EACKA,CACT,EAAE,EAuCEf,GAAS,SAAgBoB,EAAG,CAC9B,OAAOvC,GAAQuC,CAAC,CAClB,IC1gBe,SAARU,GAAwCC,EAAS,CAQtD,IAAIC,EAA6B,KAG7BC,EAA2B,KAG3BC,EAA6B,IAG7BC,EAAsB,IAGtBC,EAA6C,eAI7CC,EAA6B,6BAG7BC,EAAqB,KAKrBC,EAAoB,2FAKpBC,EAAqB,qDAIrBC,EAAqB,QAKrBC,EAA0C,cAO1CC,EAAgC,aAGhCC,EAAUC,GAAsBC,GAA0Bd,CAA0B,EAGpFe,EAAeX,EAA6CG,EAAoBF,EAA6BS,GAA0Bd,CAA0B,EAAIM,EAGrKU,EAAgBZ,EAA6CI,EAAqBH,EAA6BS,GAA0BZ,CAA0B,EAAII,EAGvKW,EAA8BR,EAAqBK,GAA0BX,CAAmB,EAAI,IAGpGe,EAAmBR,EAA0CC,EAAgCN,EAA6BS,GAA0Bb,CAAwB,EAAIK,EAGhLa,EAAiBT,EAA0C,SAAWL,EAA6BS,GAA0BZ,CAA0B,EAAII,EAa/J,OAAOM,EAAU,IAAMG,EAAe,IAAMC,EAAgB,IAAMC,EAA8B,IAAMC,EAAmB,IAAMC,CACjI,CAzGA,IAEIN,GAOAC,GATJM,GAAAC,EAAA,KAAAC,KAEIT,GAAsB,QAOtBC,GAA4B,SAAmCS,EAAW,CAC5E,MAAO,KAAK,OAAOC,EAAc,MAAM,EAAE,OAAOD,EAAW,IAAI,CACjE,ICgDe,SAARE,GAAqCC,EAAQ,CAClD,OAAOA,EAAO,QAAUC,IAAsBC,GAA2B,KAAKF,CAAM,CACtF,CAOO,SAASG,GAAyBH,EAAQ,CAC/C,OAAOI,GAAiC,KAAKJ,CAAM,CACrD,CAtEA,IA0BIK,GAKOC,GAUPF,GACOG,GAKPL,GA/CJM,GAAAC,EAAA,KAAAC,KACAC,KAyBIN,GAAkC,IAAMO,EAAe,KAAOX,GAAqB,IAK5EK,GAAqB,IAAMO,GAAa,aAAyBC,GAAoB,MAAaF,EAAe,UAAsBE,GAAoBF,EAAe,KAUjLR,GAAmC,IAAI,OAAO,KAAYS,GAAa,aAAyBC,GAAoB,MAAaF,EAAe,WAAsB,GAAG,EAClKL,GAAoCD,GAE/C,MAAQS,GAAuB,EAAI,KAG/Bb,GAA6B,IAAI,OAErC,IAAMG,GAAkC,MAElCE,GAAoC,IAAK,GAAG,IC5CnC,SAARS,GAAkCC,EAAQ,CAC/C,IAAIC,EAAQD,EAAO,OAAOE,EAAY,EACtC,GAAID,EAAQ,EACV,MAAO,CAAC,EAOV,QAHIE,EAAyBH,EAAO,MAAM,EAAGC,CAAK,EAC9CG,EAAUJ,EAAO,MAAME,EAAY,EACnC,EAAI,EACD,EAAIE,EAAQ,QAAQ,CACzB,GAAIA,EAAQ,CAAC,EACX,MAAO,CACL,OAAQD,EACR,IAAKC,EAAQ,CAAC,CAChB,EAEF,GACF,CACF,CA1BA,IAGIF,GAHJG,GAAAC,EAAA,KAAAC,KAGIL,GAAe,IAAI,OAAO,MAAQM,GAAuB,EAAI,KAAM,GAAG,IC4GnE,SAASC,GAAWC,EAAW,CACpC,OAAOC,GAAOD,CAAS,CACzB,CAjHA,IAwCWC,GAxCXC,GAAAC,EAAA,KAwCWF,GAAS,CAClB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,IAEV,SAAU,GACZ,IC9GA,SAASG,GAAgCC,EAAGC,EAAgB,CAC1D,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC9E,GAAIE,EAAI,OAAQA,EAAKA,EAAG,KAAKF,CAAC,GAAG,KAAK,KAAKE,CAAE,EAC7C,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,GAAkBD,GAAK,OAAOA,EAAE,QAAW,SAAU,CAChHE,IAAIF,EAAIE,GACZ,IAAIE,EAAI,EACR,OAAO,UAAY,CACjB,OAAIA,GAAKJ,EAAE,OAAe,CACxB,KAAM,EACR,EACO,CACL,KAAM,GACN,MAAOA,EAAEI,GAAG,CACd,CACF,CACF,CACA,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAC7J,CACA,SAASD,GAA4BH,EAAGK,EAAQ,CAC9C,GAAKL,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOM,GAAkBN,EAAGK,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKP,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIO,IAAM,UAAYP,EAAE,cAAaO,EAAIP,EAAE,YAAY,MACnDO,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKP,CAAC,EACnD,GAAIO,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBN,EAAGK,CAAM,EACjH,CACA,SAASC,GAAkBE,EAAKC,EAAK,EAC/BA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAC/C,QAASJ,EAAI,EAAGM,EAAO,IAAI,MAAMD,CAAG,EAAGL,EAAIK,EAAKL,IAC9CM,EAAKN,CAAC,EAAII,EAAIJ,CAAC,EAEjB,OAAOM,CACT,CAkBe,SAARC,GAA4CC,EAAQ,CAQzD,QAPIC,EAAS,GAOJC,EAAYf,GAAgCa,EAAO,MAAM,EAAE,CAAC,EAAGG,EAAO,EAAEA,EAAQD,EAAU,GAAG,MAAO,CAC3G,IAAIE,EAAYD,EAAM,MACtBF,GAAUI,GAA0BD,EAAWH,CAAM,GAAK,EAC5D,CACA,OAAOA,CACT,CAaO,SAASI,GAA0BD,EAAWE,EAAsBC,EAAW,CAEpF,GAAIH,IAAc,IAAK,CAGrB,GAAIE,EAAsB,CAYpB,OAAOC,GAAc,YACvBA,EAAU,KAAK,EAEjB,MACF,CACA,MAAO,GACT,CAEA,OAAOC,GAAWJ,CAAS,CAC7B,CAtGA,IAAAK,GAAAC,EAAA,KAiCAC,OCjCA,IAAAC,GAAAC,EAAA,KACAC,MCDA,SAASC,GAAgCC,EAAGC,EAAgB,CAC1D,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC9E,GAAIE,EAAI,OAAQA,EAAKA,EAAG,KAAKF,CAAC,GAAG,KAAK,KAAKE,CAAE,EAC7C,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,GAAkBD,GAAK,OAAOA,EAAE,QAAW,SAAU,CAChHE,IAAIF,EAAIE,GACZ,IAAIE,EAAI,EACR,OAAO,UAAY,CACjB,OAAIA,GAAKJ,EAAE,OAAe,CACxB,KAAM,EACR,EACO,CACL,KAAM,GACN,MAAOA,EAAEI,GAAG,CACd,CACF,CACF,CACA,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAC7J,CACA,SAASD,GAA4BH,EAAGK,EAAQ,CAC9C,GAAKL,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOM,GAAkBN,EAAGK,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKP,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIO,IAAM,UAAYP,EAAE,cAAaO,EAAIP,EAAE,YAAY,MACnDO,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKP,CAAC,EACnD,GAAIO,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBN,EAAGK,CAAM,EACjH,CACA,SAASC,GAAkBE,EAAKC,EAAK,EAC/BA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAC/C,QAASJ,EAAI,EAAGM,EAAO,IAAI,MAAMD,CAAG,EAAGL,EAAIK,EAAKL,IAC9CM,EAAKN,CAAC,EAAII,EAAIJ,CAAC,EAEjB,OAAOM,CACT,CAQe,SAARC,GAA6BC,EAAGC,EAAG,CAExC,QADIC,EAASF,EAAE,MAAM,EACZG,EAAYhB,GAAgCc,CAAC,EAAGG,EAAO,EAAEA,EAAQD,EAAU,GAAG,MAAO,CAC5F,IAAIE,EAAUD,EAAM,MAChBJ,EAAE,QAAQK,CAAO,EAAI,GACvBH,EAAO,KAAKG,CAAO,CAEvB,CACA,OAAOH,EAAO,KAAK,SAAUF,EAAGC,EAAG,CACjC,OAAOD,EAAIC,CACb,CAAC,CAMH,CAxDA,IAAAK,GAAAC,EAAA,QCCe,SAARC,GAAmCC,EAAgBC,EAAU,CAClE,OAAOC,GAAyBF,EAAgB,OAAWC,CAAQ,CACrE,CAGO,SAASC,GAAyBF,EAAgBG,EAAMF,EAAU,CACvE,IAAIG,EAAYH,EAAS,KAAKE,CAAI,EAQ9BE,EAAmBD,GAAaA,EAAU,gBAAgB,GAAKH,EAAS,gBAAgB,EAG5F,GAAI,CAACI,EACH,MAAO,cAET,GAAIF,IAAS,uBAAwB,CAInC,GAAI,CAACF,EAAS,KAAK,YAAY,EAG7B,OAAOC,GAAyBF,EAAgB,SAAUC,CAAQ,EAEpE,IAAIK,EAAcL,EAAS,KAAK,QAAQ,EACpCK,IAMFD,EAAmBE,GAAYF,EAAkBC,EAAY,gBAAgB,CAAC,EASlF,SACSH,GAAQ,CAACC,EAChB,MAAO,iBAET,IAAII,EAAgBR,EAAe,OAQ/BS,EAAiBJ,EAAiB,CAAC,EACvC,OAAII,IAAmBD,EACd,cAELC,EAAiBD,EACZ,YAELH,EAAiBA,EAAiB,OAAS,CAAC,EAAIG,EAC3C,WAGFH,EAAiB,QAAQG,EAAe,CAAC,GAAK,EAAI,cAAgB,gBAC3E,CAtEA,IAAAE,GAAAC,EAAA,KAAAC,OCgBe,SAARC,GAAuCC,EAAOC,EAASC,EAAU,CAMtE,GAJID,IAAY,SACdA,EAAU,CAAC,GAEbC,EAAW,IAAIC,EAASD,CAAQ,EAC5BD,EAAQ,GAAI,CACd,GAAI,CAACD,EAAM,mBACT,MAAM,IAAI,MAAM,oCAAoC,EAEtDE,EAAS,oBAAoBF,EAAM,kBAAkB,CACvD,KAAO,CACL,GAAI,CAACA,EAAM,MACT,MAAO,GAET,GAAIA,EAAM,QAAS,CACjB,GAAI,CAACE,EAAS,WAAWF,EAAM,OAAO,EACpC,MAAM,IAAI,MAAM,oBAAoB,OAAOA,EAAM,OAAO,CAAC,EAE3DE,EAAS,QAAQF,EAAM,OAAO,CAChC,KAAO,CACL,GAAI,CAACA,EAAM,mBACT,MAAM,IAAI,MAAM,oCAAoC,EAEtDE,EAAS,oBAAoBF,EAAM,kBAAkB,CACvD,CACF,CAEA,GAAIE,EAAS,gBAAgB,EAC3B,OAAOE,GAAiBJ,EAAM,OAASA,EAAM,eAAgBE,CAAQ,EAQrE,GAAIF,EAAM,oBAAsBE,EAAS,2BAA2BF,EAAM,kBAAkB,EAG1F,MAAO,GAEP,MAAM,IAAI,MAAM,gGAAgG,CAGtH,CACO,SAASI,GAAiBC,EAAgBH,EAAU,CAEzD,OAAQI,GAAkBD,EAAgBH,CAAQ,EAAG,CACnD,IAAK,cACH,MAAO,GAMT,QACE,MAAO,EACX,CACF,CA3EA,IAAAK,GAAAC,EAAA,KAAAC,IACAC,OCIe,SAARC,EAAiCC,EAAMC,EAAoB,CAGhE,OAAAD,EAAOA,GAAQ,GACR,IAAI,OAAO,OAASC,EAAqB,IAAI,EAAE,KAAKD,CAAI,CACjE,CAVA,IAAAE,GAAAC,EAAA,QCAA,SAASC,GAAgCC,EAAGC,EAAgB,CAC1D,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC9E,GAAIE,EAAI,OAAQA,EAAKA,EAAG,KAAKF,CAAC,GAAG,KAAK,KAAKE,CAAE,EAC7C,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,GAAkBD,GAAK,OAAOA,EAAE,QAAW,SAAU,CAChHE,IAAIF,EAAIE,GACZ,IAAIE,EAAI,EACR,OAAO,UAAY,CACjB,OAAIA,GAAKJ,EAAE,OAAe,CACxB,KAAM,EACR,EACO,CACL,KAAM,GACN,MAAOA,EAAEI,GAAG,CACd,CACF,CACF,CACA,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAC7J,CACA,SAASD,GAA4BH,EAAGK,EAAQ,CAC9C,GAAKL,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOM,GAAkBN,EAAGK,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKP,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIO,IAAM,UAAYP,EAAE,cAAaO,EAAIP,EAAE,YAAY,MACnDO,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKP,CAAC,EACnD,GAAIO,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBN,EAAGK,CAAM,EACjH,CACA,SAASC,GAAkBE,EAAKC,EAAK,EAC/BA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAC/C,QAASJ,EAAI,EAAGM,EAAO,IAAI,MAAMD,CAAG,EAAGL,EAAIK,EAAKL,IAC9CM,EAAKN,CAAC,EAAII,EAAIJ,CAAC,EAEjB,OAAOM,CACT,CAKe,SAARC,GAA+BC,EAAOC,EAASC,EAAU,CAO9D,GAJAD,EAAUA,GAAW,CAAC,EAIlB,GAACD,EAAM,SAAW,CAACA,EAAM,oBAG7B,CAAAE,EAAW,IAAIC,EAASD,CAAQ,EAChCA,EAAS,oBAAoBF,EAAM,QAASA,EAAM,kBAAkB,EACpE,IAAII,EAAiBH,EAAQ,GAAKD,EAAM,eAAiBA,EAAM,MAI/D,GAAKK,EAAgBD,EAAgBF,EAAS,sBAAsB,CAAC,EAIrE,IAAII,GAAoBF,EAAgB,aAAcF,CAAQ,EAsB5D,OAjBIA,EAAS,KAAK,QAAQ,GAAKA,EAAS,KAAK,QAAQ,EAAE,QAAQ,IAAM,IAUjE,CAACA,EAAS,KAAK,QAAQ,GAOvBI,GAAoBF,EAAgB,SAAUF,CAAQ,EACjD,uBAEF,aAET,QAASK,EAAYpB,GAAgCqB,EAA0B,EAAGC,EAAO,EAAEA,EAAQF,EAAU,GAAG,MAAO,CACrH,IAAIG,EAAOD,EAAM,MACjB,GAAIH,GAAoBF,EAAgBM,EAAMR,CAAQ,EACpD,OAAOQ,CAEX,GACF,CACO,SAASJ,GAAoBF,EAAgBM,EAAMR,EAAU,CAWlE,OAVAQ,EAAOR,EAAS,KAAKQ,CAAI,EACrB,CAACA,GAAQ,CAACA,EAAK,QAAQ,GASvBA,EAAK,gBAAgB,GAAKA,EAAK,gBAAgB,EAAE,QAAQN,EAAe,MAAM,EAAI,EAC7E,GAEFC,EAAgBD,EAAgBM,EAAK,QAAQ,CAAC,CACvD,CA1GA,IAmCIF,GAnCJG,GAAAC,EAAA,KAiCAC,IACAC,KACIN,GAA6B,CAAC,SAAU,eAAgB,YAAa,cAAe,OAAQ,kBAAmB,QAAS,MAAO,WAAW,ICG/H,SAARO,GAA+BC,EAAOC,EAASC,EAAU,CAQ9D,GALAD,EAAUA,GAAW,CAAC,EACtBC,EAAW,IAAIC,EAASD,CAAQ,EAChCA,EAAS,oBAAoBF,EAAM,QAASA,EAAM,kBAAkB,EAGhEE,EAAS,SAAS,EACpB,OAAOE,GAAcJ,EAAOC,EAASC,EAAS,QAAQ,IAAM,OAI9D,IAAIG,EAAiBJ,EAAQ,GAAKD,EAAM,eAAiBA,EAAM,MAC/D,OAAOM,EAAgBD,EAAgBH,EAAS,sBAAsB,CAAC,CACzE,CArDA,IAAAK,GAAAC,EAAA,KAAAC,IACAC,KACAC,OCOe,SAARC,GAA+CC,EAAaC,EAAgBC,EAAU,CAC3F,IAAIC,EAAY,IAAIC,EAASF,CAAQ,EACjCG,EAAoBF,EAAU,8BAA8BH,CAAW,EAC3E,OAAKK,EAGEA,EAAkB,OAAO,SAAUC,EAAS,CACjD,OAAOC,GAAmCN,EAAgBK,EAASJ,CAAQ,CAC7E,CAAC,EAJQ,CAAC,CAKZ,CACA,SAASK,GAAmCN,EAAgBK,EAASJ,EAAU,CAC7E,IAAIC,EAAY,IAAIC,EAASF,CAAQ,EAErC,OADAC,EAAU,oBAAoBG,CAAO,EACjCH,EAAU,cAAc,gBAAgB,EAAE,QAAQF,EAAe,MAAM,GAAK,CAIlF,CA1BA,IAAAO,GAAAC,EAAA,KAAAC,MC+Be,SAARC,GAAkDC,EAAiB,CACxE,OAAOA,EAAgB,QAAQ,IAAI,OAAO,IAAI,OAAOC,GAAmB,IAAI,EAAG,GAAG,EAAG,GAAG,EAAE,KAAK,CACjG,CAjCA,IAAAC,GAAAC,EAAA,KAAAC,OCMe,SAARC,GAAiDC,EAAQC,EAAQC,EAAM,CAC5E,IAAIC,EAAyBD,EAAK,uBAChCE,EAAqBF,EAAK,mBAC1BG,EAAcH,EAAK,YACnBI,EAAWJ,EAAK,SACdK,EAAkBP,EAAO,QAAQ,IAAI,OAAOC,EAAO,QAAQ,CAAC,EAAGE,EAAyBF,EAAO,oBAAoB,EAcvHG,GAAsBH,EAAO,6BAA6B,EAAIA,EAAO,OAAO,EAAE,QAAQO,GAAqBP,EAAO,6BAA6B,CAAC,EAAIA,EAAO,OAAO,CAAC,EACnK,OAAIE,EACKM,GAAiCF,CAAe,EAElDA,CACT,CA9BA,IAKWC,GALXE,GAAAC,EAAA,KAAAC,KAKWJ,GAAsB,WCSlB,SAARK,GAA8BC,EAASC,EAAaC,EAAU,CACnE,IAAIC,EAAkB,IAAIC,EAASF,CAAQ,EAE3C,GADAC,EAAgB,oBAAoBH,EAASC,CAAW,EACpDE,EAAgB,iBAAiB,EACnC,OAAOA,EAAgB,iBAAiB,EAE1C,GAAIE,GAA0B,KAAKF,EAAgB,UAAU,CAAC,EAC5D,OAAOA,EAAgB,UAAU,CAErC,CAvBA,IAWIE,GAXJC,GAAAC,EAAA,KAAAC,IAWIH,GAA4B,2CC0GzB,SAASI,GAAcC,EAAM,CAClC,IAAIC,EAASD,EAAK,OAChBE,EAAMF,EAAK,IACb,GAAI,CAACC,EACH,MAAO,GAET,GAAIA,EAAO,CAAC,IAAM,IAChB,MAAM,IAAI,MAAM,2DAA+D,EAEjF,MAAO,OAAO,OAAOA,CAAM,EAAE,OAAOC,EAAM,QAAUA,EAAM,EAAE,CAC9D,CA/HA,IAAAC,GAAAC,EAAA,QCAA,SAASC,GAAgCC,EAAGC,EAAgB,CAC1D,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC9E,GAAIE,EAAI,OAAQA,EAAKA,EAAG,KAAKF,CAAC,GAAG,KAAK,KAAKE,CAAE,EAC7C,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,GAAkBD,GAAK,OAAOA,EAAE,QAAW,SAAU,CAChHE,IAAIF,EAAIE,GACZ,IAAIE,EAAI,EACR,OAAO,UAAY,CACjB,OAAIA,GAAKJ,EAAE,OAAe,CACxB,KAAM,EACR,EACO,CACL,KAAM,GACN,MAAOA,EAAEI,GAAG,CACd,CACF,CACF,CACA,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAC7J,CACA,SAASD,GAA4BH,EAAGK,EAAQ,CAC9C,GAAKL,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOM,GAAkBN,EAAGK,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKP,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIO,IAAM,UAAYP,EAAE,cAAaO,EAAIP,EAAE,YAAY,MACnDO,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKP,CAAC,EACnD,GAAIO,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBN,EAAGK,CAAM,EACjH,CACA,SAASC,GAAkBE,EAAKC,EAAK,EAC/BA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAC/C,QAASJ,EAAI,EAAGM,EAAO,IAAI,MAAMD,CAAG,EAAGL,EAAIK,EAAKL,IAC9CM,EAAKN,CAAC,EAAII,EAAIJ,CAAC,EAEjB,OAAOM,CACT,CACA,SAASC,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EACjDC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACzD,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CACpC,CACA,OAAOD,CACT,CACA,SAASG,GAAcC,EAAQ,CAC7B,QAASd,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIe,EAAiB,UAAUf,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EACpDA,EAAI,EAAIO,GAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUC,EAAK,CACzDC,GAAgBH,EAAQE,EAAKD,EAAOC,CAAG,CAAC,CAC1C,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBF,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,GAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjK,OAAO,eAAeF,EAAQE,EAAK,OAAO,yBAAyBD,EAAQC,CAAG,CAAC,CACjF,CAAC,CACH,CACA,OAAOF,CACT,CACA,SAASG,GAAgBC,EAAKF,EAAKG,EAAO,CACxC,OAAIH,KAAOE,EACT,OAAO,eAAeA,EAAKF,EAAK,CAC9B,MAAOG,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDD,EAAIF,CAAG,EAAIG,EAEND,CACT,CAgCe,SAARE,GAA8BC,EAAOC,EAAQC,EAASC,EAAU,CAQrE,GANID,EACFA,EAAUV,GAAcA,GAAc,CAAC,EAAGY,EAAe,EAAGF,CAAO,EAEnEA,EAAUE,GAEZD,EAAW,IAAIE,EAASF,CAAQ,EAC5BH,EAAM,SAAWA,EAAM,UAAY,MAAO,CAE5C,GAAI,CAACG,EAAS,WAAWH,EAAM,OAAO,EACpC,MAAM,IAAI,MAAM,oBAAoB,OAAOA,EAAM,OAAO,CAAC,EAE3DG,EAAS,QAAQH,EAAM,OAAO,CAChC,SAAWA,EAAM,mBACfG,EAAS,oBAAoBH,EAAM,kBAAkB,MAChD,QAAOA,EAAM,OAAS,GAC7B,IAAIM,EAAqBH,EAAS,mBAAmB,EACjDI,EAAiBL,EAAQ,GAAKF,EAAM,eAAiBA,EAAM,MAG3DQ,EACJ,OAAQP,EAAQ,CACd,IAAK,WAGH,OAAKM,GAGLC,EAASC,GAAqBF,EAAgBP,EAAM,YAAa,WAAYG,EAAUD,CAAO,EACvFQ,GAAaF,EAAQR,EAAM,IAAKG,EAAUD,EAAQ,eAAe,GAH/D,GAIX,IAAK,gBAGH,OAAKK,GAGLC,EAASC,GAAqBF,EAAgB,KAAM,gBAAiBJ,EAAUD,CAAO,EACtFM,EAAS,IAAI,OAAOF,EAAoB,GAAG,EAAE,OAAOE,CAAM,EACnDE,GAAaF,EAAQR,EAAM,IAAKG,EAAUD,EAAQ,eAAe,GAJ/D,IAAI,OAAOI,CAAkB,EAKxC,IAAK,QAEH,MAAO,IAAI,OAAOA,CAAkB,EAAE,OAAOC,CAAc,EAC7D,IAAK,UACH,OAAOI,GAAc,CACnB,OAAQ,IAAI,OAAOL,CAAkB,EAAE,OAAOC,CAAc,EAC5D,IAAKP,EAAM,GACb,CAAC,EAMH,IAAK,MACH,GAAI,CAACE,EAAQ,YACX,OAEF,IAAIU,EAAkBC,GAAUN,EAAgBP,EAAM,YAAaM,EAAoBJ,EAAQ,YAAaC,CAAQ,EACpH,OAAOO,GAAaE,EAAiBZ,EAAM,IAAKG,EAAUD,EAAQ,eAAe,EACnF,QACE,MAAM,IAAI,MAAM,0DAA+D,OAAOD,EAAQ,GAAI,CAAC,CACvG,CACF,CACA,SAASQ,GAAqBD,EAAQM,EAAaC,EAAUZ,EAAUD,EAAS,CAC9E,IAAID,EAASe,GAAsBb,EAAS,QAAQ,EAAGK,CAAM,EAC7D,OAAKP,EAGEgB,GAAgCT,EAAQP,EAAQ,CACrD,uBAAwBc,IAAa,gBACrC,mBAAoB,EAAAd,EAAO,uDAAuD,GAAKC,GAAWA,EAAQ,iBAAmB,IAC7H,YAAaY,EACb,SAAUX,CACZ,CAAC,EAPQK,CAQX,CACO,SAASQ,GAAsBE,EAAkBC,EAAiB,CACvE,QAASC,EAAY9C,GAAgC4C,CAAgB,EAAGG,EAAO,EAAEA,EAAQD,EAAU,GAAG,MAAO,CAC3G,IAAInB,EAASoB,EAAM,MAKnB,GAAIpB,EAAO,sBAAsB,EAAE,OAAS,EAAG,CAE7C,IAAIqB,EAA2BrB,EAAO,sBAAsB,EAAEA,EAAO,sBAAsB,EAAE,OAAS,CAAC,EAEvG,GAAIkB,EAAgB,OAAOG,CAAwB,IAAM,EACvD,QAEJ,CAEA,GAAIC,EAAgBJ,EAAiBlB,EAAO,QAAQ,CAAC,EACnD,OAAOA,CAEX,CACF,CACA,SAASS,GAAaE,EAAiBY,EAAKrB,EAAUsB,EAAiB,CACrE,OAAOD,EAAMC,EAAgBb,EAAiBY,EAAKrB,CAAQ,EAAIS,CACjE,CACA,SAASC,GAAUN,EAAgBO,EAAaR,EAAoBoB,EAAavB,EAAU,CACzF,IAAIwB,EAAyBC,GAAsBF,EAAavB,EAAS,QAAQ,EAEjF,GAAIwB,IAA2BrB,EAAoB,CACjD,IAAIM,EAAkBH,GAAqBF,EAAgBO,EAAa,WAAYX,CAAQ,EAG5F,OAAIG,IAAuB,IAClBA,EAAqB,IAAMM,EAW7BA,CACT,CACA,IAAIiB,EAAYC,GAAaJ,EAAa,OAAWvB,EAAS,QAAQ,EACtE,GAAI0B,EACF,MAAO,GAAG,OAAOA,EAAW,GAAG,EAAE,OAAOvB,EAAoB,GAAG,EAAE,OAAOG,GAAqBF,EAAgB,KAAM,gBAAiBJ,CAAQ,CAAC,CAEjJ,CA9NA,IA6EIC,GA7EJ2B,GAAAC,EAAA,KAwEAC,KACAC,KACAC,IACAC,KACAC,KACIjC,GAAkB,CACpB,gBAAiB,SAAyBQ,EAAiB0B,EAAWnC,EAAU,CAC9E,MAAO,GAAG,OAAOS,CAAe,EAAE,OAAOT,EAAS,IAAI,CAAC,EAAE,OAAOmC,CAAS,CAC3E,CACF,ICjFA,SAASC,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EACjDC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACzD,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CACpC,CACA,OAAOD,CACT,CACA,SAASG,GAAcC,EAAQ,CAC7B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EACpDA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUC,EAAK,CACzDC,GAAgBJ,EAAQG,EAAKD,EAAOC,CAAG,CAAC,CAC1C,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBH,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjK,OAAO,eAAeH,EAAQG,EAAK,OAAO,yBAAyBD,EAAQC,CAAG,CAAC,CACjF,CAAC,CACH,CACA,OAAOH,CACT,CACA,SAASI,GAAgBC,EAAKF,EAAKG,EAAO,CACxC,OAAIH,KAAOE,EACT,OAAO,eAAeA,EAAKF,EAAK,CAC9B,MAAOG,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDD,EAAIF,CAAG,EAAIG,EAEND,CACT,CACA,SAASE,GAAgBC,EAAUC,EAAa,CAC9C,GAAI,EAAED,aAAoBC,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,CACA,SAASC,GAAkBV,EAAQW,EAAO,CACxC,QAASV,EAAI,EAAGA,EAAIU,EAAM,OAAQV,IAAK,CACrC,IAAIW,EAAaD,EAAMV,CAAC,EACxBW,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeZ,EAAQY,EAAW,IAAKA,CAAU,CAC1D,CACF,CACA,SAASC,GAAaJ,EAAaK,EAAYC,EAAa,CAC1D,OAAID,GAAYJ,GAAkBD,EAAY,UAAWK,CAAU,EAC/DC,GAAaL,GAAkBD,EAAaM,CAAW,EAC3D,OAAO,eAAeN,EAAa,YAAa,CAC9C,SAAU,EACZ,CAAC,EACMA,CACT,CAmIA,SAASO,GAAgCC,EAA6BC,EAAc,CAClF,IAAIC,EACAC,EACAC,EAAW,IAAIC,EAASJ,CAAY,EAGxC,OAAIK,GAAcN,CAA2B,GAC3CE,EAAUF,EACVI,EAAS,oBAAoBF,CAAO,EACpCC,EAAqBC,EAAS,mBAAmB,IAEjDD,EAAqBH,EAGjBO,IACEH,EAAS,2BAA2BD,CAAkB,IACxDD,EAAU,QAIT,CACL,QAASA,EACT,mBAAoBC,CACtB,CACF,CAlNA,IA+DII,GACAC,GAuHAF,GAvLJG,GAAAC,EAAA,KAwDAC,IACAC,KACAC,KAEAC,KACAC,KACAC,KACIT,GAAkC,GAClCC,GAA2B,UAAY,CAOzC,SAASA,EAAYR,EAA6BiB,EAAgBb,EAAU,CAE1E,GADAd,GAAgB,KAAMkB,CAAW,EAC7B,CAACR,EACH,MAAM,IAAI,UAAU,8CAA8C,EAEpE,GAAI,CAACiB,EACH,MAAM,IAAI,UAAU,6BAA6B,EAEnD,GAAI,CAACb,EACH,MAAM,IAAI,UAAU,uBAAuB,EAE7C,IAAIc,EAAwBnB,GAAgCC,EAA6BI,CAAQ,EAC/FF,EAAUgB,EAAsB,QAChCf,EAAqBe,EAAsB,mBAC7C,KAAK,QAAUhB,EACf,KAAK,mBAAqBC,EAC1B,KAAK,eAAiBc,EACtB,KAAK,OAAS,IAAM,KAAK,mBAAqB,KAAK,eAKnD,KAAK,YAAc,UAAY,CAC7B,OAAOb,CACT,CACF,CACA,OAAAR,GAAaY,EAAa,CAAC,CACzB,IAAK,SACL,MAAO,SAAgBW,EAAK,CAC1B,KAAK,IAAMA,CACb,CACF,EAAG,CACD,IAAK,uBACL,MAAO,UAAgC,CACrC,OAAI,KAAK,QACA,CAAC,KAAK,OAAO,EAEfC,GAA8B,KAAK,mBAAoB,KAAK,eAAgB,KAAK,YAAY,CAAC,CACvG,CACF,EAAG,CACD,IAAK,aACL,MAAO,UAAsB,CAC3B,OAAOC,GAAiB,KAAM,CAC5B,GAAI,EACN,EAAG,KAAK,YAAY,CAAC,CACvB,CACF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,OAAOC,GAAc,KAAM,CACzB,GAAI,EACN,EAAG,KAAK,YAAY,CAAC,CACvB,CACF,EAAG,CACD,IAAK,kBACL,MAAO,UAA2B,CAChC,IAAIlB,EAAW,IAAIC,EAAS,KAAK,YAAY,CAAC,EAC9C,OAAOD,EAAS,2BAA2B,KAAK,kBAAkB,CACpE,CACF,EAAG,CACD,IAAK,UACL,MAAO,SAAiBmB,EAAa,CACnC,OAAO,KAAK,SAAWA,EAAY,QAAU,KAAK,MAAQA,EAAY,GACxE,CAcF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,OAAOC,GAAc,KAAM,CACzB,GAAI,EACN,EAAG,KAAK,YAAY,CAAC,CACvB,CACF,EAAG,CACD,IAAK,SACL,MAAO,SAAgBC,EAASC,EAAS,CACvC,OAAOC,GAAa,KAAMF,EAASC,EAAU5C,GAAcA,GAAc,CAAC,EAAG4C,CAAO,EAAG,CAAC,EAAG,CACzF,GAAI,EACN,CAAC,EAAI,CACH,GAAI,EACN,EAAG,KAAK,YAAY,CAAC,CACvB,CACF,EAAG,CACD,IAAK,iBACL,MAAO,SAAwBA,EAAS,CACtC,OAAO,KAAK,OAAO,WAAYA,CAAO,CACxC,CACF,EAAG,CACD,IAAK,sBACL,MAAO,SAA6BA,EAAS,CAC3C,OAAO,KAAK,OAAO,gBAAiBA,CAAO,CAC7C,CACF,EAAG,CACD,IAAK,SACL,MAAO,SAAgBA,EAAS,CAC9B,OAAO,KAAK,OAAO,UAAWA,CAAO,CACvC,CACF,CAAC,CAAC,EACKlB,CACT,EAAE,EAEEF,GAAgB,SAAuBjB,EAAO,CAChD,MAAO,aAAa,KAAKA,CAAK,CAChC,ICtLe,SAARuC,GAAgCC,EAAQC,EAASC,EAAaC,EAAU,CAC7E,GAAKF,EAIL,KAAIG,EAAkB,IAAIC,EAASF,CAAQ,EAC3CC,EAAgB,oBAAoBH,EAASC,CAAW,EACxD,IAAII,EAAmB,IAAI,OAAOF,EAAgB,UAAU,CAAC,EAC7D,GAAIJ,EAAO,OAAOM,CAAgB,IAAM,EAIxC,CAAAN,EAASA,EAAO,MAAMA,EAAO,MAAMM,CAAgB,EAAE,CAAC,EAAE,MAAM,EAK9D,IAAIC,EAAgBP,EAAO,MAAMQ,EAAuB,EACxD,GAAI,EAAAD,GAAiBA,EAAc,CAAC,GAAK,MAAQA,EAAc,CAAC,EAAE,OAAS,GACrEA,EAAc,CAAC,IAAM,KAI3B,OAAOP,GACT,CA3BA,IAEIQ,GAFJC,GAAAC,EAAA,KAAAC,IACAC,KACIJ,GAA0B,IAAI,OAAO,KAAOK,EAAe,IAAI,ICWpD,SAARC,GAAmEC,EAAQC,EAAU,CAC1F,GAAID,GAAUC,EAAS,cAAc,yBAAyB,EAAG,CAI/D,IAAIC,EAAgB,IAAI,OAAO,OAASD,EAAS,cAAc,yBAAyB,EAAI,GAAG,EAC3FE,EAAcD,EAAc,KAAKF,CAAM,EAC3C,GAAIG,EAAa,CACf,IAAIC,EACAC,EAiBAC,EAAsBH,EAAY,OAAS,EAC3CI,EAAoBD,EAAsB,GAAKH,EAAYG,CAAmB,EAClF,GAAIL,EAAS,4BAA4B,GAAKM,EAC5CH,EAAiBJ,EAAO,QAAQE,EAAeD,EAAS,4BAA4B,CAAC,EAGjFK,EAAsB,IACxBD,EAAcF,EAAY,CAAC,OAQ1B,CAMH,IAAIK,EAA6BL,EAAY,CAAC,EAC9CC,EAAiBJ,EAAO,MAAMQ,EAA2B,MAAM,EAG3DD,IACFF,EAAcF,EAAY,CAAC,EAE/B,CAMA,IAAIM,EACJ,GAAIF,EAAmB,CACrB,IAAIG,EAA0CV,EAAO,QAAQG,EAAY,CAAC,CAAC,EACvEQ,EAAyBX,EAAO,MAAM,EAAGU,CAAuC,EAOhFC,IAA2BV,EAAS,cAAc,eAAe,IACnEQ,EAAiBR,EAAS,cAAc,eAAe,EAE3D,MACEQ,EAAiBN,EAAY,CAAC,EAEhC,MAAO,CACL,eAAgBC,EAChB,eAAgBK,EAChB,YAAaJ,CACf,CACF,CACF,CACA,MAAO,CACL,eAAgBL,CAClB,CACF,CAnGA,IAAAY,GAAAC,EAAA,QCae,SAARC,GAAuCC,EAAQC,EAAU,CAU9D,IAAIC,EAAwBC,GAAkDH,EAAQC,CAAQ,EAC5FG,EAAcF,EAAsB,YACpCG,EAAiBH,EAAsB,eACzC,GAAIG,IAAmBL,EAAQ,CAC7B,GAAI,CAACM,GAAkCN,EAAQK,EAAgBJ,CAAQ,EAErE,MAAO,CACL,eAAgBD,CAClB,EAIF,GAAIC,EAAS,gBAAgB,GASvB,CAACM,GAAmCF,EAAgBJ,CAAQ,EAE9D,MAAO,CACL,eAAgBD,CAClB,CAGN,CACA,MAAO,CACL,eAAgBK,EAChB,YAAaD,CACf,CACF,CAeA,SAASE,GAAkCE,EAAsBC,EAAqBR,EAAU,CAG9F,MAAI,EAAAS,EAAgBF,EAAsBP,EAAS,sBAAsB,CAAC,GAAK,CAACS,EAAgBD,EAAqBR,EAAS,sBAAsB,CAAC,EAiBvJ,CACA,SAASM,GAAmCF,EAAgBJ,EAAU,CACpE,OAAQU,GAAkBN,EAAgBJ,CAAQ,EAAG,CACnD,IAAK,YACL,IAAK,iBAIH,MAAO,GACT,QACE,MAAO,EACX,CACF,CAvGA,IAAAW,GAAAC,EAAA,KAAAC,KACAC,KACAC,OCae,SAARC,GAAiFC,EAAQC,EAASC,EAAaC,EAAU,CAC9H,IAAIC,EAAqBH,EAAUI,GAAsBJ,EAASE,CAAQ,EAAID,EAC9E,GAAIF,EAAO,QAAQI,CAAkB,IAAM,EAAG,CAC5CD,EAAW,IAAIG,EAASH,CAAQ,EAChCA,EAAS,oBAAoBF,EAASC,CAAW,EACjD,IAAIK,EAAwBP,EAAO,MAAMI,EAAmB,MAAM,EAC9DI,EAAwBC,GAAsBF,EAAuBJ,CAAQ,EAC/EO,EAAgCF,EAAsB,eACpDG,EAAyBF,GAAsBT,EAAQG,CAAQ,EACjES,EAAiBD,EAAuB,eAS1C,GAAI,CAACE,EAAgBD,EAAgBT,EAAS,sBAAsB,CAAC,GAAKU,EAAgBH,EAA+BP,EAAS,sBAAsB,CAAC,GAAKW,GAAkBF,EAAgBT,CAAQ,IAAM,WAC5M,MAAO,CACL,mBAAoBC,EACpB,OAAQG,CACV,CAEJ,CACA,MAAO,CACL,OAAQP,CACV,CACF,CA3CA,IAAAe,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,OCmBe,SAARC,GAA2CC,EAAQC,EAASC,EAAaC,EAAU,CACxF,GAAI,CAACH,EACH,MAAO,CAAC,EAEV,IAAII,EAQJ,GAAIJ,EAAO,CAAC,IAAM,IAAK,CAGrB,IAAIK,EAAmBC,GAAeN,EAAQC,EAASC,EAAaC,CAAQ,EAI5E,GAAIE,GAAoBA,IAAqBL,EAC3CI,EAAwB,GACxBJ,EAAS,IAAMK,MACV,CAKL,GAAIJ,GAAWC,EAAa,CAC1B,IAAIK,EAAwBC,GAAgER,EAAQC,EAASC,EAAaC,CAAQ,EAChIM,EAAqBF,EAAsB,mBAC3CG,EAAgBH,EAAsB,OACxC,GAAIE,EACF,MAAO,CACL,yBAA0B,gCAC1B,mBAAoBA,EACpB,OAAQC,CACV,CAEJ,CACA,MAAO,CAGL,OAAQV,CACV,CACF,CACF,CAEA,GAAIA,EAAO,CAAC,IAAM,IAChB,MAAO,CAAC,EAEVG,EAAW,IAAIQ,EAASR,CAAQ,EAWhC,QADIS,EAAI,EACDA,EAAI,GAAKC,IAA2BD,GAAKZ,EAAO,QAAQ,CAC7D,IAAIc,EAAsBd,EAAO,MAAM,EAAGY,CAAC,EAC3C,GAAIT,EAAS,eAAeW,CAAmB,EAC7C,OAAAX,EAAS,oBAAoBW,CAAmB,EACzC,CACL,yBAA0BV,EAAwB,uBAAyB,6BAC3E,mBAAoBU,EACpB,OAAQd,EAAO,MAAMY,CAAC,CACxB,EAEFA,GACF,CACA,MAAO,CAAC,CACV,CAjGA,IAAAG,GAAAC,EAAA,KAAAC,KACAC,KACAC,IACAC,OCHA,SAASC,GAAgCC,EAAGC,EAAgB,CAC1D,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC9E,GAAIE,EAAI,OAAQA,EAAKA,EAAG,KAAKF,CAAC,GAAG,KAAK,KAAKE,CAAE,EAC7C,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,GAAkBD,GAAK,OAAOA,EAAE,QAAW,SAAU,CAChHE,IAAIF,EAAIE,GACZ,IAAIE,EAAI,EACR,OAAO,UAAY,CACjB,OAAIA,GAAKJ,EAAE,OAAe,CACxB,KAAM,EACR,EACO,CACL,KAAM,GACN,MAAOA,EAAEI,GAAG,CACd,CACF,CACF,CACA,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAC7J,CACA,SAASD,GAA4BH,EAAGK,EAAQ,CAC9C,GAAKL,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOM,GAAkBN,EAAGK,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKP,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIO,IAAM,UAAYP,EAAE,cAAaO,EAAIP,EAAE,YAAY,MACnDO,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKP,CAAC,EACnD,GAAIO,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBN,EAAGK,CAAM,EACjH,CACA,SAASC,GAAkBE,EAAKC,EAAK,EAC/BA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAC/C,QAASJ,EAAI,EAAGM,EAAO,IAAI,MAAMD,CAAG,EAAGL,EAAIK,EAAKL,IAC9CM,EAAKN,CAAC,EAAII,EAAIJ,CAAC,EAEjB,OAAOM,CACT,CAGe,SAARC,GAA4CC,EAAqBC,EAAM,CAC5E,IAAIC,EAAYD,EAAK,UACnBE,EAAiBF,EAAK,eACtBG,EAAWH,EAAK,SAElBG,EAAW,IAAIC,EAASD,CAAQ,EAEhC,QAASE,EAAYnB,GAAgCe,CAAS,EAAGK,EAAO,EAAEA,EAAQD,EAAU,GAAG,MAAO,CACpG,IAAIE,EAAUD,EAAM,MASpB,GARAH,EAAS,QAAQI,CAAO,EAQpBJ,EAAS,cAAc,GACzB,GAAIJ,GAAuBA,EAAoB,OAAOI,EAAS,cAAc,CAAC,IAAM,EAClF,OAAOI,UAIFC,GAAc,CACrB,MAAOT,EACP,QAASQ,CACX,EAAG,OAAWJ,EAAS,QAAQ,EAI7B,OAAOI,CAUX,CAIF,CA/EA,IAAAE,GAAAC,EAAA,KAiCAC,IACAC,OChCe,SAARC,GAAyCC,EAAaC,EAAM,CACjE,IAAIC,EAAsBD,EAAK,eAC7BE,EAAiBF,EAAK,eACtBG,EAAWH,EAAK,SAGlB,GAAII,IACED,EAAS,2BAA2BJ,CAAW,EACjD,MAAO,MAGX,IAAIM,EAAoBF,EAAS,8BAA8BJ,CAAW,EAC1E,GAAKM,EAKL,OAAIA,EAAkB,SAAW,EACxBA,EAAkB,CAAC,EAErBC,GAA2BL,EAAqB,CACrD,UAAWI,EACX,eAAgBH,EAChB,SAAUC,EAAS,QACrB,CAAC,CACH,CA3BA,IACIC,GADJG,GAAAC,EAAA,KAAAC,KACIL,GAAkC,KCwCvB,SAARM,GAAqCC,EAAqB,CAC/D,IAAIC,EAAsBD,EAAoB,QAAQE,EAAsB,EAE5E,GAAID,EAAsB,EACxB,OAAO,KAET,IAAIE,EAAoBF,EAAsBC,GAAuB,OAErE,GAAIC,GAAqBH,EAAoB,OAC3C,MAAO,GAET,IAAII,EAAkBJ,EAAoB,QAAQ,IAAKG,CAAiB,EAExE,OAAIC,GAAmB,EACdJ,EAAoB,UAAUG,EAAmBC,CAAe,EAEhEJ,EAAoB,UAAUG,CAAiB,CAE1D,CAQO,SAASE,GAAoBC,EAAc,CAChD,OAAIA,IAAiB,KACZ,GAELA,EAAa,SAAW,EACnB,GAGFC,GAAsC,KAAKD,CAAY,GAAKE,GAA4B,KAAKF,CAAY,CAClH,CA5EA,IAOWG,GACPC,GACAC,GACAC,GAMAL,GAGAM,GACAC,GACAC,GACAC,GACAC,GAMAT,GACOU,GACAhB,GACAiB,GAhCXC,GAAAC,EAAA,KAKAC,KAEWb,GAAY,IACnBC,GAA4B,kBAC5BC,GAAuB,KAAYY,EAAe,KAAYb,GAA4B,IAC1FE,GAAgC,MAAaH,GAAYE,GAAuB,KAAYY,EAAe,IAAMZ,GAAuB,KAMxIJ,GAAwC,IAAI,OAAOK,GAA+B,GAAG,EAGrFC,GAAYU,EACZT,GAAuB,IAAMD,GAAY,aAAeA,GAAY,MACpEE,GAAe,SACfC,GAAoB,IAAMD,GAAe,aAAeF,GAAY,MACpEI,GAAsB,KAAOH,GAAuB,QAAUE,GAAoB,QAMlFR,GAA8B,IAAI,OAAOS,GAAqB,GAAG,EAC1DC,GAAkB,OAClBhB,GAAyB,kBACzBiB,GAA2B,WCxBvB,SAARK,GAAyEC,EAAeC,EAAM,CACnG,IAAIC,EAA8BD,EAAK,4BACnCE,EAAeC,GAAoBJ,CAAa,EACpD,GAAI,CAACK,GAAoBF,CAAY,EACnC,MAAM,IAAIG,EAAW,cAAc,EAErC,IAAIC,EACJ,GAAIJ,IAAiB,KAGnBI,EAAoBL,EAA4BF,CAAa,GAAK,OAC7D,CACLO,EAAoB,GAGhBJ,EAAa,OAAO,CAAC,IAAMK,KAC7BD,GAAqBJ,GAOvB,IAAIM,EAAuBT,EAAc,QAAQU,EAAe,EAC5DC,EAKAF,GAAwB,EAC1BE,EAAwBF,EAAuBC,GAAgB,OAE/DC,EAAwB,EAE1B,IAAIC,EAAsBZ,EAAc,QAAQa,EAAsB,EACtEN,GAAqBP,EAAc,UAAUW,EAAuBC,CAAmB,CACzF,CAIA,IAAIE,EAAcP,EAAkB,QAAQQ,EAAwB,EASpE,GARID,EAAc,IAChBP,EAAoBA,EAAkB,UAAU,EAAGO,CAAW,GAO5DP,IAAsB,GACxB,OAAOA,CAEX,CA5DA,IAAAS,GAAAC,EAAA,KAAAC,KACAC,OCqDe,SAARC,GAAuBC,EAAMC,EAASC,EAAU,CAMrD,GAHAD,EAAUA,GAAW,CAAC,EACtBC,EAAW,IAAIC,EAASD,CAAQ,EAE5BD,EAAQ,gBAAkB,CAACC,EAAS,WAAWD,EAAQ,cAAc,EACvE,MAAIA,EAAQ,GACJ,IAAIG,EAAW,iBAAiB,EAElC,IAAI,MAAM,oBAAoB,OAAOH,EAAQ,cAAc,CAAC,EAGpE,IAAII,EAAcC,GAAWN,EAAMC,EAAQ,GAAIA,EAAQ,OAAO,EAC5DM,EAAuBF,EAAY,OACnCG,EAAMH,EAAY,IAClBI,EAAQJ,EAAY,MAEtB,GAAI,CAACE,EAAsB,CACzB,GAAIN,EAAQ,GACV,MAAIQ,IAAU,YACN,IAAIL,EAAW,WAAW,EAE5B,IAAIA,EAAW,cAAc,EAErC,MAAO,CAAC,CACV,CACA,IAAIM,EAAoBC,GAAiBJ,EAAsBN,EAAQ,eAAgBA,EAAQ,mBAAoBC,CAAQ,EACzHU,EAAUF,EAAkB,QAC5BG,EAAiBH,EAAkB,eACnCI,EAAqBJ,EAAkB,mBACvCK,EAA2BL,EAAkB,yBAC7CM,EAAcN,EAAkB,YAClC,GAAI,CAACR,EAAS,yBAAyB,EAAG,CACxC,GAAID,EAAQ,GACV,MAAM,IAAIG,EAAW,iBAAiB,EAExC,MAAO,CAAC,CACV,CAEA,GAAI,CAACS,GAAkBA,EAAe,OAASI,GAAoB,CAIjE,GAAIhB,EAAQ,GACV,MAAM,IAAIG,EAAW,WAAW,EAGlC,MAAO,CAAC,CACV,CAUA,GAAIS,EAAe,OAASK,GAAoB,CAC9C,GAAIjB,EAAQ,GACV,MAAM,IAAIG,EAAW,UAAU,EAGjC,MAAO,CAAC,CACV,CACA,GAAIH,EAAQ,GAAI,CACd,IAAIkB,EAAc,IAAIC,GAAYN,EAAoBD,EAAgBX,EAAS,QAAQ,EACvF,OAAIU,IACFO,EAAY,QAAUP,GAEpBI,IACFG,EAAY,YAAcH,GAExBR,IACFW,EAAY,IAAMX,GAEpBW,EAAY,2BAA6BJ,EAClCI,CACT,CAIA,IAAIE,GAASpB,EAAQ,SAAWC,EAAS,yBAAyB,EAAIU,GAAWU,EAAgBT,EAAgBX,EAAS,sBAAsB,CAAC,EAAI,GACrJ,OAAKD,EAAQ,SAIN,CACL,QAASW,EACT,mBAAoBE,EACpB,YAAaE,EACb,MAAOK,EACP,SAAUA,EAAQ,GAAO,GAAApB,EAAQ,WAAa,IAAQC,EAAS,gBAAgB,GAAKqB,GAAiBV,EAAgBX,CAAQ,GAC7H,MAAOW,EACP,IAAKL,CACP,EAXSa,EAAQG,GAAOZ,EAASC,EAAgBL,CAAG,EAAI,CAAC,CAY3D,CAcA,SAASiB,GAA6BzB,EAAM0B,EAASC,EAAc,CACjE,GAAK3B,EAGL,IAAIA,EAAK,OAAS4B,GAAyB,CACzC,GAAID,EACF,MAAM,IAAIvB,EAAW,UAAU,EAEjC,MACF,CACA,GAAIsB,IAAY,GACd,OAAO1B,EAGT,IAAI6B,EAAW7B,EAAK,OAAO8B,EAA0B,EACrD,GAAI,EAAAD,EAAW,GAGf,OAAO7B,EACN,MAAM6B,CAAQ,EACd,QAAQE,GAAgC,EAAE,EAC7C,CAQA,SAASzB,GAAWN,EAAMgC,EAAIN,EAAS,CAMrC,IAAIO,EAASC,GAAwDlC,EAAM,CACzE,4BAA6B,SAAqCA,EAAM,CACtE,OAAOyB,GAA6BzB,EAAM0B,EAASM,CAAE,CACvD,CACF,CAAC,EAED,GAAI,CAACC,EACH,MAAO,CAAC,EAEV,GAAI,CAACE,GAAoBF,CAAM,EAC7B,OAAIG,GAAyBH,CAAM,EAC1B,CACL,MAAO,WACT,EAEK,CAAC,EAIV,IAAII,EAAwBC,GAAiBL,CAAM,EACnD,OAAII,EAAsB,IACjBA,EAEF,CACL,OAAQJ,CACV,CACF,CAKA,SAAST,GAAOZ,EAASC,EAAgBL,EAAK,CAC5C,IAAIgB,EAAS,CACX,QAASZ,EACT,MAAOC,CACT,EACA,OAAIL,IACFgB,EAAO,IAAMhB,GAERgB,CACT,CAUA,SAASb,GAAiBJ,EAAsBgC,EAAgBC,EAAoBtC,EAAU,CAE5F,IAAIuC,EAAwBC,GAA0BC,GAA2BpC,CAAoB,EAAGgC,EAAgBC,EAAoBtC,EAAS,QAAQ,EAC3Ja,EAA2B0B,EAAsB,yBACjD3B,EAAqB2B,EAAsB,mBAC3CR,EAASQ,EAAsB,OAE7B7B,EACJ,GAAIE,EACFZ,EAAS,oBAAoBY,CAAkB,UAGxCmB,IAAWM,GAAkBC,GACpCtC,EAAS,oBAAoBqC,EAAgBC,CAAkB,EAC3DD,EACF3B,EAAU2B,EAGNK,IACE1C,EAAS,2BAA2BsC,CAAkB,IACxD5B,EAAU,OAIhBE,EAAqB0B,GAAsBK,GAAsBN,EAAgBrC,EAAS,QAAQ,MAC7F,OAAO,CAAC,EACf,GAAI,CAAC+B,EACH,MAAO,CACL,yBAA0BlB,EAC1B,mBAAoBD,CACtB,EAEF,IAAIgC,EAAwBC,GAAsBJ,GAA2BV,CAAM,EAAG/B,CAAQ,EAC5FW,EAAiBiC,EAAsB,eACvC9B,EAAc8B,EAAsB,YAWlCE,EAAeC,GAAwBnC,EAAoB,CAC7D,eAAgBD,EAChB,eAAgB0B,EAChB,SAAUrC,CACZ,CAAC,EACD,OAAI8C,IACFpC,EAAUoC,EAGNA,IAAiB,OAInB9C,EAAS,QAAQU,CAAO,GAGrB,CACL,QAASA,EACT,mBAAoBE,EACpB,yBAA0BC,EAC1B,eAAgBF,EAChB,YAAaG,CACf,CACF,CA9TA,IAsBIY,GAEAE,GAIAC,GACAa,GA7BJM,GAAAC,EAAA,KAIAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KAGIrC,GAA0B,IAE1BE,GAA6B,IAAI,OAAO,IAAMoC,GAAaC,EAAe,GAAG,EAI7EpC,GAAiC,IAAI,OAAO,KAAOoC,EAAe,MAAW,EAC7EvB,GAAkC,KC7BtC,SAASwB,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EACjDC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACzD,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CACpC,CACA,OAAOD,CACT,CACA,SAASG,GAAcC,EAAQ,CAC7B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EACpDA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUC,EAAK,CACzDC,GAAgBJ,EAAQG,EAAKD,EAAOC,CAAG,CAAC,CAC1C,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBH,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjK,OAAO,eAAeH,EAAQG,EAAK,OAAO,yBAAyBD,EAAQC,CAAG,CAAC,CACjF,CAAC,CACH,CACA,OAAOH,CACT,CACA,SAASI,GAAgBC,EAAKF,EAAKG,EAAO,CACxC,OAAIH,KAAOE,EACT,OAAO,eAAeA,EAAKF,EAAK,CAC9B,MAAOG,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDD,EAAIF,CAAG,EAAIG,EAEND,CACT,CACA,SAASE,GAAeC,EAAKP,EAAG,CAC9B,OAAOQ,GAAgBD,CAAG,GAAKE,GAAsBF,EAAKP,CAAC,GAAKU,GAA4BH,EAAKP,CAAC,GAAKW,GAAiB,CAC1H,CACA,SAASA,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CACA,SAASD,GAA4BE,EAAGC,EAAQ,CAC9C,GAAKD,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOE,GAAkBF,EAAGC,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKH,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIG,IAAM,UAAYH,EAAE,cAAaG,EAAIH,EAAE,YAAY,MACnDG,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKH,CAAC,EACnD,GAAIG,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBF,EAAGC,CAAM,EACjH,CACA,SAASC,GAAkBP,EAAKS,EAAK,EAC/BA,GAAO,MAAQA,EAAMT,EAAI,UAAQS,EAAMT,EAAI,QAC/C,QAASP,EAAI,EAAGiB,EAAO,IAAI,MAAMD,CAAG,EAAGhB,EAAIgB,EAAKhB,IAC9CiB,EAAKjB,CAAC,EAAIO,EAAIP,CAAC,EAEjB,OAAOiB,CACT,CACA,SAASR,GAAsBF,EAAKP,EAAG,CACrC,IAAIkB,EAAKX,GAAO,KAAO,KAAO,OAAO,OAAW,KAAeA,EAAI,OAAO,QAAQ,GAAKA,EAAI,YAAY,EACvG,GAAIW,GAAM,KACV,KAAIC,EAAO,CAAC,EACRC,EAAK,GACLC,EAAK,GACLC,EAAIC,EACR,GAAI,CACF,IAAKL,EAAKA,EAAG,KAAKX,CAAG,EAAG,EAAEa,GAAME,EAAKJ,EAAG,KAAK,GAAG,QAC9CC,EAAK,KAAKG,EAAG,KAAK,EACd,EAAAtB,GAAKmB,EAAK,SAAWnB,IAF4BoB,EAAK,GAE1D,CAEJ,OAASI,EAAK,CACZH,EAAK,GACLE,EAAKC,CACP,QAAE,CACA,GAAI,CACE,CAACJ,GAAMF,EAAG,QAAa,MAAMA,EAAG,OAAU,CAChD,QAAE,CACA,GAAIG,EAAI,MAAME,CAChB,CACF,CACA,OAAOJ,EACT,CACA,SAASX,GAAgBD,EAAK,CAC5B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CACjC,CAMe,SAARkB,GAAoCC,EAAM,CAC/C,IAAIC,EAAwB,MAAM,UAAU,MAAM,KAAKD,CAAI,EACzDE,EAAyBtB,GAAeqB,EAAuB,CAAC,EAChEE,EAAQD,EAAuB,CAAC,EAChCE,EAAQF,EAAuB,CAAC,EAChCG,EAAQH,EAAuB,CAAC,EAChCI,EAAQJ,EAAuB,CAAC,EAC9BK,EACAC,EACAC,EAGJ,GAAI,OAAON,GAAU,SACnBI,EAAOJ,MACF,OAAM,IAAI,UAAU,sCAAsC,EAGjE,GAAI,CAACC,GAAS,OAAOA,GAAU,SACzBE,GACFE,EAAUH,EACVI,EAAWH,IAEXE,EAAU,OACVC,EAAWJ,GAETD,IACFI,EAAUpC,GAAc,CACtB,eAAgBgC,CAClB,EAAGI,CAAO,WAILE,GAASN,CAAK,EACjBC,GACFG,EAAUJ,EACVK,EAAWJ,GAEXI,EAAWL,MAER,OAAM,IAAI,MAAM,4BAA4B,OAAOA,CAAK,CAAC,EAChE,MAAO,CACL,KAAMG,EACN,QAASC,EACT,SAAUC,CACZ,CACF,CApIA,IAAAE,GAAAC,EAAA,KAkFAC,OChFe,SAARC,IAA+B,CACpC,IAAIC,EAAsBC,GAAmB,SAAS,EACpDC,EAAOF,EAAoB,KAC3BG,EAAUH,EAAoB,QAC9BI,EAAWJ,EAAoB,SACjC,OAAOK,GAAaH,EAAMC,EAASC,CAAQ,CAC7C,CARA,IAAAE,GAAAC,EAAA,KAAAD,KACAE,OCCO,SAASC,IAAQ,CACtB,OAAOC,EAAqBC,GAAQ,SAAS,CAC/C,CAJA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCDA,SAASG,GAAeC,EAAKC,EAAG,CAC9B,OAAOC,GAAgBF,CAAG,GAAKG,GAAsBH,EAAKC,CAAC,GAAKG,GAA4BJ,EAAKC,CAAC,GAAKI,GAAiB,CAC1H,CACA,SAASA,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CACA,SAASD,GAA4BE,EAAGC,EAAQ,CAC9C,GAAKD,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOE,GAAkBF,EAAGC,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKH,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIG,IAAM,UAAYH,EAAE,cAAaG,EAAIH,EAAE,YAAY,MACnDG,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKH,CAAC,EACnD,GAAIG,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBF,EAAGC,CAAM,EACjH,CACA,SAASC,GAAkBR,EAAKU,EAAK,EAC/BA,GAAO,MAAQA,EAAMV,EAAI,UAAQU,EAAMV,EAAI,QAC/C,QAASC,EAAI,EAAGU,EAAO,IAAI,MAAMD,CAAG,EAAGT,EAAIS,EAAKT,IAC9CU,EAAKV,CAAC,EAAID,EAAIC,CAAC,EAEjB,OAAOU,CACT,CACA,SAASR,GAAsBH,EAAKC,EAAG,CACrC,IAAIW,EAAKZ,GAAO,KAAO,KAAO,OAAO,OAAW,KAAeA,EAAI,OAAO,QAAQ,GAAKA,EAAI,YAAY,EACvG,GAAIY,GAAM,KACV,KAAIC,EAAO,CAAC,EACRC,EAAK,GACLC,EAAK,GACLC,EAAIC,EACR,GAAI,CACF,IAAKL,EAAKA,EAAG,KAAKZ,CAAG,EAAG,EAAEc,GAAME,EAAKJ,EAAG,KAAK,GAAG,QAC9CC,EAAK,KAAKG,EAAG,KAAK,EACd,EAAAf,GAAKY,EAAK,SAAWZ,IAF4Ba,EAAK,GAE1D,CAEJ,OAASI,EAAK,CACZH,EAAK,GACLE,EAAKC,CACP,QAAE,CACA,GAAI,CACE,CAACJ,GAAMF,EAAG,QAAa,MAAMA,EAAG,OAAU,CAChD,QAAE,CACA,GAAIG,EAAI,MAAME,CAChB,CACF,CACA,OAAOJ,EACT,CACA,SAASX,GAAgBF,EAAK,CAC5B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CACjC,CAIe,SAARmB,IAAgC,CACrC,IAAIC,EAAsBC,GAAmB,SAAS,EACpDC,EAAQF,EAAoB,MAC5BG,EAASH,EAAoB,OAC7BI,EAAUJ,EAAoB,QAC9BK,EAAWL,EAAoB,SACjC,OAAOD,GAAcG,EAAOC,EAAQC,EAASC,CAAQ,CACvD,CAEA,SAASJ,GAAmBK,EAAM,CAChC,IAAIC,EAAwB,MAAM,UAAU,MAAM,KAAKD,CAAI,EACzDE,EAAyB7B,GAAe4B,EAAuB,CAAC,EAChEE,EAAQD,EAAuB,CAAC,EAChCE,EAAQF,EAAuB,CAAC,EAChCG,EAAQH,EAAuB,CAAC,EAChCI,EAAQJ,EAAuB,CAAC,EAChCK,EAAQL,EAAuB,CAAC,EAC9BN,EACAC,EACAC,EACAC,EAIJ,GAAI,OAAOI,GAAU,SAGnB,GAAI,OAAOE,GAAU,SACnBR,EAASQ,EACLE,GACFT,EAAUQ,EACVP,EAAWQ,GAEXR,EAAWO,EAEbV,EAAQY,GAAML,EAAO,CACnB,eAAgBC,EAChB,SAAU,EACZ,EAAGL,CAAQ,MAGR,CACH,GAAI,OAAOK,GAAU,SACnB,MAAM,IAAI,MAAM,gEAAgE,EAElFP,EAASO,EACLE,GACFR,EAAUO,EACVN,EAAWO,GAEXP,EAAWM,EAEbT,EAAQY,GAAML,EAAO,CACnB,SAAU,EACZ,EAAGJ,CAAQ,CACb,SAGOU,GAASN,CAAK,EACrBP,EAAQO,EACRN,EAASO,EACLE,GACFR,EAAUO,EACVN,EAAWO,GAEXP,EAAWM,MAER,OAAM,IAAI,UAAU,oFAAoF,EAE/G,OAAIR,IAAW,gBACbA,EAAS,gBACAA,IAAW,aACpBA,EAAS,YAEJ,CACL,MAAOD,EACP,OAAQC,EACR,QAASC,EACT,SAAUC,CACZ,CACF,CAnIA,IAAAW,GAAAC,EAAA,KAgDAD,KACAE,KACAC,OChDO,SAASC,IAAS,CACvB,OAAOC,EAAqBC,GAAS,SAAS,CAChD,CAJA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCDA,SAASG,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EACjDC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACzD,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CACpC,CACA,OAAOD,CACT,CACA,SAASG,GAAcC,EAAQ,CAC7B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EACpDA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUC,EAAK,CACzDC,GAAgBJ,EAAQG,EAAKD,EAAOC,CAAG,CAAC,CAC1C,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBH,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjK,OAAO,eAAeH,EAAQG,EAAK,OAAO,yBAAyBD,EAAQC,CAAG,CAAC,CACjF,CAAC,CACH,CACA,OAAOH,CACT,CACA,SAASI,GAAgBC,EAAKF,EAAKG,EAAO,CACxC,OAAIH,KAAOE,EACT,OAAO,eAAeA,EAAKF,EAAK,CAC9B,MAAOG,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDD,EAAIF,CAAG,EAAIG,EAEND,CACT,CAEe,SAARE,GAA2CC,EAAMC,EAASC,EAAU,CACzE,OAAOC,GAAMH,EAAMT,GAAcA,GAAc,CAAC,EAAGU,CAAO,EAAG,CAAC,EAAG,CAC/D,GAAI,EACN,CAAC,EAAGC,CAAQ,CACd,CAvCA,IAAAE,GAAAC,EAAA,KAkCAC,OChCe,SAARC,IAA6C,CAClD,IAAIC,EAAsBC,GAAmB,SAAS,EACpDC,EAAOF,EAAoB,KAC3BG,EAAUH,EAAoB,QAC9BI,EAAWJ,EAAoB,SACjC,OAAOD,GAA2BG,EAAMC,EAASC,CAAQ,CAC3D,CARA,IAAAC,GAAAC,EAAA,KAAAD,KACAE,OCDA,SAASC,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EACjDC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACzD,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CACpC,CACA,OAAOD,CACT,CACA,SAASG,GAAcC,EAAQ,CAC7B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAC,EACpDA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUC,EAAK,CACzDC,GAAgBJ,EAAQG,EAAKD,EAAOC,CAAG,CAAC,CAC1C,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBH,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjK,OAAO,eAAeH,EAAQG,EAAK,OAAO,yBAAyBD,EAAQC,CAAG,CAAC,CACjF,CAAC,CACH,CACA,OAAOH,CACT,CACA,SAASI,GAAgBC,EAAKF,EAAKG,EAAO,CACxC,OAAIH,KAAOE,EACT,OAAO,eAAeA,EAAKF,EAAK,CAC9B,MAAOG,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDD,EAAIF,CAAG,EAAIG,EAEND,CACT,CAIe,SAARE,GAAkCC,EAAMC,EAASC,EAAU,CAE5DD,GAAWA,EAAQ,gBAAkB,CAACE,GAAmBF,EAAQ,eAAgBC,CAAQ,IAC3FD,EAAUV,GAAcA,GAAc,CAAC,EAAGU,CAAO,EAAG,CAAC,EAAG,CACtD,eAAgB,MAClB,CAAC,GAGH,GAAI,CACF,OAAOG,GAA0BJ,EAAMC,EAASC,CAAQ,CAC1D,OAASG,EAAO,CAEd,GAAI,EAAAA,aAAiBC,GAEnB,MAAMD,CAEV,CACF,CAtDA,IAAAE,GAAAC,EAAA,KAkCAC,KACAC,KACAC,MClCe,SAARC,IAAoC,CACzC,IAAIC,EAAsBC,GAAmB,SAAS,EACpDC,EAAOF,EAAoB,KAC3BG,EAAUH,EAAoB,QAC9BI,EAAWJ,EAAoB,SACjC,OAAOD,GAAkBG,EAAMC,EAASC,CAAQ,CAClD,CARA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCAe,SAARG,GAA8BC,EAAU,CAC7C,OAAO,IAAIC,EAASD,CAAQ,EAAE,aAAa,CAC7C,CAHA,IAAAE,GAAAC,EAAA,KAAAC,MCAA,IAAAC,GAAAC,EAAA,KAEAC,KAIAC,KAaAC,KACAC,MClBO,SAASC,IAA4B,CAC1C,OAAOC,EAAqBD,GAA4B,SAAS,CACnE,CAJA,IAAAE,GAAAC,EAAA,KAAAC,KACAC,OCCO,SAASC,IAAmB,CACjC,OAAOC,EAAqBD,GAAmB,SAAS,CAC1D,CAJA,IAAAE,GAAAC,EAAA,KAAAC,KACAC,OCCO,SAASC,IAAe,CAC7B,OAAOC,EAAqBD,GAAe,SAAS,CACtD,CAJA,IAAAE,GAAAC,EAAA,KAAAC,KACAC,OCCO,SAASC,IAAwB,CACtC,OAAOC,EAAqBD,GAAwB,SAAS,CAC/D,CAJA,IAAAE,GAAAC,EAAA,KAAAC,KACAC,OCDA,SAASC,GAAeC,EAAKC,EAAG,CAC9B,OAAOC,GAAgBF,CAAG,GAAKG,GAAsBH,EAAKC,CAAC,GAAKG,GAA4BJ,EAAKC,CAAC,GAAKI,GAAiB,CAC1H,CACA,SAASA,IAAmB,CAC1B,MAAM,IAAI,UAAU;AAAA,mFAA2I,CACjK,CACA,SAASD,GAA4BE,EAAGC,EAAQ,CAC9C,GAAKD,EACL,IAAI,OAAOA,GAAM,SAAU,OAAOE,GAAkBF,EAAGC,CAAM,EAC7D,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKH,CAAC,EAAE,MAAM,EAAG,EAAE,EAErD,GADIG,IAAM,UAAYH,EAAE,cAAaG,EAAIH,EAAE,YAAY,MACnDG,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKH,CAAC,EACnD,GAAIG,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,GAAkBF,EAAGC,CAAM,EACjH,CACA,SAASC,GAAkBR,EAAKU,EAAK,EAC/BA,GAAO,MAAQA,EAAMV,EAAI,UAAQU,EAAMV,EAAI,QAC/C,QAASC,EAAI,EAAGU,EAAO,IAAI,MAAMD,CAAG,EAAGT,EAAIS,EAAKT,IAC9CU,EAAKV,CAAC,EAAID,EAAIC,CAAC,EAEjB,OAAOU,CACT,CACA,SAASR,GAAsBH,EAAKC,EAAG,CACrC,IAAIW,EAAKZ,GAAO,KAAO,KAAO,OAAO,OAAW,KAAeA,EAAI,OAAO,QAAQ,GAAKA,EAAI,YAAY,EACvG,GAAIY,GAAM,KACV,KAAIC,EAAO,CAAC,EACRC,EAAK,GACLC,EAAK,GACLC,EAAIC,EACR,GAAI,CACF,IAAKL,EAAKA,EAAG,KAAKZ,CAAG,EAAG,EAAEc,GAAME,EAAKJ,EAAG,KAAK,GAAG,QAC9CC,EAAK,KAAKG,EAAG,KAAK,EACd,EAAAf,GAAKY,EAAK,SAAWZ,IAF4Ba,EAAK,GAE1D,CAEJ,OAASI,EAAK,CACZH,EAAK,GACLE,EAAKC,CACP,QAAE,CACA,GAAI,CACE,CAACJ,GAAMF,EAAG,QAAa,MAAMA,EAAG,OAAU,CAChD,QAAE,CACA,GAAIG,EAAI,MAAME,CAChB,CACF,CACA,OAAOJ,EACT,CACA,SAASX,GAAgBF,EAAK,CAC5B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,CACjC,CAkBO,SAASmB,GAAmBC,EAAM,CACvC,IAAIC,EAAwB,MAAM,UAAU,MAAM,KAAKD,CAAI,EACzDE,EAAyBvB,GAAesB,EAAuB,CAAC,EAChEE,EAAQD,EAAuB,CAAC,EAChCE,EAAQF,EAAuB,CAAC,EAChCG,EAAQH,EAAuB,CAAC,EAChCI,EAAQJ,EAAuB,CAAC,EAC9BK,EACAC,EAAU,CAAC,EACXC,EAGJ,GAAI,OAAON,GAAU,SAIdO,GAASN,CAAK,GAuBbC,GACFG,EAAUJ,EACVK,EAAWJ,GAEXI,EAAWL,EAOTO,GAAoBR,CAAK,EAC3BI,EAAQK,GAAMT,EAAO,OAAWM,CAAQ,EAExCF,EAAQ,CAAC,IApCPD,GACFE,EAAUH,EACVI,EAAWH,GAEXG,EAAWJ,EAOTM,GAAoBR,CAAK,EAC3BI,EAAQK,GAAMT,EAAO,CACnB,eAAgBC,CAClB,EAAGK,CAAQ,EAEXF,EAAQ,CAAC,WAyBNG,GAASP,CAAK,EACrBI,EAAQJ,EACJE,GACFG,EAAUJ,EACVK,EAAWJ,GAEXI,EAAWL,MAER,OAAM,IAAI,UAAU,oFAAoF,EAC/G,MAAO,CACL,MAAOG,EACP,QAASC,EACT,SAAUC,CACZ,CACF,CAzIA,IAAAI,GAAAC,EAAA,KAgDAC,KAEAC,KACAC,OChDe,SAARC,IAAiC,CACtC,IAAIC,EAAsBC,GAAmB,SAAS,EACpDC,EAAQF,EAAoB,MAC5BG,EAAUH,EAAoB,QAC9BI,EAAWJ,EAAoB,SAEjC,OAAKE,EAAM,MAGJH,GAAeG,EAAOC,EAASC,CAAQ,EAFrC,EAGX,CAbA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,OCGO,SAASC,IAAgB,CAC9B,OAAOC,EAAqBD,GAAgB,SAAS,CACvD,CANA,IAAAE,GAAAC,EAAA,KAEAC,KACAF,OCHA,IAAAG,GAAAC,EAAA,KACAC,KAGAC,KAcAC,KAEAC,KAQAC,KACAC,KAGAC","names":["MatAutocomplete_ng_template_0_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵprojection","ɵɵelementEnd","formFieldId_r3","ɵɵclassMap","ɵɵclassProp","ɵɵproperty","ɵɵattribute","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","overlay","_c0","_c1","panelAnimation","MatAutocompleteSelectedEvent","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","MatAutocomplete","MatAutocompleteOrigin","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MatAutocompleteTrigger","MatAutocompleteModule","init_autocomplete","__esmMin","init_core","init_scrolling","init_overlay","init_a11y","init_platform","init_animations","init_esm","init_bidi","init_keycodes","init_layout","init_portal","init_common","init_forms","init_form_field","init_operators","trigger","state","style","transition","group","animate","source","option","InjectionToken","inject","ChangeDetectorRef","ElementRef","Subscription","EventEmitter","value","_IdGenerator","platform","Platform","ActiveDescendantKeyManager","index","scrollTop","event","labelId","labelExpression","__ngFactoryType__","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","MatOption","MAT_OPTGROUP","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","TemplateRef","booleanAttribute","ɵɵProvidersFeature","MAT_OPTION_PARENT_COMPONENT","ɵɵInputTransformsFeature","ɵɵprojectionDef","ɵɵtemplate","ɵɵdefineDirective","NG_VALUE_ACCESSOR","forwardRef","Overlay","EnvironmentInjector","ViewContainerRef","NgZone","Directionality","MAT_FORM_FIELD","DOCUMENT","ViewportRuler","Renderer2","Subject","BreakpointObserver","changes","removeAriaReferencedId","merge","filter","of","map","MatOptionSelectionChange","defer","options","startWith","switchMap","Observable","observer","listener","clickTarget","_getEventTarget","formField","customOrigin","cleanups","current","fn","isDisabled","keyCode","hasModifier","hasModifierKey","prevActiveItem","isArrowKey","target","selectedOption","display","valueOnAttach","shouldAnimate","initialRender","subscriber","afterNextRender","optionChanges","tap","delay","wasOpen","take","autocomplete","toDisplay","panel","toSelect","skip","emitEvent","panelId","addAriaReferencedId","overlayRef","TemplatePortal","Breakpoints","result","OverlayConfig","strategy","positionStrategy","belowPositions","panelClass","abovePositions","positions","firstEnabledOptionIndex","element","labelCount","_countGroupLabelsBeforeOption","newScrollPosition","_getOptionScrollPosition","modal","ɵɵNgOnChangesFeature","ɵɵdefineNgModule","ɵɵdefineInjector","OverlayModule","MatOptionModule","MatCommonModule","CdkScrollableModule","marked_esm_exports","__export","_Hooks","_Lexer","Marked","_Parser","_Renderer","_TextRenderer","_Tokenizer","_defaults","_getDefaults","lexer","marked","options","parse","parseInline","parser","setOptions","use","walkTokens","changeDefaults","newDefaults","escape$1","html","encode","escapeTest","escapeReplace","getEscapeReplacement","escapeTestNoEncode","escapeReplaceNoEncode","unescape","unescapeTest","_","n","edit","regex","opt","source","obj","name","val","valSource","caret","cleanUrl","href","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","i","outputLink","cap","link","raw","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","src","markedInstance","escapeReplacements","noopTest","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","list","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","tag","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","init_marked_esm","__esmMin","ch","trimmed","top","tokens","bull","isordered","itemRegex","itemContents","endsWithBlankLine","endEarly","line","t","nextLine","indent","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","spacers","hasMultipleLineBreaks","headers","aligns","rows","item","align","header","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","__spreadProps","__spreadValues","__Lexer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","code","infostring","lang","quote","body","ordered","start","type","startatt","task","checked","content","flags","cleanHref","out","__Parser","genericToken","ret","headingToken","codeToken","tableToken","j","k","blockquoteToken","listToken","loose","itemBody","checkbox","htmlToken","paragraphToken","textToken","renderer","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","markdown","#parseMarkdown","args","callback","values","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","packWalktokens","origOpt","throwError","#onError","e","silent","async","msg","provideMarkdown","markdownModuleConfig","MarkdownService","MARKED_EXTENSIONS","SECURITY_CONTEXT","SecurityContext","_c0","BUTTON_TEXT_COPY","BUTTON_TEXT_COPIED","ClipboardButtonComponent","CLIPBOARD_OPTIONS","PrismPlugin","MARKED_OPTIONS","errorJoyPixelsNotLoaded","errorKatexNotLoaded","errorMermaidNotLoaded","errorClipboardNotLoaded","errorClipboardViewContainerRequired","errorSrcWithoutHttpClient","MarkdownComponent","MarkdownModule","MermaidAPI","init_ngx_markdown","__esmMin","init_common","init_core","init_esm","init_operators","init_marked_esm","init_http","init_platform_browser","Subject","switchMap","merge","of","timer","mapTo","distinctUntilChanged","shareReplay","startWith","map","copied","__ngFactoryType__","ɵɵdefineComponent","rf","ctx","ɵɵelementStart","ɵɵpipe","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵclassProp","ɵɵpipeBind1","ɵɵadvance","ɵɵtextInterpolate","AsyncPipe","InjectionToken","value","__spreadValues","clipboardOptions","extensions","options","platform","securityContext","http","sanitizer","_Renderer","markdown","parseOptions","decodeHtml","inline","emoji","mermaid","disableSanitizer","markedOptions","renderer","trimmed","decoded","emojified","marked","element","viewContainerRef","clipboard","katex","katexOptions","mermaidOptions","src","isPlatformBrowser","noLanguageElements","x","html","textarea","extendedRenderer","defaultCode","code","language","isEscaped","urlProtocolIndex","urlWithoutProtocol","lastSlashIndex","lastUrlSegment","lastDotIndex","extension","buttonComponent","buttonTemplate","preElements","i","preElement","preWrapperElement","toolbarWrapperElement","embeddedViewRef","componentRef","clipboardInstance","node","mermaidElements","indentStart","line","lineIdentStart","ɵɵinject","PLATFORM_ID","HttpClient","DomSanitizer","ɵɵdefineInjectable","markdownService","EventEmitter","takeUntil","__async","parsedOptions","renderOptions","parsed","error","plugin","classes","option","attributeValue","attributeName","upperChars","str","n","ɵɵdirectiveInject","ElementRef","ViewContainerRef","ɵɵNgOnChangesFeature","ɵɵprojectionDef","ɵɵprojection","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","SecurityLevel","Theme","LogLevel","SentenceCasePipe","init_sentence_case_pipe","__esmMin","constructor","titleCase","transform","sentence","ignoredWords","words","split","map","word","index","includes","replace","toLocaleLowerCase","join","ɵɵdirectiveInject","TitleCasePipe","pure","GalaxyAddressPipe","init_address_pipe","__esmMin","transform","address","trim","address2","city","state","country","zip","filter","v","join","pure","standalone","isGalaxyAsyncStatus","value","statusKey","Object","values","Status","includes","status","error","errorKey","Error","valueKey","implicitKey","loaded","defaultError","GalaxyAsyncStatusPipe","init_async_status_pipe","__esmMin","init_esm","transform","val","pipe","map","keys","length","Array","isArray","empty","$implicit","defaultIfEmpty","startWith","loading","catchError","errorText","message","console","log","name","of","pure","standalone","require_map","__commonJSMin","exports","module","require_currency_symbol_map","__commonJSMin","exports","module","currencySymbolMap","currencyCode","code","require_map","__commonJSMin","exports","module","map","require_locale_currency","__commonJSMin","exports","map","getCountryCode","localeString","components","locale","countryCode","currencyCode","locales","formatDistanceLocale","formatDistance","formatDistance_default","init_formatDistance","__esmMin","token","count","options","pluralResult","tokenValue","suffixExist","comparison","timeResult","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","accusativeWeekdays","formatRelativeLocale","formatRelative","formatRelative_default","init_formatRelative","__esmMin","date","day","token","format","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","localize","localize_default","init_localize","__esmMin","init_buildLocalizeFn","dirtyNumber","_options","number","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match_default","init_match","__esmMin","init_buildMatchFn","init_buildMatchPatternFn","buildMatchPatternFn","value","buildMatchFn","index","locale","cs_default","init_cs","__esmMin","init_formatDistance","init_formatLong","init_formatRelative","init_localize","init_match","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","formatDistanceLocale","formatDistance","formatDistance_default","init_formatDistance","__esmMin","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","formatRelativeLocale","formatRelative","formatRelative_default","init_formatRelative","__esmMin","token","_date","_baseDate","_options","eraValues","quarterValues","monthValues","formattingMonthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","localize","localize_default","init_localize","__esmMin","init_buildLocalizeFn","dirtyNumber","number","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match_default","init_match","__esmMin","init_buildMatchFn","init_buildMatchPatternFn","buildMatchPatternFn","value","buildMatchFn","index","locale","de_default","init_de","__esmMin","init_formatDistance","init_formatLong","init_formatRelative","init_localize","init_match","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","formatDistanceLocale","formatDistance","formatDistance_default","init_formatDistance","__esmMin","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","locale","en_CA_default","init_en_CA","__esmMin","init_formatRelative","init_localize","init_match","init_formatDistance","init_formatLong","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","formatDistanceLocale","formatDistance","formatDistance_default","init_formatDistance","__esmMin","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","formatRelativeLocale","formatRelativeLocalePlural","formatRelative","formatRelative_default","init_formatRelative","__esmMin","token","date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","localize","localize_default","init_localize","__esmMin","init_buildLocalizeFn","dirtyNumber","_options","number","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match_default","init_match","__esmMin","init_buildMatchPatternFn","init_buildMatchFn","buildMatchPatternFn","value","buildMatchFn","index","locale","es_default","init_es","__esmMin","init_formatDistance","init_formatLong","init_formatRelative","init_localize","init_match","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","formatDistanceLocale","formatDistance","formatDistance_default","init_formatDistance","__esmMin","token","count","options","result","form","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","formatRelativeLocale","formatRelative","formatRelative_default","init_formatRelative","__esmMin","token","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","localize","localize_default","init_localize","__esmMin","init_buildLocalizeFn","dirtyNumber","options","number","unit","feminineUnits","suffix","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match_default","init_match","__esmMin","init_buildMatchFn","init_buildMatchPatternFn","buildMatchPatternFn","value","buildMatchFn","index","locale","fr_default","init_fr","__esmMin","init_formatDistance","init_formatLong","init_formatRelative","init_localize","init_match","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","locale","fr_CA_default","init_fr_CA","__esmMin","init_formatDistance","init_formatRelative","init_localize","init_match","init_formatLong","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","formatDistanceLocale","formatDistance","formatDistance_default","init_formatDistance","__esmMin","token","count","options","result","tokenValue","dateFormats","timeFormats","dateTimeFormats","formatLong","formatLong_default","init_formatLong","__esmMin","init_buildFormatLongFn","buildFormatLongFn","formatRelativeLocale","formatRelative","formatRelative_default","init_formatRelative","__esmMin","token","_date","_baseDate","_options","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","localize","localize_default","init_localize","__esmMin","init_buildLocalizeFn","dirtyNumber","_options","number","buildLocalizeFn","quarter","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","match_default","init_match","__esmMin","init_buildMatchFn","init_buildMatchPatternFn","buildMatchPatternFn","value","buildMatchFn","index","locale","nl_default","init_nl","__esmMin","init_formatDistance","init_formatLong","init_formatRelative","init_localize","init_match","formatDistance_default","formatLong_default","formatRelative_default","localize_default","match_default","init_locale","__esmMin","init_cs","init_de","init_en_CA","init_en_US","init_es","init_fr","init_fr_CA","init_nl","getLocale","languageFromLocalStorage","getLanguageFromLocalStorage","locale","getBrowserCultureLang","fr","frCA","enCA","cs","nl","de","es","enUS","getLocaleCode","init_locale_utils","__esmMin","init_locale","init_browser_locale","code","init_public_api","__esmMin","init_locale_utils","init_locale","__esmMin","init_public_api","import_currency_symbol_map","import_locale_currency","getCurrencySymbol","init_currency_utils","__esmMin","code","getSymbolFromCurrency","init_public_api","__esmMin","init_currency_utils","init_currency_utils","__esmMin","init_public_api","GalaxyCurrencyPipe","init_currency_pipe","__esmMin","init_currency_utils","init_locale","transform","value","currencyCode","locale","getLocaleCode","currencyString","Intl","NumberFormat","style","currency","currencyDisplay","format","currencySymbol","getCurrencySymbol","includes","replace","pure","standalone","DateDuration","DateFormat","init_interface","__esmMin","normalizeDateFunc","value","dateFn","args","date","Date","addMinutes","getUTCTime","getTimezoneOffset","subtractDays","amount","subDays","subtractMonths","subMonths","calculateStartDate","endDate","dur","unit","DateDuration","days","formatDate","dateFormat","DateFormat","mediumLocalDate","locale","getLocale","format","formatUTCDate","formatUTCDateRange","dateRange","start","end","getTimezoneOffsetInMilliseconds","MS_PER_MINUTE","parseISO","toISOString","slice","getUTCStartOfDay","startOfDay","getUTCEndOfDay","endOfDay","getStartOf","options","startOfMonth","startOfWeek","getUTCEndOfMonth","endOfMonth","differenceInDays","startDate","differenceInCalendarDays","differenceInMonths","diffInMonths","localizedWeekOrder","weekStart","localizedWeekStart","map","index","localizedWeekday","parts","code","match","region","language","regionSat","regionSun","languageSat","languageSun","includes","init_date_utils","__esmMin","init_esm","init_locale","init_interface","init_public_api","__esmMin","init_interface","init_date_utils","init_date_utils","__esmMin","init_public_api","GalaxyDatePipe","init_date_pipe","__esmMin","init_date_utils","transform","value","dateFormat","locale","date","Date","formatDate","pure","standalone","ordinal","value","num","Number","isNaN","lastDigit","init_ordinal_utils","__esmMin","init_public_api","__esmMin","init_ordinal_utils","init_ordinal_utils","__esmMin","init_public_api","GalaxyOrdinalPipe","init_ordinal_pipe","__esmMin","init_ordinal_utils","transform","value","excludeValueInResponse","ordinal","pure","standalone","GalaxyITrustThisHtmlPipe","init_i_trust_this_html_pipe","__esmMin","constructor","sanitizer","transform","html","bypassSecurityTrustHtml","ɵɵdirectiveInject","DomSanitizer","pure","standalone","version","init_version","__esmMin","isUndefined","value","isBoolean","defaults","dest","src","prop","ellipsis","str","truncateLen","ellipsisChars","ellipsisLength","remove","arr","item","i","removeWithPredicate","fn","assertNever","theValue","init_utils","__esmMin","letterRe","digitRe","whitespaceRe","quoteRe","controlCharsRe","alphaCharsStr","emojiStr","marksStr","alphaCharsAndMarksStr","decimalNumbersStr","alphaNumericCharsRe","alphaNumericAndMarksCharsStr","alphaNumericAndMarksRe","init_regex_lib","__esmMin","HtmlTag","init_html_tag","__esmMin","init_regex_lib","cfg","tagName","attrName","attrValue","tagAttrs","attrs","cssClass","classAttr","classes","whitespaceRe","newClasses","newClass","removeClasses","removeClass","idx","html","attrsStr","attrsArr","prop","truncateSmart","url","truncateLen","ellipsisChars","ellipsisLengthBeforeParsing","ellipsisLength","parse_url","urlObj","urlSub","match","buildUrl","buildSegment","segment","remainingAvailableLength","remainingAvailableLengthHalf","startOffset","endOffset","end","availableLength","matchQuery","str","pathAndQuery","fragment","remainingAvailableLength2","scheme","init_truncate_smart","__esmMin","truncateMiddle","url","truncateLen","ellipsisChars","ellipsisLengthBeforeParsing","ellipsisLength","availableLength","end","init_truncate_middle","__esmMin","truncateEnd","anchorText","truncateLen","ellipsisChars","ellipsis","init_truncate_end","__esmMin","init_utils","AnchorTagBuilder","init_anchor_tag_builder","__esmMin","init_html_tag","init_truncate_smart","init_truncate_middle","init_truncate_end","cfg","match","HtmlTag","attrs","cssClass","className","returnClasses","cssClassSuffixes","i","len","anchorText","truncate","truncateLength","truncateLocation","truncateSmart","truncateMiddle","truncateEnd","AbstractMatch","init_abstract_match","__esmMin","cfg","offset","tldRegexStr","tldRegex","init_tld_regex","__esmMin","isSchemeStartChar","char","letterRe","isSchemeChar","digitRe","isDomainLabelStartChar","alphaNumericAndMarksRe","isDomainLabelChar","isPathChar","urlSuffixAllowedSpecialCharsRe","urlSuffixNotAllowedAsLastCharRe","isUrlSuffixStartChar","urlSuffixStartCharsRe","isKnownTld","tld","tldRegex","isValidSchemeUrl","url","invalidSchemeRe","schemeMatch","schemeUrlRe","isAuthorityMatch","host","isValidTldMatch","tldUrlHostMatch","tldUrlHostRe","hostLabels","isValidIpV4Address","ipV4Part","ipV4PartRe","ipV4Re","httpSchemeRe","httpSchemePrefixRe","urlSuffixedCharsNotAllowedAtEndRe","init_uri_utils","__esmMin","init_regex_lib","init_tld_regex","stripSchemePrefix","url","httpSchemePrefixRe","stripWwwPrefix","wwwPrefixRegex","stripProtocolRelativePrefix","text","protocolRelativeRegex","removeTrailingSlash","anchorText","removePercentEncoding","preProcessedEntityAnchorText","UrlMatch","init_url_match","__esmMin","init_tslib_es6","init_abstract_match","init_uri_utils","_super","__extends","cfg","_this","AbstractMatch","isEmailLocalPartStartChar","char","alphaNumericAndMarksRe","isEmailLocalPartChar","emailLocalPartCharRegex","isValidEmail","emailAddress","emailAddressTld","isKnownTld","mailtoSchemePrefixRe","init_email_utils","__esmMin","init_regex_lib","init_uri_utils","alphaNumericAndMarksCharsStr","EmailMatch","init_email_match","__esmMin","init_tslib_es6","init_abstract_match","_super","__extends","cfg","_this","AbstractMatch","isHashtagTextChar","char","alphaNumericAndMarksRe","isValidHashtag","hashtag","hashtagServices","init_hashtag_utils","__esmMin","init_regex_lib","HashtagMatch","init_hashtag_match","__esmMin","init_tslib_es6","init_utils","init_abstract_match","_super","__extends","cfg","_this","serviceName","hashtag","assertNever","cssClassSuffixes","AbstractMatch","isMentionTextChar","char","mentionTextCharRe","isValidMention","mention","serviceName","re","mentionRegexes","mentionServices","init_mention_utils","__esmMin","MentionMatch","init_mention_match","__esmMin","init_tslib_es6","init_abstract_match","_super","__extends","cfg","_this","cssClassSuffixes","serviceName","AbstractMatch","isPhoneNumberSeparatorChar","char","separatorCharRe","isPhoneNumberControlChar","controlCharRe","isValidPhoneNumber","phoneNumberText","hasDelimiters","hasDelimCharsRe","validPhoneNumberRe","mostPhoneNumbers","japanesePhoneRe","init_phone_number_utils","__esmMin","PhoneMatch","init_phone_match","__esmMin","init_tslib_es6","init_abstract_match","_super","__extends","cfg","_this","AbstractMatch","parseMatches","text","args","tagBuilder","stripPrefix","stripTrailingSlash","decodePercentEncoding","hashtagServiceName","mentionServiceName","matches","textLen","stateMachines","charIdx","char","stateNoMatch","stateIdx","stateMachine","stateProtocolRelativeSlash1","stateProtocolRelativeSlash2","stateSchemeChar","stateSchemeHyphen","stateSchemeColon","stateSchemeSlash1","stateSchemeSlash2","stateDomainLabelChar","stateDomainHyphen","stateDomainDot","stateIpV4Digit","stateIPv4Dot","statePortColon","statePortNumber","statePath","stateEmailMailto_M","stateEmailMailto_A","stateEmailMailto_I","stateEmailMailto_L","stateEmailMailto_T","stateEmailMailto_O","stateEmailMailtoColon","stateEmailLocalPart","stateEmailLocalPartDot","stateEmailAtSign","stateEmailDomainChar","stateEmailDomainHyphen","stateEmailDomainDot","stateHashtagHashChar","stateHashtagTextChar","stateMentionAtChar","stateMentionTextChar","statePhoneNumberOpenParen","statePhoneNumberAreaCodeDigit1","statePhoneNumberAreaCodeDigit2","statePhoneNumberAreaCodeDigit3","statePhoneNumberCloseParen","statePhoneNumberPlus","statePhoneNumberDigit","statePhoneNumberSeparator","statePhoneNumberControlChar","statePhoneNumberPoundChar","assertNever","i","captureMatchIfValidAndRemove","createHashtagStateMachine","createMentionStateMachine","createTldUrlStateMachine","createPhoneNumberStateMachine","digitRe","createIpV4UrlStateMachine","isEmailLocalPartStartChar","startState","createEmailStateMachine","isSchemeStartChar","createSchemeUrlStateMachine","alphaNumericAndMarksRe","isSchemeChar","remove","isDomainLabelStartChar","isPathChar","isUrlSuffixStartChar","isDomainLabelChar","isEmailLocalPartChar","isHashtagTextChar","isMentionTextChar","isPhoneNumberSeparatorChar","isPhoneNumberControlChar","startIdx","matchedText","excludeUnbalancedTrailingBracesAndPunctuation","charBeforeUrlMatch","urlMatchType","httpSchemeMatch","httpSchemeRe","isValidSchemeUrl","isValidTldMatch","isValidIpV4Address","UrlMatch","isValidEmail","EmailMatch","mailtoSchemePrefixRe","isValidHashtag","HashtagMatch","isValidMention","MentionMatch","isValidPhoneNumber","cleanNumber","PhoneMatch","braceCounts","char_1","openBraceRe","closeBraceRe","oppositeBrace","endIdx","oppositeBraceChar","urlSuffixedCharsNotAllowedAtEndRe","state","init_parse_matches","__esmMin","init_regex_lib","init_url_match","init_utils","init_uri_utils","init_email_utils","init_email_match","init_hashtag_utils","init_hashtag_match","init_mention_utils","init_mention_match","init_phone_number_utils","init_phone_match","parseHtml","html","_a","onOpenTag","onCloseTag","onText","onComment","onDoctype","noCurrentTag","CurrentTag","charIdx","len","state","currentDataIdx","currentTag","char","stateData","stateTagOpen","stateEndTagOpen","stateTagName","stateBeforeAttributeName","stateAttributeName","stateAfterAttributeName","stateBeforeAttributeValue","stateAttributeValueDoubleQuoted","stateAttributeValueSingleQuoted","stateAttributeValueUnquoted","stateAfterAttributeValueQuoted","stateSelfClosingStartTag","stateMarkupDeclarationOpen","stateCommentStart","stateCommentStartDash","stateComment","stateCommentEndDash","stateCommentEnd","stateCommentEndBang","stateDoctype","assertNever","emitText","startNewTag","__assign","letterRe","whitespaceRe","captureTagName","emitTagAndPreviousTextNode","digitRe","resetToDataState","quoteRe","controlCharsRe","reconsumeCurrentCharacter","textBeforeTag","text","startIdx","init_parse_html","__esmMin","init_tslib_es6","init_regex_lib","init_utils","cfg","normalizeUrlsCfg","urls","isBoolean","normalizeStripPrefixCfg","stripPrefix","normalizeTruncateCfg","truncate","defaults","Autolinker","autolinker_default","init_autolinker","__esmMin","init_version","init_utils","init_anchor_tag_builder","init_html_tag","init_parse_matches","init_parse_html","init_mention_utils","init_hashtag_utils","cfg","mention","mentionServices","hashtag","hashtagServices","textOrHtml","options","autolinker","_this","skipTagNames","skipTagsStackCount","matches","parseHtml","tagName","text","offset","htmlCharacterEntitiesRegex","textSplit","currentOffset_1","splitText","i","textNodeMatches","_offset","a","b","match","matchedTextLength","endIdx","removeIdx","removeWithPredicate","m","parseMatches","numTextMatches","newHtml","lastIndex","len","replaceFnResult","HtmlTag","anchorTag","tagBuilder","AnchorTagBuilder","version","init_match","__esmMin","init_match","__esmMin","init_email_match","init_hashtag_match","init_abstract_match","init_mention_match","init_phone_match","init_url_match","init_parser","__esmMin","init_parse_matches","es2015_default","init_es2015","__esmMin","init_autolinker","init_anchor_tag_builder","init_html_tag","init_match","init_parser","autolinker_default","cleanLinks","linked","doubleLink","mangledLink","singleLink","reduce","acc","replacer","replace","regex","LinkyPipe","init_linky_pipe","__esmMin","init_es2015","transform","value","options","Autolinker","link","pure","formatStatsNum","value","truncate","denominator","suffix","truncated","Math","round","toFixed","toLocaleString","FormatStatPipe","init_format_stat_pipe","__esmMin","transform","pure","TruncateUrlPipe","removeParam","shortenPath","init_truncate_url_pipe","__esmMin","transform","value","replace","regex","pure","GlxyMarkdownPipe","init_markdown_pipe","__esmMin","init_core","init_ngx_markdown","constructor","markdownService","inject","MarkdownService","transform","message","parse","pure","GalaxyPipesModule","init_pipes_module","__esmMin","init_common","init_sentence_case_pipe","init_address_pipe","init_currency_pipe","init_date_pipe","init_ordinal_pipe","init_linky_pipe","init_format_stat_pipe","init_markdown_pipe","TitleCasePipe","imports","CommonModule","init_public_api","__esmMin","init_pipes_module","init_pipes","__esmMin","init_public_api","metadata_min_json_default","init_metadata_min_json","__esmMin","withMetadataArgument","func","_arguments","args","metadata_min_json_default","init_withMetadataArgument","__esmMin","init_metadata_min_json","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS","init_constants","__esmMin","_typeof","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_classCallCheck","instance","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","result","NewTarget","_possibleConstructorReturn","self","call","_assertThisInitialized","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","Parent","args","a","fn","o","p","ParseError","init_ParseError","__esmMin","_Error","_super","code","_this","semver_compare_default","a","b","pa","pb","na","nb","init_semver_compare","__esmMin","isObject","object","objectConstructor","init_isObject","__esmMin","_typeof","obj","_classCallCheck","instance","Constructor","_defineProperties","target","props","i","descriptor","_createClass","protoProps","staticProps","getType","types","type","validateMetadata","metadata","isObject","typeOf","getCountryCallingCode","country","Metadata","isSupportedCountry","setVersion","version","semver_compare_default","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","NumberingPlan","Format","FIRST_GROUP_ONLY_PREFIX_PATTERN","Type","init_metadata","__esmMin","init_semver_compare","init_isObject","_","countryCode","callingCode","countryCodes","_type","globalMetadataObject","_this","formats","_type2","format","createExtensionPattern","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","init_createExtensionPattern","__esmMin","init_constants","maxLength","VALID_DIGITS","isViablePhoneNumber","number","MIN_LENGTH_FOR_NSN","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumberStart","VALID_PHONE_NUMBER_START_REG_EXP","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_WITH_EXTENSION","init_isViablePhoneNumber","__esmMin","init_constants","init_createExtensionPattern","VALID_DIGITS","PLUS_CHARS","VALID_PUNCTUATION","createExtensionPattern","extractExtension","number","start","EXTN_PATTERN","numberWithoutExtension","matches","init_extractExtension","__esmMin","init_createExtensionPattern","createExtensionPattern","parseDigit","character","DIGITS","init_parseDigits","__esmMin","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","n","arr","len","arr2","parseIncompletePhoneNumber","string","result","_iterator","_step","character","parsePhoneNumberCharacter","prevParsedCharacters","emitEvent","parseDigit","init_parseIncompletePhoneNumber","__esmMin","init_parseDigits","init_getCountryCallingCode","__esmMin","init_metadata","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","n","arr","len","arr2","mergeArrays","a","b","merged","_iterator","_step","element","init_mergeArrays","__esmMin","checkNumberLength","nationalNumber","metadata","checkNumberLengthForType","type","type_info","possible_lengths","mobile_type","mergeArrays","actual_length","minimum_length","init_checkNumberLength","__esmMin","init_mergeArrays","isPossiblePhoneNumber","input","options","metadata","Metadata","isPossibleNumber","nationalNumber","checkNumberLength","init_isPossible","__esmMin","init_metadata","init_checkNumberLength","matchesEntirely","text","regular_expression","init_matchesEntirely","__esmMin","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","n","arr","len","arr2","getNumberType","input","options","metadata","Metadata","nationalNumber","matchesEntirely","isNumberTypeEqualTo","_iterator","NON_FIXED_LINE_PHONE_TYPES","_step","type","init_getNumberType","__esmMin","init_metadata","init_matchesEntirely","isValidNumber","input","options","metadata","Metadata","getNumberType","nationalNumber","matchesEntirely","init_isValid","__esmMin","init_metadata","init_matchesEntirely","init_getNumberType","getPossibleCountriesForNumber","callingCode","nationalNumber","metadata","_metadata","Metadata","possibleCountries","country","couldNationalNumberBelongToCountry","init_getPossibleCountriesForNumber","__esmMin","init_metadata","applyInternationalSeparatorStyle","formattedNumber","VALID_PUNCTUATION","init_applyInternationalSeparatorStyle","__esmMin","init_constants","formatNationalNumberUsingFormat","number","format","_ref","useInternationalFormat","withNationalPrefix","carrierCode","metadata","formattedNumber","FIRST_GROUP_PATTERN","applyInternationalSeparatorStyle","init_formatNationalNumberUsingFormat","__esmMin","init_applyInternationalSeparatorStyle","getIddPrefix","country","callingCode","metadata","countryMetadata","Metadata","SINGLE_IDD_PREFIX_REG_EXP","init_getIddPrefix","__esmMin","init_metadata","formatRFC3966","_ref","number","ext","init_RFC3966","__esmMin","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","n","arr","len","arr2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","obj","value","formatNumber","input","format","options","metadata","DEFAULT_OPTIONS","Metadata","countryCallingCode","nationalNumber","number","formatNationalNumber","addExtension","formatRFC3966","formattedNumber","formatIDD","carrierCode","formatAs","chooseFormatForNumber","formatNationalNumberUsingFormat","availableFormats","nationalNnumber","_iterator","_step","lastLeadingDigitsPattern","matchesEntirely","ext","formatExtension","fromCountry","fromCountryCallingCode","getCountryCallingCode","iddPrefix","getIddPrefix","init_format","__esmMin","init_matchesEntirely","init_formatNationalNumberUsingFormat","init_metadata","init_getIddPrefix","init_RFC3966","extension","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","getCountryAndCountryCallingCode","countryOrCountryCallingCode","metadataJson","country","countryCallingCode","metadata","Metadata","isCountryCode","USE_NON_GEOGRAPHIC_COUNTRY_CODE","PhoneNumber","init_PhoneNumber","__esmMin","init_metadata","init_isPossible","init_isValid","init_getNumberType","init_getPossibleCountriesForNumber","init_format","nationalNumber","_getCountryAndCountry","ext","getPossibleCountriesForNumber","isPossiblePhoneNumber","isValidNumber","phoneNumber","getNumberType","_format","options","formatNumber","stripIddPrefix","number","country","callingCode","metadata","countryMetadata","Metadata","IDDPrefixPattern","matchedGroups","CAPTURING_DIGIT_PATTERN","init_stripIddPrefix","__esmMin","init_metadata","init_constants","VALID_DIGITS","extractNationalNumberFromPossiblyIncompleteNumber","number","metadata","prefixPattern","prefixMatch","nationalNumber","carrierCode","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","nationalPrefix","possiblePositionOfTheFirstCapturedGroup","possibleNationalPrefix","init_extractNationalNumberFromPossiblyIncompleteNumber","__esmMin","extractNationalNumber","number","metadata","_extractNationalNumbe","extractNationalNumberFromPossiblyIncompleteNumber","carrierCode","nationalNumber","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","matchesEntirely","checkNumberLength","init_extractNationalNumber","__esmMin","init_extractNationalNumberFromPossiblyIncompleteNumber","init_matchesEntirely","init_checkNumberLength","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","number","country","callingCode","metadata","countryCallingCode","getCountryCallingCode","Metadata","possibleShorterNumber","_extractNationalNumbe","extractNationalNumber","possibleShorterNationalNumber","_extractNationalNumbe2","nationalNumber","matchesEntirely","checkNumberLength","init_extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","__esmMin","init_metadata","init_matchesEntirely","init_extractNationalNumber","init_checkNumberLength","init_getCountryCallingCode","extractCountryCallingCode","number","country","callingCode","metadata","isNumberWithIddPrefix","numberWithoutIDD","stripIddPrefix","_extractCountryCallin","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","countryCallingCode","shorterNumber","Metadata","i","MAX_LENGTH_COUNTRY_CODE","_countryCallingCode","init_extractCountryCallingCode","__esmMin","init_stripIddPrefix","init_extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","init_metadata","init_constants","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","n","arr","len","arr2","getCountryByNationalNumber","nationalPhoneNumber","_ref","countries","defaultCountry","metadata","Metadata","_iterator","_step","country","getNumberType","init_getCountryByNationalNumber","__esmMin","init_metadata","init_getNumberType","getCountryByCallingCode","callingCode","_ref","nationalPhoneNumber","defaultCountry","metadata","USE_NON_GEOGRAPHIC_COUNTRY_CODE","possibleCountries","getCountryByNationalNumber","init_getCountryByCallingCode","__esmMin","init_getCountryByNationalNumber","extractPhoneContext","numberToExtractFrom","indexOfPhoneContext","RFC3966_PHONE_CONTEXT_","phoneContextStart","phoneContextEnd","isPhoneContextValid","phoneContext","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RFC3966_DOMAINNAME_PATTERN_","PLUS_SIGN","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_PREFIX_","RFC3966_ISDN_SUBADDRESS_","init_extractPhoneContext","__esmMin","init_constants","VALID_DIGITS","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","_ref","extractFormattedPhoneNumber","phoneContext","extractPhoneContext","isPhoneContextValid","ParseError","phoneNumberString","PLUS_SIGN","indexOfRfc3966Prefix","RFC3966_PREFIX_","indexOfNationalNumber","indexOfPhoneContext","RFC3966_PHONE_CONTEXT_","indexOfIsdn","RFC3966_ISDN_SUBADDRESS_","init_extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","__esmMin","init_extractPhoneContext","init_ParseError","parse","text","options","metadata","Metadata","ParseError","_parseInput","parseInput","formattedPhoneNumber","ext","error","_parsePhoneNumber","parsePhoneNumber","country","nationalNumber","countryCallingCode","countryCallingCodeSource","carrierCode","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","phoneNumber","PhoneNumber","valid","matchesEntirely","isPossibleNumber","result","_extractFormattedPhoneNumber","extract","throwOnError","MAX_INPUT_STRING_LENGTH","startsAt","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","v2","number","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","isViablePhoneNumber","isViablePhoneNumberStart","withExtensionStripped","extractExtension","defaultCountry","defaultCallingCode","_extractCountryCallin","extractCountryCallingCode","parseIncompletePhoneNumber","USE_NON_GEOGRAPHIC_COUNTRY_CODE","getCountryCallingCode","_extractNationalNumbe","extractNationalNumber","exactCountry","getCountryByCallingCode","init_parse","__esmMin","init_constants","init_ParseError","init_metadata","init_isViablePhoneNumber","init_extractExtension","init_parseIncompletePhoneNumber","init_getCountryCallingCode","init_isPossible","init_PhoneNumber","init_matchesEntirely","init_extractCountryCallingCode","init_extractNationalNumber","init_getCountryByCallingCode","init_extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","PLUS_CHARS","VALID_DIGITS","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","len","arr2","_i","_arr","_n","_d","_s","_e","err","normalizeArguments","args","_Array$prototype$slic","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","text","options","metadata","isObject","init_normalizeArguments","__esmMin","init_isObject","parseNumber","_normalizeArguments","normalizeArguments","text","options","metadata","parse","init_parse","__esmMin","init_normalizeArguments","parse","withMetadataArgument","parseNumber","init_parse","__esmMin","init_withMetadataArgument","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","len","arr2","_i","_arr","_n","_d","_s","_e","err","formatNumber","_normalizeArguments","normalizeArguments","input","format","options","metadata","args","_Array$prototype$slic","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","arg_5","parse","isObject","init_format","__esmMin","init_parse","init_isObject","format","withMetadataArgument","formatNumber","init_format","__esmMin","init_withMetadataArgument","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","parsePhoneNumberWithError","text","options","metadata","parse","init_parsePhoneNumberWithError","__esmMin","init_parse","parsePhoneNumberWithError","_normalizeArguments","normalizeArguments","text","options","metadata","init_parsePhoneNumberWithError","__esmMin","init_normalizeArguments","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","parsePhoneNumber","text","options","metadata","isSupportedCountry","parsePhoneNumberWithError","error","ParseError","init_parsePhoneNumber","__esmMin","init_parsePhoneNumberWithError","init_ParseError","init_metadata","parsePhoneNumber","_normalizeArguments","normalizeArguments","text","options","metadata","init_parsePhoneNumber","__esmMin","init_normalizeArguments","getCountries","metadata","Metadata","init_getCountries","__esmMin","init_metadata","init_core","__esmMin","init_parsePhoneNumberWithError","init_parsePhoneNumber","init_getCountries","init_metadata","parsePhoneNumberWithError","withMetadataArgument","init_parsePhoneNumberWithError","__esmMin","init_withMetadataArgument","init_core","parsePhoneNumber","withMetadataArgument","init_parsePhoneNumber","__esmMin","init_withMetadataArgument","init_core","getCountries","withMetadataArgument","init_getCountries","__esmMin","init_withMetadataArgument","init_core","getCountryCallingCode","withMetadataArgument","init_getCountryCallingCode","__esmMin","init_withMetadataArgument","init_core","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","len","arr2","_i","_arr","_n","_d","_s","_e","err","normalizeArguments","args","_Array$prototype$slic","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","input","options","metadata","isObject","isViablePhoneNumber","parse","init_getNumberType","__esmMin","init_isViablePhoneNumber","init_isObject","init_parse","isValidNumber","_normalizeArguments","normalizeArguments","input","options","metadata","init_isValidNumber","__esmMin","init_isValid","init_getNumberType","isValidNumber","withMetadataArgument","init_isValidNumber","__esmMin","init_withMetadataArgument","init_libphonenumber_js","__esmMin","init_parsePhoneNumberWithError","init_parsePhoneNumber","init_getCountries","init_getCountryCallingCode","init_parse","init_format","init_isValidNumber"],"x_google_ignoreList":[0,1,2,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151]}