{"version":3,"file":"index.mjs","sources":["../../src/configs/tailwind-config.ts","../../node_modules/classnames/index.js","../../src/components/icon/assets/index.tsx","../../src/components/icon/icon.tsx","../../src/components/shared/icon-set/icon-set.tsx","../../src/utils/create-synthetic-event.ts","../../src/utils/debounce.ts","../../src/utils/get-date-string.ts","../../src/utils/normalizeText.ts","../../src/utils/string-to-boolean.ts","../../src/utils/expand-ref.ts","../../src/utils/async-trigger.ts","../../src/hooks/use-window-size.tsx","../../src/hooks/use-breakpoints-to-number.ts","../../src/components/accordion/accordion.tsx","../../src/components/accordion-group/accordion-group.tsx","../../src/components/anchor/anchor.tsx","../../src/components/tooltip/tooltip.tsx","../../src/components/button/button.tsx","../../src/components/avatar/interactive-avatar.tsx","../../src/components/avatar/non-interactive-avatar.tsx","../../src/components/avatar/avatar.tsx","../../src/components/dropdown/internals/internal-dropdown-context.tsx","../../src/components/dropdown/internals/internal-dropdown-filter-section.tsx","../../src/components/dropdown/internals/internal-dropdown-no-results.tsx","../../src/components/dropdown/internals/internal-dropdown-option.tsx","../../src/components/dropdown/internals/internal-dropdown-section.tsx","../../src/components/dropdown/internals/internal-dropdown-select-all-section.tsx","../../src/components/dropdown/internals/internal-dropdown.tsx","../../src/components/dropdown/internals/use-dropdown-state.tsx","../../src/components/dropdown/dropdown.tsx","../../src/components/dropdown/dropdown-section.tsx","../../src/components/dropdown/dropdown-option.tsx","../../src/components/avatar-group/visible-count-avatar-group.tsx","../../src/components/avatar-group/avatar-group.tsx","../../src/components/back-to-top/back-to-top.tsx","../../src/components/breadcrumb/desktop/breadcrumb-desktop.tsx","../../src/components/breadcrumb/mobile/breadcrumb-mobile.tsx","../../src/components/breadcrumb/breadcrumb.tsx","../../src/components/button-group/button-group.tsx","../../src/components/pill/pill.tsx","../../src/components/cards/shared/use-blocked-link.tsx","../../src/components/cards/card-article/card-article.tsx","../../src/components/cards/card-collection/card-collection.tsx","../../src/components/cards/card-emphasize/card-emphasize.tsx","../../src/components/link-wrapper/link-wrapper.tsx","../../src/components/cards/card-error/card-error.tsx","../../src/components/shared/bookmark-icon/bookmark-icon.tsx","../../src/components/cards/card-expandable/card-accordion/card-accordion.tsx","../../src/components/cards/card-expandable/card-expandable.tsx","../../src/components/cards/card-frame/card-frame.tsx","../../src/components/cards/card-full-image/card-full-image.tsx","../../src/components/cards/card-hero-helper/card-hero-helper.tsx","../../src/components/cards/card-hero-index/card-hero-index.tsx","../../src/components/cards/card-hero-sitemap/card-hero-sitemap.tsx","../../src/components/cards/card-highlight/shared/inner-highlight-card.tsx","../../src/components/cards/card-highlight/card-highlight.tsx","../../src/components/cards/card-highlight-newsletter/card-highlight-newsletter.tsx","../../src/components/cards/card-highlight-single/card-highlight-single.tsx","../../src/components/cards/card-links/card-links-style.ts","../../src/components/cards/card-links/card-links.tsx","../../src/components/list/item.tsx","../../src/components/list/list.tsx","../../src/components/cards/card-no-results/card-no-results.tsx","../../src/components/cards/card-single/card-single.tsx","../../src/components/cards/card-topic/card-topic.tsx","../../src/components/cards/card-action/card-action-styles.ts","../../src/components/cards/card-action/card-action.tsx","../../src/components/shared/feedback/feedback.tsx","../../src/components/checkbox/checkbox.tsx","../../src/components/checkbox-group/checkbox-group.tsx","../../src/components/dialog/dialog.tsx","../../src/components/drawer/drawer.tsx","../../src/components/ratings/rating-buttons/rating-buttons.tsx","../../src/components/ratings/rating-icons/rating-icons.tsx","../../src/components/feedback/feedback.tsx","../../src/components/footer/shared-components/footer-brand-badge.tsx","../../src/components/footer/shared-components/footer-caption-partners.tsx","../../src/components/footer/shared-components/footer-social-useful-copyright.tsx","../../src/components/footer/shared-components/footer-main.tsx","../../src/components/footer/federated-footer/federated-footer-card.tsx","../../src/components/footer/federated-footer/federated-footer.tsx","../../src/components/footer/public-footer/public-footer-contacts.tsx","../../src/components/footer/public-footer/public-footer-highlight-card.tsx","../../src/components/footer/public-footer/public-footer-highlight-card-links.tsx","../../src/components/footer/public-footer/public-footer-highlight.tsx","../../src/components/footer/public-footer/public-footer-main-plus-card-links.tsx","../../src/components/footer/public-footer/public-footer.tsx","../../src/components/glossary-letters/glossary-letters.tsx","../../src/components/header/internals/context/data-context/header-data-context.tsx","../../src/components/header/general-bar/areas/area.tsx","../../src/components/header/general-bar/areas/areas.tsx","../../src/components/header/general-bar/general-bar.tsx","../../src/components/header/internals/context/data-context/utils/areas-utils.ts","../../src/components/header/general-bar/authenticated/authenticated-footer-action.tsx","../../src/components/header/general-bar/authenticated/authenticated-header.tsx","../../src/components/header/general-bar/authenticated/authenticated.tsx","../../src/components/header/general-bar/authenticated/authenticated-body.tsx","../../src/components/header/general-bar/authenticated/authenticated-body-link.tsx","../../src/components/header/general-bar/authenticated/authenticated-footer.tsx","../../src/components/header/internals/context/data-context/utils/authenticated-utils.ts","../../src/components/header/brand/brand.tsx","../../src/components/header/brand/institutional.tsx","../../src/components/header/brand/logo.tsx","../../src/components/header/internals/context/data-context/utils/brand-utils.ts","../../src/components/header/internals/context/data-context/utils/general-utils.ts","../../src/components/header/general-bar/languages/language.tsx","../../src/components/header/general-bar/languages/languages.tsx","../../src/components/header/internals/context/data-context/utils/languages-utils.ts","../../src/components/header/navigation-bar/navigation-bar.tsx","../../src/components/header/navigation-bar/navigation-link.tsx","../../src/components/header/navigation-bar/navigation-root.tsx","../../src/components/header/internals/context/data-context/utils/navigation-utils.ts","../../src/components/header/general-bar/search/custom-search.tsx","../../src/components/header/general-bar/search/default-search.tsx","../../src/components/header/general-bar/search/search.tsx","../../src/components/header/general-bar/search/search-input-container.tsx","../../src/components/header/general-bar/search/search-related-link.tsx","../../src/components/header/general-bar/search/search-related-links.tsx","../../src/components/header/general-bar/search/search-related-links-title.tsx","../../src/components/header/general-bar/search/search-title.tsx","../../src/components/input-search-bar/equalizer/equalizer.tsx","../../src/components/input-search-bar/input-search-bar.tsx","../../src/components/header/internals/context/data-context/utils/search-utils.ts","../../src/components/header/general-bar/unauthenticated/unauthenticated.tsx","../../src/components/header/general-bar/unauthenticated/unauthenticated-link.tsx","../../src/components/header/internals/context/data-context/utils/unauthenticated-utils.ts","../../src/components/header/internals/context/data-context/header-data-controller.tsx","../../src/components/header/internals/context/menu-context/menu-type.enum.ts","../../src/components/header/internals/context/external-context/header-external-controller.tsx","../../src/components/header/internals/context/menu-context/header-menu-context.tsx","../../src/components/header/internals/shared/hooks/use-scrolling.tsx","../../src/components/header/internals/context/menu-context/header-menu-controller.tsx","../../src/components/header/internals/shared/custom-header-link/custom-header-link.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-body.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-footer.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-header.tsx","../../src/components/header/internals/general-bar/authenticated/Internal-authenticated-drawer.tsx","../../src/components/header/internals/shared/panel-menu/panel-menu.tsx","../../src/components/header/navigation-bar/related-navigation-link.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger.tsx","../../src/components/header/internals/shared/institutional/internal-institutional.tsx","../../src/components/header/internals/general-bar/areas/internal-area.tsx","../../src/components/header/internals/general-bar/areas/internal-areas.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated.tsx","../../src/components/header/internals/general-bar/languages/internal-language.tsx","../../src/components/header/internals/general-bar/languages/internal-languages-layout.tsx","../../src/components/header/internals/general-bar/languages/internal-languages.tsx","../../src/components/header/internals/general-bar/search/internal-custom-search-layout.tsx","../../src/components/header/internals/general-bar/search/internal-search-layout.tsx","../../src/components/header/internals/general-bar/search/internal-search.tsx","../../src/components/header/internals/general-bar/unauthenticated/internal-unauthenticated-layout.tsx","../../src/components/header/internals/general-bar/unauthenticated/internal-unauthenticated.tsx","../../src/components/header/internals/general-bar/internal-general-bar.tsx","../../src/components/header/internals/navigation-bar/logo/internal-logo.tsx","../../src/components/header/internals/navigation-bar/navigation-list/internal-navigation-link-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-list/internal-navigation-list.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-context.tsx","../../src/components/header/internals/shared/modal-menu/modal-menu.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-modal-content.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-modal-navbar.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-navigation-modal-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-navigation-modal.tsx","../../src/components/header/internals/navigation-bar/internal-navigation-bar.tsx","../../src/components/header/internals/internal-header.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-dialog.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-provider.tsx","../../src/components/header/header.tsx","../../src/components/input-date/contexts/date-picker-state.context.tsx","../../src/components/input-date/utils/is-same-day.ts","../../src/components/input-date/utils/get-closest-available-day.ts","../../src/components/input-date/utils/start-end-dates-comparators.ts","../../src/components/input-date/contexts/use-date-picker-state-context.tsx","../../src/components/input-date/utils/is-date-in-same-month.ts","../../src/components/input-date/utils/is-day-on-array.ts","../../src/components/input-date/utils/parse-input-date.ts","../../src/components/input-date/date-picker-dropdown-body/date-picker-dropdown-body.tsx","../../src/components/input-date/date-picker-dropdown-footer/date-picker-dropdown-footer.tsx","../../src/components/input-date/date-picker-dropdown-header/date-picker-dropdown-header.tsx","../../src/components/input-date/date-picker-dropdown.tsx","../../src/components/input-date/utils/parse-date.ts","../../src/components/input-date/date-text/date-text.tsx","../../src/components/input-date/input-date.tsx","../../src/components/input-email-bar/input-email-bar.tsx","../../src/components/input-number/input-number.tsx","../../src/components/input-password/input-password.tsx","../../src/components/input-phone/resources/config.ts","../../src/components/input-phone/input-phone.tsx","../../src/components/input-range/input-range.tsx","../../src/components/input-search/input-search.tsx","../../src/components/input-select/input-select.tsx","../../src/components/input-text/input-text.tsx","../../src/components/input-textarea/input-textarea.tsx","../../src/components/input-time/utils/format-time.ts","../../src/components/input-time/contexts/time-input-state.context.tsx","../../src/components/input-time/time-text/time-text.tsx","../../src/components/input-time/time-picker-dropdown-body/time-picker-dropdown-body.tsx","../../src/components/input-time/time-picker-dropdown-footer/time-picker-dropdown-footer.tsx","../../src/components/input-time/time-picker-dropdown.tsx","../../src/components/input-time/input-time.tsx","../../src/components/loader-dialog/loader-dialog.tsx","../../src/components/loader-dialog/loader-dialog-context.tsx","../../src/components/loader-dialog/loader-provider.tsx","../../src/components/modal-dialog/modal-context.tsx","../../src/components/modal-dialog/modal-dialog.tsx","../../src/components/modal-dialog/modal-provider.tsx","../../src/components/panel-switcher/desktop/panel-switcher-desktop.tsx","../../src/components/panel-switcher/mobile/panel-switcher-mobile.tsx","../../src/components/panel-switcher/panel-switcher-container.tsx","../../src/components/tabs/tab-body.tsx","../../src/components/tabs/tab-header.tsx","../../src/components/tabs/tab.tsx","../../src/components/tabs/desktop/tabs-desktop.tsx","../../src/components/tabs/mobile/tabs-mobile.tsx","../../src/components/tabs/tabs.tsx","../../src/components/panel-switcher/panel-switcher.tsx","../../src/components/popup-dialog/popup-context.tsx","../../src/components/popup-dialog/popup-dialog.tsx","../../src/components/popup-dialog/popup-provider.tsx","../../src/components/progress-bar/progress-bar.tsx","../../src/components/progress-bar-group/progress-bar-group.tsx","../../src/components/radio/radio.tsx","../../src/components/quiz/quiz-option/quiz-option.tsx","../../src/components/quiz/quiz-options/quiz-options.tsx","../../src/components/quiz/quiz-item-summary/quiz-item-summary.tsx","../../src/components/radio-button-group/radio-button-group.tsx","../../src/components/scribbles/assets/index.tsx","../../src/components/scribbles/scribbles.tsx","../../src/components/search-pagination/search-page.tsx","../../src/components/search-pagination/search-pagination-number-overlay.tsx","../../src/components/search-pagination/search-pagination.tsx","../../src/components/sidebar/utils/openOnCurrentItem.ts","../../src/components/sidebar/sidebar-item-navigation-mobile/sidebar-item-navigation-mobile.tsx","../../src/components/sidebar/sidebar.tsx","../../src/components/sidebar/utils/setIconsExpandCollapsed.ts","../../src/components/sidebar/utils/setInitialSidebarItem.ts","../../src/components/sidebar/utils/toggleSidebarItem.ts","../../src/components/sidebar/utils/toggleSidebarItemChildren.ts","../../src/components/sidebar/utils/handlerSetGapPill.ts","../../src/components/sidebar/sidebar-filter/sidebar-item-filter.tsx","../../src/components/sidebar/utils/getParentTreeItem.ts","../../src/components/sidebar/utils/navigationSidebarItemHandler.ts","../../src/components/sidebar/utils/toggleExpandAllSiblingItems.ts","../../src/components/sidebar/utils/keyboardSidebarItemHandlers.ts","../../src/components/sidebar/sidebar-navigation/sidebar-item-navigation.tsx","../../src/components/sidebar/sidebar-item.tsx","../../src/components/skip-navigation/skip-navigation-multiple.tsx","../../src/components/skip-navigation/skip-navigation-single.tsx","../../src/components/skip-navigation/skip-navigation.tsx","../../src/components/status-card/interactive-status-card.tsx","../../src/components/status-card/non-interactive-status-card.tsx","../../src/components/status-card/status-card.tsx","../../src/components/step-list/step-list.tsx","../../src/components/stepper/step.tsx","../../src/components/stepper/stepper.tsx","../../src/components/switch/switch.tsx","../../src/components/table/table-body.tsx","../../src/components/table/table-caption.tsx","../../src/components/table/table-cell.tsx","../../src/components/table/table-footer.tsx","../../src/components/table/table-header.tsx","../../src/components/table/table-header-cell.tsx","../../src/components/table/table-row.tsx","../../src/components/table/table-pagination.tsx","../../src/components/table/table.tsx","../../src/components/tag/tag.tsx","../../src/components/timelines/shared/timeline-event/timeline-event.tsx","../../src/components/timelines/shared/timeline-event-vertical/timeline-event-vertical.tsx","../../src/components/timelines/timeline-vertical/timeline-vertical.tsx","../../src/components/timelines/timeline-horizontal/timeline-horizontal.tsx","../../src/components/toasts/toast-context.tsx","../../src/components/toasts/toast.tsx","../../src/components/toasts/use-toast.ts","../../src/components/toasts/toast-provider.tsx","../../src/components/toggle/toggle.tsx","../../src/components/toggle-group/toggle-group.tsx","../../src/components/uploader/shared/file-list.tsx","../../src/components/uploader/shared/use-file-upload.tsx","../../src/components/uploader/button-uploader/button-uploader.tsx","../../src/components/uploader/drag-and-drop-uploader/drag-and-drop-uploader.tsx"],"sourcesContent":["import type { Config } from 'tailwindcss';\r\n\r\nconst AgoraTailwindConfig = {\r\n  content: [],\r\n  theme: {\r\n    extend: {\r\n      borderWidth: {\r\n        DEFAULT: '1px',\r\n        0: '0',\r\n        1: '1px',\r\n        2: '2px',\r\n        3: '3px',\r\n        4: '4px'\r\n      },\r\n      content: {\r\n        empty: \"''\"\r\n      },\r\n      gridTemplateRows: {\r\n        7: 'repeat(7, minmax(0, 1fr))',\r\n        8: 'repeat(8, minmax(0, 1fr))',\r\n        9: 'repeat(9, minmax(0, 1fr))',\r\n        10: 'repeat(10, minmax(0, 1fr))'\r\n      },\r\n      gridTemplateColumns: {\r\n        '1-auto': 'auto',\r\n        '2-auto': 'auto auto',\r\n        '3-auto': 'auto auto auto',\r\n        '4-auto': 'auto auto auto auto',\r\n        '5-auto': 'auto auto auto auto auto',\r\n        '6-auto': 'auto auto auto auto auto auto',\r\n        '7-auto': 'auto auto auto auto auto auto auto',\r\n        '8-auto': 'auto auto auto auto auto auto auto auto',\r\n        '9-auto': 'auto auto auto auto auto auto auto auto auto',\r\n        '10-auto': 'auto auto auto auto auto auto auto auto auto auto',\r\n        '11-auto': 'auto auto auto auto auto auto auto auto auto auto auto',\r\n        '12-auto': 'auto auto auto auto auto auto auto auto auto auto auto auto'\r\n      },\r\n      opacity: {\r\n        16: '0.16',\r\n        32: '0.32'\r\n      },\r\n      minWidth: {\r\n        initial: 'initial'\r\n      },\r\n      maxWidth: {\r\n        initial: 'initial'\r\n      },\r\n      minHeight: {\r\n        initial: 'initial'\r\n      },\r\n      maxHeight: {\r\n        initial: 'initial'\r\n      },\r\n      zIndex: {\r\n        dropdown: '1000',\r\n        backdrop: '2000',\r\n        sticky: '3000',\r\n        fixed: '4000',\r\n        drawer: '5000',\r\n        dialog: '6000',\r\n        toast: '7000',\r\n        tooltip: '8000'\r\n      }\r\n    },\r\n    screens: {\r\n      xs: '360px',\r\n      md: '768px',\r\n      xl: '1280px'\r\n    },\r\n    fontFamily: {\r\n      sans: ['Noto Sans', 'sans-serif']\r\n    },\r\n    fontSize: {\r\n      'base': '16px',\r\n      // Typography / S\r\n      's-regular': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '400' }],\r\n      's-medium': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '500' }],\r\n      's-semibold': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '600' }],\r\n      's-bold': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / M\r\n      'm-light': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'm-regular': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'm-medium': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'm-semibold': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'm-bold': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / L\r\n      'l-light': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'l-regular': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'l-medium': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'l-semibold': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'l-bold': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / XL\r\n      'xl-light': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'xl-regular': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'xl-medium': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'xl-semibold': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'xl-bold': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / 2XL\r\n      '2xl-light': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '300' }],\r\n      '2xl-regular': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '400' }],\r\n      '2xl-medium': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '500' }],\r\n      '2xl-semibold': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '600' }],\r\n      '2xl-bold': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / 3XL\r\n      '3xl-light': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '300' }],\r\n      '3xl-regular': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '400' }],\r\n      '3xl-medium': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '500' }],\r\n      '3xl-semibold': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '600' }],\r\n      '3xl-bold': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '700' }]\r\n    },\r\n    borderRadius: {\r\n      none: '0px',\r\n      4: '4px',\r\n      8: '8px',\r\n      16: '16px',\r\n      24: '24px',\r\n      32: '32px',\r\n      full: '100%'\r\n    },\r\n    colors: {\r\n      transparent: 'transparent',\r\n      white: '#FFFFFF',\r\n      black: '#000000',\r\n      focus: '#F408FC',\r\n      backdrop: 'rgba(43, 54, 60, 0.96)',\r\n      mask: {\r\n        image: 'rgba(43, 54, 60, 0.8)'\r\n      },\r\n      neutral: {\r\n        50: '#F7F8FA',\r\n        100: '#F1F3F8',\r\n        200: '#E1E4EA',\r\n        300: '#CDD2DC',\r\n        400: '#BAC0CC',\r\n        500: '#9CA6B8',\r\n        600: '#8893AA',\r\n        700: '#64718B',\r\n        800: '#475164',\r\n        900: '#2B363C'\r\n      },\r\n      primary: {\r\n        50: '#FAFCFF',\r\n        100: '#F2F6FF',\r\n        200: '#E5EEFF',\r\n        300: '#BBD1FD',\r\n        400: '#5F93FC',\r\n        500: '#1A65FA',\r\n        600: '#034AD8',\r\n        700: '#0338A2',\r\n        800: '#002B82',\r\n        900: '#021C51'\r\n      },\r\n      secondary: {\r\n        50: '#F5FBFF',\r\n        100: '#EBF6FF',\r\n        200: '#E3F4FF',\r\n        300: '#CCEAFF',\r\n        400: '#A0D8FE',\r\n        500: '#1CA3FC',\r\n        600: '#1993E3',\r\n        700: '#1682CA',\r\n        800: '#12669E',\r\n        900: '#0D4C75'\r\n      },\r\n      informative: {\r\n        50: '#E5F6FF',\r\n        100: '#E5F6FF',\r\n        200: '#A5DEFF',\r\n        300: '#77CEFF',\r\n        400: '#49BCFF',\r\n        500: '#0079BF',\r\n        600: '#00598C',\r\n        700: '#0B486B',\r\n        800: '#083752',\r\n        900: '#00121C'\r\n      },\r\n      success: {\r\n        50: '#E5FFF6',\r\n        100: '#C2F2E2',\r\n        200: '#7ACCB1',\r\n        300: '#36B289',\r\n        400: '#1F9970',\r\n        500: '#008558',\r\n        600: '#00724C',\r\n        700: '#005539',\r\n        800: '#013926',\r\n        900: '#001C13'\r\n      },\r\n      warning: {\r\n        50: '#FFF9E5',\r\n        100: '#FFF2CC',\r\n        200: '#FFE699',\r\n        300: '#FFE699',\r\n        400: '#FFD966',\r\n        500: '#FBCB3C',\r\n        600: '#FBBB3C',\r\n        700: '#F2A222',\r\n        800: '#B06112',\r\n        900: '#80460D'\r\n      },\r\n      danger: {\r\n        50: '#FEF1F2',\r\n        100: '#FEE1E3',\r\n        200: '#FEC8CC',\r\n        300: '#FCA6AD',\r\n        400: '#F8727D',\r\n        500: '#DE2D3B',\r\n        600: '#D12332',\r\n        700: '#C41826',\r\n        800: '#B20917',\r\n        900: '#86131D'\r\n      }\r\n    },\r\n    spacing: {\r\n      0: '0px',\r\n      8: '8px',\r\n      16: '16px',\r\n      24: '24px',\r\n      32: '32px',\r\n      40: '40px',\r\n      48: '48px',\r\n      56: '56px',\r\n      64: '64px',\r\n      72: '72px',\r\n      80: '80px',\r\n      88: '88px',\r\n      96: '96px',\r\n      104: '104px',\r\n      112: '112px',\r\n      120: '120px',\r\n      128: '128px',\r\n      256: '256px',\r\n      '1/4': '25%',\r\n      '1/2': '50%',\r\n      'full': '100%',\r\n      'initial': 'initial'\r\n    },\r\n    boxShadow: {\r\n      'none': '0 0 #0000',\r\n      'top-lower': '0px -4px 4px 0px rgba(0, 0, 0, 0.16)',\r\n      'top-low': '0px -8px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'top-medium': '0px -16px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'top-high': '0px -16px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'top-higher': '0px -16px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'center-lower': '0px 0px 4px 0px rgba(0, 0, 0, 0.32)',\r\n      'center-low': '0px 0px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'center-medium': '0px 0px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'center-high': '0px 0px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'center-higher': '0px 0px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'bottom-lower': '0px 4px 4px 0px rgba(0, 0, 0, 0.16)',\r\n      'bottom-low': '0px 8px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'bottom-medium': '0px 16px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'bottom-high': '0px 16px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'bottom-higher': '0px 16px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'inner': '0px 4px 4px 0px rgba(0, 0, 0, 0.32) inset'\r\n    },\r\n    transitionDuration: {\r\n      DEFAULT: '200ms'\r\n    },\r\n    container: {\r\n      padding: {\r\n        xs: '32px',\r\n        md: '64px',\r\n        xl: '0px'\r\n      }\r\n    }\r\n  },\r\n  plugins: [\r\n    // Override to class .container max-screen resolution\r\n    ({ addComponents }: any) => {\r\n      addComponents({\r\n        '.container': {\r\n          maxWidth: '1216px'\r\n        }\r\n      });\r\n    },\r\n\r\n    // Function to use variable colors inside scss\r\n    // Ex: var(--color-primary-100)\r\n    function ({ addBase, theme }: any) {\r\n      function extractColorVars(colorObj: any, colorGroup = ''): any {\r\n        return Object.keys(colorObj).reduce((vars, colorKey) => {\r\n          const value = colorObj[colorKey];\r\n\r\n          const newVars =\r\n            typeof value === 'string' ? { [`--color${colorGroup}-${colorKey}`]: value } : extractColorVars(value, `-${colorKey}`);\r\n\r\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n          return { ...vars, ...newVars };\r\n        }, {});\r\n      }\r\n\r\n      addBase({\r\n        ':root, :host, ::backdrop': extractColorVars(theme('colors'))\r\n      });\r\n    }\r\n  ],\r\n  safelist: [\r\n    {\r\n      //pattern to be able to dynamically build stories in which we change the DOM\r\n      pattern: /(border|bg|fill|text|stroke)-[^/]+$/,\r\n      variants: ['hover', 'focus', 'xs', 'md', 'xl']\r\n    }\r\n  ]\r\n} satisfies Config;\r\n\r\nexport { AgoraTailwindConfig };\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { ComponentType, lazy, LazyExoticComponent } from 'react';\nimport { SVGIconProps } from '@/models';\n\nexport const iconList: Record<string, LazyExoticComponent<ComponentType<SVGIconProps>>> = {\n  //  Business & Payment\n  'agora-line-buildings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-buildings')),\n  'agora-solid-buildings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-buildings')),\n  'agora-line-money-taxes': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-money-taxes')),\n  'agora-solid-money-taxes': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-money-taxes')),\n  'agora-line-award': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-award')),\n  'agora-solid-award': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-award')),\n  'agora-line-calculator': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-calculator')),\n  'agora-solid-calculator': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-calculator')),\n  'agora-line-credit-card': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-credit-card')),\n  'agora-solid-credit-card': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-credit-card')),\n  'agora-line-ticket': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-ticket')),\n  'agora-solid-ticket': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-ticket')),\n  'agora-line-wallet': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-wallet')),\n  'agora-solid-wallet': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-wallet')),\n  'agora-line-tag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-tag')),\n  'agora-solid-tag': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-tag')),\n  //  Communication\n  'agora-line-thumbs-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-thumbs-up')),\n  'agora-line-thumbs-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-thumbs-down')),\n  'agora-solid-thumbs-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-thumbs-up')),\n  'agora-solid-thumbs-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-thumbs-down')),\n  'agora-line-bell': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bell')),\n  'agora-solid-bell': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bell')),\n  'agora-line-help-support': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-help-support')),\n  'agora-solid-help-support': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-help-support')),\n  'agora-line-chat': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chat')),\n  'agora-solid-chat': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chat')),\n  'agora-line-mail': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mail')),\n  'agora-solid-mail': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mail')),\n  'agora-line-mail-open': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mail-open')),\n  'agora-solid-mail-open': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mail-open')),\n  'agora-line-at-sign': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-at-sign')),\n  'agora-solid-at-sign': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-at-sign')),\n  //  Common Actions\n  'agora-line-home': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-home')),\n  'agora-solid-home': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-home')),\n  'agora-line-star': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-star')),\n  'agora-solid-star': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-star')),\n  'agora-line-log-in': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-log-in')),\n  'agora-solid-log-in': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-log-in')),\n  'agora-line-log-out': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-log-out')),\n  'agora-solid-log-out': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-log-out')),\n  'agora-line-search': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-search')),\n  'agora-solid-search': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-search')),\n  'agora-line-menu': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-menu')),\n  'agora-solid-menu': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-menu')),\n  'agora-line-health': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-health')),\n  'agora-solid-health': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-health')),\n  'agora-line-external-link': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-external-link')),\n  'agora-solid-external-link': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-external-link')),\n  'agora-line-check-all': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check-all')),\n  'agora-solid-check-all': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check-all')),\n  'agora-line-more-horizontal': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-more-horizontal')),\n  'agora-solid-more-horizontal': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-more-horizontal')),\n  'agora-line-more-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-more-vertical')),\n  'agora-solid-more-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-more-vertical')),\n  'agora-line-refresh-ccw': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-refresh-ccw')),\n  'agora-solid-refresh-ccw': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-refresh-ccw')),\n  'agora-line-dashboard': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-dashboard')),\n  'agora-solid-dashboard': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-dashboard')),\n  'agora-line-layers-menu': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-layers-menu')),\n  'agora-solid-layers-menu': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-layers-menu')),\n  //  Environment\n  'agora-line-tree': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-tree')),\n  'agora-solid-tree': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-tree')),\n  //  File\n  'agora-line-folder': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-folder')),\n  'agora-solid-folder': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-folder')),\n  'agora-line-file': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-file')),\n  'agora-solid-file': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-file')),\n  'agora-line-document': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-document')),\n  'agora-solid-document': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-document')),\n  'agora-line-book-open': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-book-open')),\n  'agora-solid-book-open': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-book-open')),\n  'agora-line-package': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-package')),\n  'agora-solid-package': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-package')),\n  'agora-line-file-share': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-file-share')),\n  'agora-solid-file-share': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-file-share')),\n  //  Formatting\n  'agora-line-filter': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-filter')),\n  'agora-solid-filter': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-filter')),\n  'agora-line-edit': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-edit')),\n  'agora-solid-edit': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-edit')),\n  'agora-line-plus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plus-circle')),\n  'agora-solid-plus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plus-circle')),\n  'agora-line-plus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plus')),\n  'agora-solid-plus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plus')),\n  'agora-line-minus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minus-circle')),\n  'agora-solid-minus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minus-circle')),\n  'agora-line-minus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minus')),\n  'agora-solid-minus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minus')),\n  'agora-line-upload': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-upload')),\n  'agora-solid-upload': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-upload')),\n  'agora-line-download': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-download')),\n  'agora-solid-download': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-download')),\n  'agora-line-paperclip': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-paperclip')),\n  'agora-solid-paperclip': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-paperclip')),\n  'agora-line-list': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-list')),\n  'agora-solid-list': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-list')),\n  'agora-line-settings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-settings')),\n  'agora-solid-settings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-settings')),\n  'agora-line-bullet': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bullet')),\n  'agora-solid-bullet': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bullet')),\n  'agora-line-sort-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-vertical')),\n  'agora-solid-sort-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-vertical')),\n  'agora-line-sort-generic-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-generic-down')),\n  'agora-solid-sort-generic-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-generic-down')),\n  'agora-line-sort-generic-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-generic-up')),\n  'agora-solid-sort-generic-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-generic-up')),\n  'agora-line-sort-alpha-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-alpha-down')),\n  'agora-solid-sort-alpha-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-alpha-down')),\n  'agora-line-sort-alpha-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-alpha-up')),\n  'agora-solid-sort-alpha-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-alpha-up')),\n  'agora-line-trash': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-trash')),\n  'agora-solid-trash': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-trash')),\n  'agora-line-print': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-print')),\n  'agora-solid-print': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-print')),\n  'agora-line-delete': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-delete')),\n  'agora-solid-delete': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-delete')),\n  //  Food & Drinks\n  'agora-line-coffee': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-coffee')),\n  'agora-solid-coffee': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-coffee')),\n  //  Hardware\n  'agora-line-hardware-settings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-hardware-settings')),\n  'agora-solid-hardware-settings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-hardware-settings')),\n  'agora-line-wifi': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-wifi')),\n  'agora-solid-wifi': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-wifi')),\n  //  Maps & Travel\n  'agora-line-plane': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plane')),\n  'agora-solid-plane': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plane')),\n  'agora-line-driving': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-driving')),\n  'agora-solid-driving': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-driving')),\n  'agora-line-map': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-map')),\n  'agora-solid-map': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-map')),\n  'agora-line-map-pin': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-map-pin')),\n  'agora-solid-map-pin': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-map-pin')),\n  'agora-line-target': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-target')),\n  'agora-solid-target': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-target')),\n  'agora-line-briefcase': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-briefcase')),\n  'agora-solid-briefcase': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-briefcase')),\n  'agora-line-flag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-flag')),\n  'agora-solid-flag': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-flag')),\n  //  Media\n  'agora-line-video-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-video-on')),\n  'agora-solid-video-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-video-on')),\n  'agora-line-video-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-video-off')),\n  'agora-solid-video-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-video-off')),\n  'agora-line-mic-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mic-on')),\n  'agora-solid-mic-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mic-on')),\n  'agora-line-mic-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mic-off')),\n  'agora-solid-mic-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mic-off')),\n  'agora-line-movie': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-movie')),\n  'agora-solid-movie': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-movie')),\n  'agora-line-camera': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-camera')),\n  'agora-solid-camera': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-camera')),\n  'agora-line-monitor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-monitor')),\n  'agora-solid-monitor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-monitor')),\n  'agora-line-airplay': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-airplay')),\n  'agora-solid-airplay': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-airplay')),\n  'agora-line-mega-phone': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mega-phone')),\n  'agora-solid-mega-phone': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mega-phone')),\n  'agora-line-volume-max': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-max')),\n  'agora-solid-volume-max': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-max')),\n  'agora-line-volume-min': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-min')),\n  'agora-solid-volume-min': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-min')),\n  'agora-line-volume-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-off')),\n  'agora-solid-volume-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-off')),\n  'agora-line-volume-mute': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-mute')),\n  'agora-solid-volume-mute': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-mute')),\n  'agora-line-music': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-music')),\n  'agora-solid-music': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-music')),\n  'agora-line-globe': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-globe')),\n  'agora-solid-globe': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-globe')),\n  'agora-line-smartphone': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smartphone')),\n  'agora-solid-smartphone': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smartphone')),\n  //  Navigation\n  'agora-line-arrow-down-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down-anchor')),\n  'agora-solid-arrow-down-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down-anchor')),\n  'agora-line-arrow-up-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up-anchor')),\n  'agora-solid-arrow-up-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up-anchor')),\n  'agora-line-arrow-right-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right-anchor')),\n  'agora-solid-arrow-right-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right-anchor')),\n  'agora-line-arrow-left-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left-anchor')),\n  'agora-solid-arrow-left-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left-anchor')),\n  'agora-line-arrow-down-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down-circle')),\n  'agora-solid-arrow-down-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down-circle')),\n  'agora-line-arrow-up-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up-circle')),\n  'agora-solid-arrow-up-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up-circle')),\n  'agora-line-arrow-right-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right-circle')),\n  'agora-solid-arrow-right-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right-circle')),\n  'agora-line-arrow-left-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left-circle')),\n  'agora-solid-arrow-left-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left-circle')),\n  'agora-line-arrow-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up')),\n  'agora-solid-arrow-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up')),\n  'agora-line-arrow-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down')),\n  'agora-solid-arrow-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down')),\n  'agora-line-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right')),\n  'agora-solid-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right')),\n  'agora-line-arrow-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left')),\n  'agora-solid-arrow-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left')),\n  'agora-line-chevron-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-down')),\n  'agora-solid-chevron-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-down')),\n  'agora-line-chevron-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-up')),\n  'agora-solid-chevron-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-up')),\n  'agora-line-chevron-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-right')),\n  'agora-solid-chevron-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-right')),\n  'agora-line-chevron-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-left')),\n  'agora-solid-chevron-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-left')),\n  'agora-line-chevrons-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-down')),\n  'agora-solid-chevrons-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-down')),\n  'agora-line-chevrons-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-up')),\n  'agora-solid-chevrons-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-up')),\n  'agora-line-chevrons-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-left')),\n  'agora-solid-chevrons-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-left')),\n  'agora-line-chevrons-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-right')),\n  'agora-solid-chevrons-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-right')),\n  //  Privacy & Security\n  'agora-line-shield': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-shield')),\n  'agora-solid-shield': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-shield')),\n  'agora-line-unlock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-unlock')),\n  'agora-solid-unlock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-unlock')),\n  'agora-line-lock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-lock')),\n  'agora-solid-lock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-lock')),\n  'agora-line-eye': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-eye')),\n  'agora-solid-eye': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-eye')),\n  'agora-line-eye-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-eye-off')),\n  'agora-solid-eye-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-eye-off')),\n  // Public institutions\n  'agora-line-court': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-court')),\n  'agora-solid-court': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-court')),\n  'agora-line-social-security': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-social-security')),\n  'agora-solid-social-security': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-social-security')),\n  //  Social\n  'agora-line-twitter-x': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-twitter-x')),\n  'agora-solid-twitter-x': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-twitter-x')),\n  'agora-line-twitter': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-twitter')),\n  'agora-solid-twitter': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-twitter')),\n  'agora-line-instagram': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-instagram')),\n  'agora-solid-instagram': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-instagram')),\n  'agora-line-facebook': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-facebook')),\n  'agora-solid-facebook': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-facebook')),\n  'agora-line-youtube': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-youtube')),\n  'agora-solid-youtube': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-youtube')),\n  'agora-line-linkedin': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-linkedin')),\n  'agora-solid-linkedin': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-linkedin')),\n  'agora-line-share': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-share')),\n  'agora-solid-share': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-share')),\n  'agora-line-bookmark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bookmark')),\n  'agora-solid-bookmark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bookmark')),\n  //  Status\n  'agora-line-x-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-x-circle')),\n  'agora-solid-x-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-x-circle')),\n  'agora-line-x': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-x')),\n  'agora-solid-x': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-x')),\n  'agora-line-check-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check-circle')),\n  'agora-solid-check-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check-circle')),\n  'agora-line-check': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check')),\n  'agora-solid-check': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check')),\n  'agora-line-question-mark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-question-mark')),\n  'agora-solid-question-mark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-question-mark')),\n  'agora-line-alert-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-alert-circle')),\n  'agora-solid-alert-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-alert-circle')),\n  'agora-line-info-mark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-info-mark')),\n  'agora-solid-info-mark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-info-mark')),\n  'agora-line-alert-triangle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-alert-triangle')),\n  'agora-solid-alert-triangle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-alert-triangle')),\n  'agora-line-loader': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-loader')),\n  'agora-solid-loader': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-loader')),\n  'agora-line-smile-sad': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smile-sad')),\n  'agora-solid-smile-sad': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smile-sad')),\n  //  Transportation\n  'agora-line-bus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bus')),\n  'agora-solid-bus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bus')),\n  'agora-line-truck': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-truck')),\n  'agora-solid-truck': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-truck')),\n  //  Time\n  'agora-line-calendar': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-calendar')),\n  'agora-solid-calendar': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-calendar')),\n  'agora-line-clock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-clock')),\n  'agora-solid-clock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-clock')),\n  //  User\n  'agora-line-user-group': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user-group')),\n  'agora-solid-user-group': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user-group')),\n  'agora-line-user': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user')),\n  'agora-solid-user': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user')),\n  //  Others\n  'agora-line-bookmark-card': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bookmark-card')),\n  'agora-solid-bookmark-card': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bookmark-card')),\n  'agora-drag-dots': lazy<ComponentType<SVGIconProps>>(() => import('./other/drag-dots')),\n  // Default icon - Should not be listable\n  'no-icon': lazy<ComponentType<SVGIconProps>>(() => import('./other/agora'))\n};\n\nexport const allIcons = Object.keys(iconList).filter((c) => c !== 'no-icon');\n\nexport type IconName = (typeof allIcons)[number];\n\nexport const isBundledIcon = (name: string) => {\n  return !!allIcons.find((i) => i === name);\n};\n","import React, { ComponentProps, ComponentType, FC, HTMLProps, LazyExoticComponent, Suspense, SVGProps } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SVGIconProps } from '@/models';\n\nimport { iconList, IconName, isBundledIcon } from './assets/index';\n\nimport './icon.scss';\n\nconst iconsCache: Record<IconName, LazyExoticComponent<ComponentType<SVGIconProps>>> = {};\n\nconst loadIcon = (name: IconName): LazyExoticComponent<ComponentType<SVGIconProps>> => {\n  const cachedIcon = iconsCache[name];\n\n  if (cachedIcon) {\n    return cachedIcon;\n  }\n\n  const lazyComponent = iconList[name];\n\n  iconsCache[name] = lazyComponent;\n\n  return lazyComponent;\n};\n\n/**\n * Allowed icon dimensions.\n */\nexport type IconDimensions = 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl';\n\ntype BasicIconProps = SVGProps<SVGSVGElement> & HTMLProps<HTMLImageElement>;\n\nexport interface IconProps extends BasicIconProps {\n  /**\n   * Sets the icon dimension.\n   */\n  dimensions?: IconDimensions;\n  /**\n   * Icon name to use. Can be an external image url.\n   */\n  name?: IconName;\n  /**\n   * Callback to run when image is loaded.\n   */\n  onIconLoad?: () => void;\n  /**\n   * Callback to run when image fails to load.\n   */\n  onIconError?: () => void;\n}\n\nexport const Icon: FC<IconProps> = ({ dimensions = 'm', name = 'no-icon', onIconLoad, onIconError, ...props }) => {\n  const classes = classNames(\n    'icon',\n    {\n      [`icon-${dimensions?.toLowerCase()}`]: dimensions,\n      'fill-primary-600': !props.className?.match('fill-')\n    },\n    props.className\n  );\n\n  const onLoad = () => {\n    onIconLoad?.();\n  };\n\n  const onError = () => {\n    onIconError?.();\n  };\n\n  const shouldRenderImage = name !== 'no-icon' && !isBundledIcon(name);\n\n  //  SRC OR BASE-64\n  if (shouldRenderImage) {\n    // Assume that it is a base64 image and let the browser do his work\n    return <img {...props} src={name} alt={props.alt} className={classes} onLoad={onLoad} onError={onError} />;\n  }\n\n  const LazyComponent = loadIcon(name);\n\n  const fullProps = {\n    ...props,\n    className: classes,\n    title: props.title ?? props.alt\n  } as ComponentProps<'svg'>;\n\n  return (\n    LazyComponent && (\n      <Suspense>\n        <LazyComponent {...fullProps} />\n      </Suspense>\n    )\n  );\n};\n","import React, { Children, ComponentProps, FC, isValidElement, ReactElement } from 'react';\nimport { Icon, IconProps } from '../../icon/icon';\n\nexport type IconSetState = 'default' | 'hover' | 'focused' | 'active' | 'checked';\n\nexport interface IconItemProps extends IconProps {\n  state?: IconSetState;\n}\nexport const IconItem: FC<IconItemProps> = ({ state, ...props }) => {\n  return <Icon data-state={state} {...props} />;\n};\n\nexport interface IconSetProps extends ComponentProps<'div'> {\n  state?: IconSetState;\n  children?: ReactElement<IconItemProps> | Array<ReactElement<IconItemProps>>;\n}\nconst IconSet: FC<IconSetProps> = ({ ref = null, className, state = 'default', children, ...props }) => {\n  return (\n    <div {...props} ref={ref} className={className}>\n      {Children.toArray(children).map((child) => {\n        if (!isValidElement<IconItemProps>(child)) {\n          return null;\n        }\n\n        const { state: childState, ...childProps } = child.props;\n        return <Icon {...childProps} aria-hidden key={childState} style={{ display: childState === state ? 'block' : 'none' }} />;\n      })}\n    </div>\n  );\n};\n\nexport { IconSet };\n","import { SyntheticEvent } from 'react';\n\nexport function createSyntheticEvent<T>(target: T, eventType: string): SyntheticEvent<T> {\n  const event = new Event(eventType, { bubbles: true });\n\n  Object.defineProperty(event, 'target', { writable: false, value: target });\n\n  let isDefaultPrevented = false;\n  let isPropagationStopped = false;\n\n  const preventDefault = () => {\n    isDefaultPrevented = true;\n    event.preventDefault();\n  };\n\n  const stopPropagation = () => {\n    isPropagationStopped = true;\n    event.stopPropagation();\n  };\n\n  return {\n    nativeEvent: event,\n    currentTarget: event.currentTarget as EventTarget & T,\n    target: event.target as EventTarget & T,\n    bubbles: event.bubbles,\n    cancelable: event.cancelable,\n    defaultPrevented: event.defaultPrevented,\n    eventPhase: event.eventPhase,\n    isTrusted: event.isTrusted,\n    preventDefault,\n    isDefaultPrevented: () => isDefaultPrevented,\n    stopPropagation,\n    isPropagationStopped: () => isPropagationStopped,\n    persist: () => {},\n    timeStamp: event.timeStamp,\n    type: event.type\n  };\n}\n","import { useEffect, useRef, useState } from 'react';\n\ntype Timer = string | number | NodeJS.Timeout | undefined;\ntype FunctionType = (arg: string) => void;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst debounce = (func: FunctionType, timeout = 300) => {\n  let timer: Timer;\n\n  return (args: string) => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = undefined;\n    }\n\n    timer = setTimeout(() => {\n      func(args);\n    }, timeout);\n  };\n};\n\nexport { debounce };\n\nexport const useDebounceHook = (func: FunctionType, timeout = 300) => {\n  const timer = useRef<Timer>(null);\n  const [args, setArgs] = useState<string>('');\n\n  useEffect(() => {\n    if (timer.current) {\n      clearTimeout(timer.current);\n    }\n\n    timer.current = setTimeout(() => {\n      func(args);\n    }, timeout);\n\n    return () => {\n      if (timer.current) {\n        clearTimeout(timer.current);\n      }\n    };\n  }, [func, timeout, args]);\n\n  return {\n    setArgs\n  };\n};\n","export const getDateString = (d: Date) => {\n  let dayString = d.getDate().toString();\n  if (dayString.length < 2) {\n    dayString = `0${dayString}`;\n  }\n\n  let monthString = (d.getMonth() + 1).toString();\n  if (monthString.length < 2) {\n    monthString = `0${monthString}`;\n  }\n\n  const yearString = d.getFullYear();\n\n  return `${dayString}/${monthString}/${yearString}`;\n};\n","const normalizeText = (text: string) => {\n  return text\n    .toLocaleLowerCase()\n    .normalize('NFD')\n    .replace(/[\\u0300-\\u036f]/g, '');\n};\nexport { normalizeText };\n","/**\n * Convert string like value to Boolean\n */\nconst stringToBoolean = (value: boolean | string | undefined): boolean => {\n  // some params could be undefined (not required)\n  if (typeof value === 'undefined') {\n    return false;\n  }\n\n  // if primitive boolean return self-value\n  if (typeof value === 'boolean') {\n    return value;\n  }\n\n  return value === 'true';\n};\n\nexport { stringToBoolean };\n","import { DependencyList, Ref, RefObject, useImperativeHandle, useRef } from 'react';\n\nexport function useExpandedRef<T>(\n  ref: Ref<T> | null,\n  innerRef: RefObject<HTMLElement | null>,\n  data: T,\n  deps?: DependencyList\n): RefObject<T | null> {\n  const externalRef = useRef<T>(null);\n\n  useImperativeHandle(\n    ref,\n    () => {\n      externalRef.current = innerRef.current as T;\n\n      if (externalRef.current) {\n        const { focus: _, ...safeData } = data as Record<string, unknown>;\n        Object.assign(externalRef.current, safeData);\n      }\n\n      return externalRef.current;\n    },\n    deps\n  );\n\n  return externalRef;\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nconst asyncTrigger = (func: Function, timeout = 10) => {\n  setTimeout(func, timeout);\n};\n\nexport { asyncTrigger };\n","import { useEffect, useState } from 'react';\n\nconst useWindowSize = (fallback = { width: 1920, height: 1080 }) => {\n  const [size, setSize] = useState(() => {\n    if (typeof window !== 'undefined') {\n      return { width: window.innerWidth, height: window.innerHeight };\n    }\n    return fallback;\n  });\n\n  useEffect(() => {\n    const updateSize = () => {\n      setSize({ width: window.innerWidth, height: window.innerHeight });\n    };\n\n    updateSize();\n    window.addEventListener('resize', updateSize);\n    return () => window.removeEventListener('resize', updateSize);\n  }, []);\n\n  return size;\n};\n\nexport { useWindowSize };\n","import { AgoraTailwindConfig } from '@/configs/tailwind-config';\n\nconst useBreakpointScreenValues = () => {\n  const xsScreen = Number(AgoraTailwindConfig.theme.screens.xs.replaceAll('px', ''));\n  const mdScreen = Number(AgoraTailwindConfig.theme.screens.md.replaceAll('px', ''));\n  const xlScreen = Number(AgoraTailwindConfig.theme.screens.xl.replaceAll('px', ''));\n\n  return {\n    xsScreen,\n    mdScreen,\n    xlScreen\n  };\n};\n\nexport { useBreakpointScreenValues };\n","import classNames from 'classnames';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  ReactElement,\n  ReactNode,\n  SyntheticEvent,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\n\nimport { createSyntheticEvent } from '@/utils/create-synthetic-event';\nimport { useExpandedRef } from '@/utils/expand-ref';\nimport './accordion.scss';\n\nexport interface AccordionElement extends HTMLDivElement {\n  /**\n   *  Expand the accordion.\n   */\n  expand: () => void;\n  /**\n   *  Expand the accordion without triggering any event (onExpanded and onChange will not be triggered).\n   */\n  silentExpand: () => void;\n  /**\n   *  Collapse the accordion.\n   */\n  collapse: () => void;\n  /**\n   *  Collapse the accordion without triggering any event (onCollapse and onChange will not be triggered).\n   */\n  silentCollapse: () => void;\n  /**\n   *  Toggles the content of the accordion.\n   */\n  toggle: () => void;\n  /**\n   *  Toggles the accordion without triggering any event (onCollapse, onExpanded and onChange will not be triggered).\n   */\n  silentToggle: () => void;\n  /**\n   *  Current value of the expanded state of the accordion.\n   */\n  isExpanded: boolean;\n}\n\nexport interface AccordionProps extends ComponentProps<'div'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Accordion header title.\n   */\n  headingTitle?: ReactNode;\n  /**\n   * Accordion heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Accordion content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n}\n\nconst Accordion: FC<AccordionProps> = ({\n  ref = null,\n  children,\n  hasIcon,\n  leadingIcon,\n  leadingIconHover,\n  darkMode = false,\n  headingTitle,\n  'headingLevel': Component = 'h3',\n  className = '',\n  defaultExpanded,\n  'expanded': expandedFromProps,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  'aria-label': ariaLabel,\n  ...props\n}): ReactElement => {\n  const generatedId = useId();\n\n  const isControlled = typeof expandedFromProps != 'undefined';\n\n  const hasDefaultValue = typeof defaultExpanded != 'undefined';\n\n  const [internalExpandedValue, setInternalExpandedValue] = useState(hasDefaultValue ? stringToBoolean(defaultExpanded) : false);\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n\n  // Internally, we need to deal with some value. Depending on whether the component is controlled or not, that value comes from its props or from its internal state.\n  const expanded = isControlled ? stringToBoolean(expandedFromProps) : internalExpandedValue;\n\n  const [eventToTrigger, setEventToTrigger] = useState<{ name: 'expand' | 'collapse' | null }>({ name: null });\n\n  const expand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n\n    setEventToTrigger({ name: 'expand' });\n  };\n\n  const silentExpand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n  };\n\n  const collapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n\n    setEventToTrigger({ name: 'collapse' });\n  };\n\n  const silentCollapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n  };\n\n  const toggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n\n    if (expanded) {\n      setEventToTrigger({ name: 'collapse' });\n    }\n\n    if (!expanded) {\n      setEventToTrigger({ name: 'expand' });\n    }\n  };\n\n  const silentToggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const externalRef = useExpandedRef<AccordionElement>(\n    ref as React.RefObject<AccordionElement>,\n    innerRef,\n    {\n      isExpanded: expanded,\n      expand,\n      silentExpand,\n      collapse,\n      silentCollapse,\n      toggle,\n      silentToggle\n    } as AccordionElement,\n    [innerRef, expanded]\n  );\n\n  useEffect(() => {\n    if (eventToTrigger.name === 'expand') {\n      const expandedEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'expand');\n      onExpanded?.(expandedEvt);\n    }\n\n    if (eventToTrigger.name === 'collapse') {\n      const collapsedEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'collapse');\n      onCollapsed?.(collapsedEvt);\n    }\n\n    const changeEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'change');\n    onChange?.(changeEvt);\n  }, [eventToTrigger]);\n\n  const AccordionClassName = classNames('agora-accordion', className, {\n    'accordion-open': expanded,\n    'active-state': activeState === 'active',\n    'mobile': isMobile,\n    'dark-mode': stringToBoolean(darkMode)\n  });\n  const AccordionBodyClassName = classNames('accordion-body', { 'accordion-body-block': expanded });\n  const AccordionIconClassName = classNames('icon icon-chevron', { 'icon-chevron-flip': expanded });\n\n  const onClickHandler = () => {\n    toggle();\n    setActiveState('default');\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Space') {\n      setActiveState('active');\n    }\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Space') {\n      setActiveState('default');\n    }\n  };\n\n  const onMouseDownHandler = () => {\n    setActiveState('active');\n  };\n\n  const onMouseUpHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseLeaveHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseEnterHandler = () => {\n    setActiveState('hover');\n  };\n\n  return (\n    <div className={AccordionClassName} {...props} ref={innerRef}>\n      <Component className=\"flex justify-start items-center w-full\">\n        <button\n          aria-label={ariaLabel}\n          type=\"button\"\n          className=\"accordion-header\"\n          aria-expanded={expanded}\n          id={`agora-accordion-${generatedId}-control`}\n          aria-controls={`agora-accordion-${generatedId}-region`}\n          onClick={onClickHandler}\n          onKeyDown={onKeyDownHandler}\n          onKeyUp={onKeyUpHandler}\n          onMouseDown={onMouseDownHandler}\n          onMouseUp={onMouseUpHandler}\n          onMouseLeave={onMouseLeaveHandler}\n          onMouseEnter={onMouseEnterHandler}\n        >\n          <div className=\"accordion-header-button-wrapper\">\n            {stringToBoolean(hasIcon) && (leadingIcon || leadingIconHover) && (\n              <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? leadingIconHover} />\n                <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? leadingIcon} />\n                <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? leadingIconHover} />\n              </IconSet>\n            )}\n\n            {headingTitle && <span className=\"title\">{headingTitle}</span>}\n\n            <div className=\"icon-wrapper trailing\">\n              <Icon className={AccordionIconClassName} name=\"agora-line-chevron-down\" />\n            </div>\n          </div>\n        </button>\n      </Component>\n      <div\n        className={AccordionBodyClassName}\n        id={`agora-accordion-${generatedId}-region`}\n        role=\"region\"\n        aria-labelledby={`agora-accordion-${generatedId}-control`}\n      >\n        <div className=\"children-wrapper\">{children}</div>\n      </div>\n    </div>\n  );\n};\n\nexport { Accordion };\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  createRef,\n  FC,\n  isValidElement,\n  ReactElement,\n  RefObject,\n  SyntheticEvent,\n  useId,\n  useMemo\n} from 'react';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Accordion, AccordionElement, AccordionProps } from '@/components/accordion';\nimport './accordion-group.scss';\n\nexport interface AccordionGroupProps extends ComponentProps<'ul'> {\n  /**\n   * List of accordion components to use as children of the group.\n   */\n  children?: ReactElement<AccordionProps> | Array<ReactElement<AccordionProps>>;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst AccordionGroup: FC<AccordionGroupProps> = ({ className = '', children, darkMode = false, ...props }) => {\n  const generatedAccordionGroupId = useId();\n\n  const accordionsRefMap = useMemo(() => new Map<string, RefObject<AccordionElement | null>>(), []);\n\n  const updateRefMap = (id: string) => {\n    accordionsRefMap.forEach((acc, key) => {\n      if (key !== id) {\n        acc.current?.silentCollapse();\n      }\n    });\n  };\n\n  const renderAccordions = Children.toArray(children).map((child, index) => {\n    if (!isValidElement<AccordionProps>(child)) {\n      return null;\n    }\n\n    const id = `accordion-group-${generatedAccordionGroupId}-accordion-${index}`;\n    const newRef = createRef<AccordionElement>();\n    accordionsRefMap.set(id, newRef);\n\n    const onExpanded = (evt: SyntheticEvent<AccordionElement | undefined>) => {\n      updateRefMap(id);\n      child.props.onExpanded?.(evt);\n    };\n\n    return (\n      <li key={id}>\n        <Accordion {...child.props} ref={newRef} onExpanded={onExpanded} darkMode={darkMode} />\n      </li>\n    );\n  });\n\n  const AccordionGroupClassName = classNames('agora-accordion-group', 'mt-0 p-0 w-full', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  return (\n    <ul className={AccordionGroupClassName} {...props}>\n      {renderAccordions}\n    </ul>\n  );\n};\n\nexport { AccordionGroup };\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, MouseEvent, ReactElement, ReactNode, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport './anchor.scss';\n\n/**\n * The available variants of the anchors. This variants will define the background and border color of the anchors.\n */\nexport type AnchorVariant = 'primary' | 'informative' | 'neutral' | 'success' | 'warning' | 'danger';\n\n/**\n * The available anchor appearances. Defines the anchor shape.\n */\nexport type AnchorAppearance = 'link' | 'text';\n\nexport interface AnchorProps extends ComponentProps<'a'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The anchor appearance. Define the anchor shape.\n   */\n  appearance?: AnchorAppearance;\n  /**\n   * The variant of the anchor. This variants will define the background and border color of the given Anchor.\n   */\n  variant?: AnchorVariant;\n  /**\n   * Defines if the anchor should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the anchor uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if anchor is inline text or not. An inline element does not start on a new line and takes up as much width as necessary. See https://www.w3schools.com/html/html_blocks.asp.\n   */\n  inline?: BooleanProp;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst Anchor: FC<AnchorProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'text',\n  variant = 'primary',\n  fullWidth = false,\n  hasIcon = false,\n  iconOnly = false,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  children,\n  className = '',\n  inline = false,\n  ...props\n}): ReactElement => {\n  const innerRef = useRef<HTMLAnchorElement>(null);\n  useExpandedRef<HTMLAnchorElement>(ref, innerRef, {} as HTMLAnchorElement, [innerRef.current]);\n\n  const anchorClassName = classNames(\n    `agora-anchor`,\n\n    `agora-anchor-${appearance}-${variant}`,\n\n    { 'agora-anchor-full': fullWidth },\n\n    { 'inline-flex items-center': !props.hidden },\n\n    { 'justify-center min-h-[44px] min-w-[44px] py-8': !stringToBoolean(inline) },\n\n    { 'justify-start': stringToBoolean(inline) },\n\n    { 'agora-anchor-with-icon': stringToBoolean(hasIcon) || stringToBoolean(iconOnly) },\n\n    { 'is-icon-only': stringToBoolean(iconOnly) },\n\n    { 'dark-mode': stringToBoolean(darkMode) },\n\n    className\n  );\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const handleClick = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n\n    props.onClick?.(evt);\n  };\n\n  const handleMouseEnter = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('hover');\n    }\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const handleMouseLeave = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n\n    props.onMouseLeave?.(evt);\n  };\n\n  const handleMouseDown = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('active');\n    }\n\n    props.onMouseDown?.(evt);\n  };\n\n  const handleMouseUp = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onBlur = () => {\n    innerRef.current?.classList.remove('active');\n    setActiveState('default');\n  };\n\n  return (\n    <a\n      {...props}\n      className={anchorClassName}\n      ref={innerRef}\n      onClick={handleClick}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      onMouseDown={handleMouseDown}\n      onMouseUp={handleMouseUp}\n      onBlur={onBlur}\n      onKeyDown={props.onKeyDown}\n    >\n      {hasIcon && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} />\n        </IconSet>\n      )}\n\n      {!iconOnly && children && <span className=\"children-wrapper\">{children}</span>}\n\n      {hasIcon && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} />\n        </IconSet>\n      )}\n    </a>\n  );\n};\n\nexport { Anchor };\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  FC,\n  FocusEvent,\n  FocusEventHandler,\n  HtmlHTMLAttributes,\n  isValidElement,\n  MouseEvent,\n  MouseEventHandler,\n  ReactNode,\n  RefObject,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './tooltip.scss';\n\nconst TOOLTIP_CHANGE_EVENT_NAME = 'agora-ds-tooltip-change';\n\ninterface EnrichedChildren {\n  'ref': RefObject<HTMLElement | null>;\n  'onMouseEnter': MouseEventHandler;\n  'onMouseLeave': MouseEventHandler;\n  'onFocus': FocusEventHandler;\n  'onBlur': FocusEventHandler;\n  'children'?: ReactNode;\n  'aria-describedby': string;\n}\n\n/**\n * The available variants of the Tooltip. This variants will define the background of the Tooltip.\n */\nexport type TooltipVariant = 'light' | 'dark' | 'info';\n/**\n * The available positions of the Tooltip. This positions will define the position of the Tooltip.\n */\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n/**\n * The available alignments of the Tooltip. This alignments will define the alignment of the Tooltip.\n */\nexport type TooltipAlignment = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'title'> {\n  /**\n   * The variant of the Tooltip.\n   */\n  variant?: TooltipVariant;\n  /**\n   * The position of the Tooltip.\n   */\n  position?: TooltipPosition;\n  /**\n   * The alignment of the Tooltip.\n   */\n  alignment?: TooltipAlignment;\n  /**\n   * The title of the Tooltip.\n   */\n  title?: ReactNode;\n  /**\n   * If the Tooltip has a title.\n   */\n  hasTitle?: BooleanProp;\n  /**\n   * The description of the Tooltip.\n   */\n  description: ReactNode;\n  /**\n   * The element where the tooltip is attached to.\n   */\n  children?: ReactNode;\n}\n\nexport const Tooltip: FC<TooltipProps> = ({\n  hasTitle,\n  variant = 'dark',\n  position = 'top',\n  alignment = 'center',\n  title,\n  description,\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const ref = useRef<HTMLElement>(null);\n\n  const [top, setTop] = useState(0);\n  const [left, setLeft] = useState(0);\n  const [width, setWidth] = useState(0);\n  const [height, setHeight] = useState(0);\n\n  const setDimensions = useCallback(() => {\n    if (ref.current) {\n      const rect = ref.current?.getBoundingClientRect();\n\n      if (rect) {\n        setTop(rect.top + window.scrollY);\n        setLeft(rect.left + window.scrollX);\n        setWidth(rect.width);\n        setHeight(rect.height);\n      }\n    }\n  }, []);\n\n  const propsClone = useMemo(() => ({ ...props }), [props]);\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const TooltipContainerClassName = classNames('tooltip-container absolute z-tooltip', props.className);\n\n  const TooltipClassName = classNames('tooltip', {\n    [`tooltip--${variant}`]: variant,\n    [`tooltip--${position}--${alignment}`]: position && alignment\n  });\n\n  const [visibility, setVisibility] = useState(false);\n\n  const showTooltip = () => {\n    setVisibility(true);\n    const event = new CustomEvent<string | undefined>(TOOLTIP_CHANGE_EVENT_NAME, { detail: propsClone.id });\n    document.dispatchEvent(event);\n  };\n\n  const hideTooltip = () => {\n    setVisibility(false);\n  };\n\n  const handleEscapeKey = (event: KeyboardEvent) => {\n    if (event.key === 'Escape') {\n      setVisibility(false);\n    }\n  };\n\n  const handleTooltipMouseLeave = () => {\n    hideTooltip();\n  };\n\n  useEffect(() => {\n    document.addEventListener('keydown', handleEscapeKey);\n\n    const handleTooltipChange = (customEventArgs: CustomEvent) => {\n      if (customEventArgs.detail !== propsClone.id) {\n        setVisibility(false);\n      }\n    };\n\n    document.addEventListener(TOOLTIP_CHANGE_EVENT_NAME, handleTooltipChange as EventListener);\n\n    return () => {\n      document.removeEventListener('keydown', handleEscapeKey);\n      document.removeEventListener(TOOLTIP_CHANGE_EVENT_NAME, handleTooltipChange as EventListener);\n    };\n  }, [propsClone.id]);\n\n  const parsedChildren = Children.map(children, (child) => {\n    if (!isValidElement<EnrichedChildren>(child)) {\n      return child;\n    }\n\n    const onMouseEnter = (evt: MouseEvent) => {\n      setDimensions();\n\n      showTooltip();\n\n      child.props.onMouseEnter?.(evt);\n    };\n\n    const onMouseLeave = (evt: MouseEvent) => {\n      const relatedElement = evt.relatedTarget as HTMLElement;\n\n      const isOutsideTooltipArea =\n        relatedElement && !relatedElement.classList.contains('tooltip') && !relatedElement.classList.contains('tooltip-extra-hover-area');\n\n      if (isOutsideTooltipArea) {\n        hideTooltip();\n      }\n\n      child.props.onMouseLeave?.(evt);\n    };\n\n    const onFocus = (evt: FocusEvent) => {\n      setDimensions();\n\n      showTooltip();\n\n      child.props.onFocus?.(evt);\n    };\n\n    const onBlur = (evt: FocusEvent) => {\n      hideTooltip();\n\n      child.props.onBlur?.(evt);\n    };\n\n    return cloneElement<EnrichedChildren>(child, { ref, onMouseEnter, onMouseLeave, onFocus, onBlur, 'aria-describedby': propsClone.id });\n  });\n\n  useEffect(() => {\n    const cb = () => {\n      setDimensions();\n    };\n\n    document.addEventListener('scroll', cb);\n\n    return () => {\n      document.removeEventListener('scroll', cb);\n    };\n  }, [setDimensions]);\n\n  const topPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '-10px',\n        left: '0px',\n        transform: 'translateY(-100%)'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: '-10px',\n        left: `${width / 2}px`,\n        transform: 'translateY(-100%) translateX(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: '-10px',\n        left: `${width}px`,\n        transform: 'translateY(-100%) translateX(-100%)'\n      };\n    }\n  }, [alignment, width]);\n\n  const bottomPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: `${height + 10}px`,\n        left: '0px',\n        transform: 'none'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height + 10}px`,\n        left: `${width / 2}px`,\n        transform: 'translateX(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height + 10}px`,\n        left: `${width}px`,\n        transform: 'translateX(-100%)'\n      };\n    }\n  }, [alignment, height, width]);\n\n  const leftPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '0px',\n        left: '-10px',\n        transform: 'translateX(-100%)'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height / 2}px`,\n        left: '-10px',\n        transform: 'translateX(-100%) translateY(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height}px`,\n        left: '-10px',\n        transform: 'translateX(-100%) translateY(-100%)'\n      };\n    }\n  }, [alignment, height]);\n\n  const rightPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '0px',\n        left: `${width + 10}px`,\n        transform: 'none'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height / 2}px`,\n        left: `${width + 10}px`,\n        transform: 'translateY(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height}px`,\n        left: `${width + 10}px`,\n        transform: 'translateY(-100%)'\n      };\n    }\n  }, [alignment, height, width]);\n\n  const tooltipPosition = useMemo(() => {\n    switch (position) {\n      case 'top':\n        return topPositioning;\n      case 'bottom':\n        return bottomPositioning;\n      case 'left':\n        return leftPositioning;\n      case 'right':\n        return rightPositioning;\n    }\n  }, [position, topPositioning, bottomPositioning, leftPositioning, rightPositioning]);\n\n  const TooltipContent = useMemo(() => {\n    return (\n      <div\n        className={TooltipContainerClassName}\n        style={{\n          top: `${top}px`,\n          left: `${left}px`\n        }}\n        onMouseLeave={handleTooltipMouseLeave}\n        role=\"none\"\n      >\n        <div className=\"relative w-full h-full\">\n          <div {...propsClone} style={{ ...tooltipPosition }} id={propsClone.id} className={TooltipClassName} role=\"tooltip\">\n            {stringToBoolean(hasTitle) && <div className=\"title\">{title}</div>}\n            <p className=\"description\">{description}</p>\n            <div className=\"tooltip-extra-hover-area\" role=\"none\" />\n          </div>\n        </div>\n      </div>\n    );\n  }, [TooltipClassName, description, hasTitle, title, propsClone, tooltipPosition, top, left]);\n\n  const memoPortal = useMemo(() => {\n    if (visibility) {\n      return createPortal(TooltipContent, document.body);\n    }\n    return null;\n  }, [visibility, TooltipContent]);\n\n  return (\n    <>\n      {parsedChildren}\n      {memoPortal}\n    </>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useImperativeHandle, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\n\nimport './button.scss';\n\n/**\n * The available variants of the button. This variants will define the background and border color of the button.\n */\nexport type ButtonVariant = 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'informative';\n\n/**\n * The available button appearances. Defines the button shape.\n */\nexport type ButtonAppearance = 'solid' | 'outline' | 'link';\n\nexport interface ButtonProps extends ComponentProps<'button'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  appearance?: ButtonAppearance;\n  /**\n   * The variant of the button. This variants will define the background and border color of the given Button.\n   */\n  variant?: ButtonVariant;\n  /**\n   * Defines if the button should be fluid.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Data attributes.\n   * Allow when implemented interface add data-* attribute.\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst Button: FC<ButtonProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'solid',\n  variant = 'primary',\n  fullWidth = false,\n  hasIcon = false,\n  iconOnly = false,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  children,\n  className = '',\n  ...props\n}) => {\n  const innerButtonRef = useRef<HTMLButtonElement | null>(null);\n  useImperativeHandle(ref, () => innerButtonRef.current as HTMLButtonElement);\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const buttonClassName = classNames(\n    { 'flex items-center justify-center': !props.hidden },\n\n    `agora-btn ${fullWidth ? 'agora-btn-full' : ''} agora-btn-${appearance}-${variant}`,\n\n    {\n      [`agora-btn-with-icon`]: stringToBoolean(hasIcon),\n      'is-icon-only': stringToBoolean(iconOnly)\n    },\n\n    { darkMode: stringToBoolean(darkMode) },\n    className\n  );\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      innerButtonRef.current?.classList.add('active');\n\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      innerButtonRef.current?.classList.remove('active');\n      setActiveState('default');\n\n      innerButtonRef.current?.setAttribute('data-custom-triggered-click', 'true');\n      innerButtonRef.current?.click();\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    innerButtonRef.current?.classList.remove('active');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseDownHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n    innerButtonRef.current?.classList.add('active');\n    props.onMouseDown?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseUpHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    innerButtonRef.current?.classList.remove('active');\n    props.onMouseUp?.(evt);\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    //  TRUE MOUSE CLICK OR TOUCH CLICK\n    if (evt.detail > 0) {\n      setActiveState(isTouchDevice ? 'default' : 'hover');\n      props.onClick?.(evt);\n      return;\n    }\n\n    //  CLICK FROM KEYBOARD\n\n    //  NEED TO CHECK THIS ATTRIBUTE BECAUSE FIREFOX DOES NOT TRIGGER CLICK EVENTS WHENEVER THE ENTER/SPACE/NUMPADENTER KEY IS PRESSED.\n    //  TO FIX THAT INCONSISTENCY, WE ADD A CUSTOM ATTRIBUTE TO SIGNAL THE ARTIFICIAL CLICK TRIGGER AND PREVENT THE CHROMIUM BASED BROWSERS OF DUPLICATE CLICK EVENTS.\n    //  ON KEYUP THE CLICK EVENT IS TRIGGERED AND WILL BE ADDED THE CUSTOM ATTRIBUTE. THEN, IF THE BROWSER TRIGGERED ANOTHER CLICK, THE HANDLER WILL NOT FIND THE CUSTOM ATTRIBUTE AND WILL NOT TRIGGER A DUPLICATED EVENT.\n    const shouldTriggerClick = innerButtonRef.current?.getAttribute('data-custom-triggered-click') === 'true';\n    innerButtonRef.current?.removeAttribute('data-custom-triggered-click');\n\n    if (!shouldTriggerClick) {\n      evt.preventDefault();\n      return;\n    }\n\n    setActiveState('default');\n    props.onClick?.(evt);\n  };\n\n  return (\n    <button\n      {...props}\n      className={buttonClassName}\n      ref={innerButtonRef}\n      onClick={onClickHandler}\n      onKeyDown={onKeyDownHandler}\n      onKeyUp={onKeyUpHandler}\n      onMouseDown={onMouseDownHandler}\n      onMouseUp={onMouseUpHandler}\n      onMouseLeave={onMouseLeaveHandler}\n      onMouseEnter={onMouseEnterHandler}\n    >\n      {hasIcon && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} />\n        </IconSet>\n      )}\n\n      {!iconOnly && children && <span className=\"children-wrapper\">{children}</span>}\n\n      {hasIcon && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} />\n        </IconSet>\n      )}\n    </button>\n  );\n};\n\nexport { Button };\n","import React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nimport { Button } from '@/components/button';\n\nexport interface InteractiveAvatarProps extends ComponentProps<'div'> {\n  alt?: string;\n  className?: string;\n  onActivate?: () => void;\n  children?: ReactNode;\n}\n\nconst InteractiveAvatar: FC<InteractiveAvatarProps> = ({\n  ref = null,\n  className,\n  onActivate,\n  children,\n  alt,\n  'aria-haspopup': ariaHasPopup,\n  'aria-expanded': ariaExpanded,\n  'aria-current': ariaCurrent,\n  'aria-label': ariaLabel,\n  role,\n  tabIndex,\n  ...props\n}): ReactElement => {\n  const onClickHandler = () => {\n    onActivate?.();\n  };\n\n  return (\n    <div ref={ref} {...props} className={className}>\n      <Button\n        {...(ariaHasPopup !== undefined ? { 'aria-haspopup': ariaHasPopup } : {})}\n        {...(ariaExpanded !== undefined ? { 'aria-expanded': ariaExpanded } : {})}\n        {...(ariaCurrent !== undefined ? { 'aria-current': ariaCurrent } : {})}\n        {...(role !== undefined ? { role: role.toString() } : {})}\n        {...(tabIndex !== undefined ? { tabIndex: tabIndex } : {})}\n        aria-label={alt ?? ariaLabel}\n        type=\"button\"\n        className={className}\n        onClick={onClickHandler}\n      >\n        {children}\n      </Button>\n    </div>\n  );\n};\n\nexport { InteractiveAvatar };\n","import React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nexport interface NonInteractiveAvatarProps extends ComponentProps<'div'> {\n  alt?: string;\n  className?: string;\n  children?: ReactNode;\n}\n\nconst NonInteractiveAvatar: FC<NonInteractiveAvatarProps> = ({ ref = null, className, children, alt, ...props }): ReactElement => {\n  return (\n    <div ref={ref} {...props} aria-label={alt} className={className}>\n      {children}\n    </div>\n  );\n};\n\nexport { NonInteractiveAvatar };\n","import React, { ComponentProps, FC, ReactElement, ReactNode, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, IconName } from '@/components/icon';\nimport { Tooltip, TooltipAlignment, TooltipPosition } from '@/components/tooltip';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { InteractiveAvatar } from './interactive-avatar';\nimport { NonInteractiveAvatar } from './non-interactive-avatar';\n\nimport './avatar.scss';\n\n/**\n *  The available avatar types. Each of them define the appearance of the avatar image.\n */\nexport type AvatarType = 'image' | 'icon' | 'initials' | 'empty';\n/**\n * The available badge positions. Each of them defines the location of the badge on the avatar.\n */\nexport type AvatarBadgePosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface AvatarProps extends ComponentProps<'div'> {\n  /**\n   *  Defines the appearance of the avatar.\n   */\n  avatarType?: AvatarType;\n  /**\n   *  Defines the avatar source path. Depending on the selected avatar type the source requires:\n   *    1. Image - Path to an external image URL. In case an invalid path was given, alt text will be displayed.\n   *    2. Icon - Icon name that exists in AgoraDS. In case an invalid icon name was given, the default Agora icon will be displayed.\n   *    3. Initials - First two letters of a given text. It is possible to insert more than two letters, but it will always show the first two and it will capitalize them.\n   *\n   *    If no source was given or if the user inserts \"no-icon\" in the field for any of the available avatar types, the default Agora image will be displayed.\n   */\n  srcPath?: IconName;\n  /**\n   *  Avatar information, such as user name or other, that is only required in interactive avatars.\n   */\n  information?: ReactNode;\n  /**\n   *  Defines an alternative text of the avatar image.\n   */\n  alt?: string;\n  /**\n   *  The flag to place a badge on the avatar.\n   */\n  hasBadge?: BooleanProp;\n  /**\n   *  Defines the avatar badge position.\n   */\n  badgePosition?: AvatarBadgePosition;\n  /**\n   *  Defines the position of the avatar tooltip.\n   */\n  tooltipPosition?: TooltipPosition;\n  /**\n   *  The defines the align the avatar tooltip alignment.\n   */\n  tooltipAlignment?: TooltipAlignment;\n  /**\n   *  Makes the avatar interactive. An interactive avatar can be focused by clicking on it, or pressing Space, Enter or NumpadEnter.\n   */\n  interactive?: BooleanProp;\n  /**\n   *  Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Callback to run whenever the avatar is activated.\n   */\n  onActivate?: () => void;\n}\n\nconst Avatar: FC<AvatarProps> = ({\n  ref = null,\n  className,\n  avatarType = 'icon',\n  srcPath,\n  hasBadge,\n  information,\n  badgePosition = 'top-right',\n  tooltipPosition = 'bottom',\n  tooltipAlignment = 'center',\n  interactive,\n  darkMode,\n  onActivate,\n  ...props\n}): ReactElement => {\n  const containerClasses = classNames('agora-avatar', className, {\n    interactive,\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const memoContent = useMemo(() => {\n    const parsedAvatarType = srcPath ? avatarType : 'icon';\n\n    const avatarClasses = classNames(`avatar avatar-${parsedAvatarType}`);\n\n    const badgeClasses = classNames(className, {\n      [`badge badge-${badgePosition}`]: stringToBoolean(hasBadge)\n    });\n\n    if (avatarType === 'initials' && srcPath && srcPath.trim().length !== 0) {\n      return (\n        <>\n          <div className={avatarClasses}>{srcPath.slice(0, 2)}</div>\n          {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n        </>\n      );\n    }\n\n    if (avatarType === 'empty') {\n      return (\n        <>\n          <Icon name=\"./hand.png\" className={avatarClasses} aria-hidden />\n          {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n        </>\n      );\n    }\n\n    return (\n      <>\n        <Icon name={srcPath} className={avatarClasses} aria-hidden />\n        {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n      </>\n    );\n  }, [className, avatarType, srcPath, hasBadge, badgePosition]);\n\n  if (stringToBoolean(interactive)) {\n    return (\n      <div className=\"agora-avatar-container\" ref={ref}>\n        <Tooltip\n          alignment={tooltipAlignment}\n          className=\"avatar-tooltip\"\n          description={information}\n          position={tooltipPosition}\n          variant={stringToBoolean(darkMode) ? 'dark' : 'light'}\n        >\n          <InteractiveAvatar {...props} className={containerClasses} onActivate={onActivate}>\n            {memoContent}\n          </InteractiveAvatar>\n        </Tooltip>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"agora-avatar-container\" ref={ref}>\n      <NonInteractiveAvatar {...props} className={containerClasses}>\n        {memoContent}\n      </NonInteractiveAvatar>\n    </div>\n  );\n};\n\nexport { Avatar };\n","import { createContext, useContext } from 'react';\nimport { DropdownType } from '../dropdown-type';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSectionProps } from './internal-dropdown-section';\n\nexport interface InternalDropdownContextProps {\n  type: DropdownType;\n  sections: InternalDropdownSectionProps[];\n  options: InternalDropdownOptionProps[];\n\n  visibility?: boolean;\n  show: () => void;\n  hide: () => void;\n\n  first: () => void;\n  prev: () => void;\n  next: () => void;\n  last: () => void;\n\n  selectOption: (props: InternalDropdownOptionProps) => void;\n  selectSectionOptions: (name: string) => void;\n  isAllSectionOptionsSelected: (name: string) => boolean;\n\n  hasSectionOptionsToInteract: (name: string) => boolean;\n  selectAll: () => void;\n  isAllSelected: boolean;\n  isAllDisabled: boolean;\n\n  applyFilter: (filter: string) => void;\n  activeFilter: string;\n  resetFilter: () => void;\n\n  lastSelectedOption?: string;\n  setLastSelectedOption: (optionId: string | undefined) => void;\n}\n\nexport const InternalDropdownContext = createContext<InternalDropdownContextProps>({} as InternalDropdownContextProps);\n\nexport const useInternalDropdownContext = (): InternalDropdownContextProps => {\n  return useContext(InternalDropdownContext);\n};\n","import { Icon } from '@/components/icon';\nimport { useDebounceHook } from '@/utils';\nimport React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent,\n  RefObject,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-filter-section.scss';\n\nexport interface InternalDropdownFilterSectionRef extends RefObject<HTMLInputElement> {\n  filterElem: HTMLLIElement | null;\n  resetFilter: () => void;\n}\n\nexport interface InternalDropdownFilterSectionProps extends ComponentProps<'input'> {\n  debounceTimeout?: number;\n}\n\nconst InternalDropdownFilterSection: FC<InternalDropdownFilterSectionProps> = ({ debounceTimeout = 300, ref = null, ...props }) => {\n  const dropdownContext = useInternalDropdownContext();\n  const visibility = dropdownContext.visibility;\n  const applyFilter = dropdownContext.applyFilter;\n  const hide = dropdownContext.hide;\n  const next = dropdownContext.next;\n\n  const [currentFilter, setCurrentFilter] = useState('');\n\n  const debouncedApplyFilter = useDebounceHook(applyFilter, debounceTimeout);\n\n  const onInputChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentFilter(evt.target.value);\n  };\n\n  useEffect(() => {\n    debouncedApplyFilter.setArgs(currentFilter.toLowerCase());\n  }, [currentFilter, debouncedApplyFilter]);\n\n  const resetFilter = () => {\n    setCurrentFilter('');\n  };\n\n  const inputRef = useRef<HTMLInputElement>(null);\n  const innerRef = useRef<HTMLLIElement>(null);\n  useImperativeHandle(ref, () => {\n    return {\n      current: inputRef.current,\n      filterElem: innerRef.current,\n      resetFilter\n    } as InternalDropdownFilterSectionRef & HTMLInputElement;\n  }, [innerRef]);\n\n  const onKeyDownCaptureHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const code = evt.code;\n\n    if (code === 'Tab') {\n      evt.preventDefault();\n      evt.stopPropagation();\n\n      hide();\n    }\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const code = evt.code;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'ArrowDown':\n        next();\n        break;\n    }\n  };\n\n  const onMouseDownCaptureHandler = (evt: MouseEvent<SVGElement | HTMLImageElement>) => {\n    evt.preventDefault();\n    inputRef.current?.focus();\n  };\n\n  useEffect(() => {\n    if (innerRef.current && visibility) {\n      const { height } = innerRef.current.getBoundingClientRect();\n      innerRef.current.setAttribute('data-filter-section-height', `${height}`);\n    }\n  }, [visibility]);\n\n  return (\n    <ul className=\"agora-dropdown-filter-section\" role=\"presentation\">\n      <li className=\"agora-dropdown-filter-section-item\" ref={innerRef} role=\"presentation\">\n        <input\n          ref={inputRef}\n          {...props}\n          className={'input-filter'}\n          type=\"text\"\n          value={currentFilter}\n          onChange={onInputChange}\n          onKeyDownCapture={onKeyDownCaptureHandler}\n          onKeyDown={onKeyDownHandler}\n        />\n        <Icon className=\"input-icon\" name=\"agora-line-search\" aria-hidden onMouseDownCapture={onMouseDownCaptureHandler} />\n      </li>\n    </ul>\n  );\n};\n\nexport { InternalDropdownFilterSection };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport './internal-dropdown-no-results.scss';\n\nexport interface InternalNoResultsProps extends ComponentPropsWithoutRef<'div'> {\n  label: ReactNode;\n}\n\nexport const InternalNoResults: FC<InternalNoResultsProps> = ({ className, label, ...props }) => {\n  const classes = classNames('agora-dropdown-no-results', className);\n\n  return (\n    <div {...props} className={classes}>\n      <div className=\"label\">{label}</div>\n    </div>\n  );\n};\n","import { Icon } from '@/components/icon';\nimport { BooleanProp, IconPosition } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useState } from 'react';\nimport { DropdownType } from '../dropdown-type';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-option.scss';\n\nconst OptionComponent: FC<{ type: DropdownType; hasIcon?: BooleanProp; icon?: string; children: ReactNode }> = ({\n  type,\n  icon,\n  hasIcon,\n  children\n}) => {\n  if (type === 'checkbox') {\n    return (\n      <span className=\"flex gap-8 w-full\">\n        <Icon className=\"checkbox-mark\" name=\"agora-line-check\" aria-hidden />\n        <span className=\"option-content\">{children}</span>\n        {stringToBoolean(hasIcon) && <Icon className=\"option-icon\" name={icon} aria-hidden />}\n      </span>\n    );\n  }\n\n  if (!stringToBoolean(hasIcon)) {\n    return <span className=\"option-content\">{children}</span>;\n  }\n\n  return (\n    <>\n      <Icon className=\"option-icon\" name={icon} aria-hidden />\n      <span className=\"option-content\">{children}</span>\n    </>\n  );\n};\n\nexport interface InternalDropdownOptionProps extends ComponentProps<'li'> {\n  className?: string;\n  name?: string;\n  value: string;\n  children: ReactNode;\n  hasIcon?: BooleanProp;\n  icon?: string;\n  iconPosition?: IconPosition;\n  disabled?: BooleanProp;\n  selected?: BooleanProp;\n  filtered?: BooleanProp;\n  sectionOptionId?: string;\n  onRangeSelection?: (optionId: string, isShiftClick: boolean) => void;\n}\n\nconst InternalDropdownOption: FC<InternalDropdownOptionProps> = ({\n  ref = null,\n  className,\n  disabled,\n  selected,\n  filtered,\n  hasIcon,\n  icon,\n  iconPosition = 'leading',\n  children,\n  name,\n  value,\n  onRangeSelection,\n  sectionOptionId = '',\n  ...props\n}) => {\n  const parsedIconName = icon?.replace('solid', 'line');\n  const [iconName, setIconName] = useState(parsedIconName ?? '');\n\n  const dropdownContext = useInternalDropdownContext();\n  const selectOption = dropdownContext.selectOption;\n  const options = dropdownContext.options;\n  const last = dropdownContext.last;\n  const first = dropdownContext.first;\n  const next = dropdownContext.next;\n  const prev = dropdownContext.prev;\n  const type = dropdownContext.type;\n  const hide = dropdownContext.hide;\n\n  const optionWrapperClasses = classNames(\n    'agora-dropdown-option',\n    className,\n\n    { [type]: type },\n    { disabled: stringToBoolean(disabled) },\n    { selected: stringToBoolean(selected) },\n    { filtered: stringToBoolean(filtered) },\n    {\n      'leading-icon': stringToBoolean(hasIcon) && iconPosition === 'leading',\n      'trailing-icon': stringToBoolean(hasIcon) && iconPosition === 'trailing'\n    }\n  );\n\n  const select = () => {\n    const option = options.find((opt) => {\n      return opt.value === value && opt.name === name;\n    });\n\n    if (option) {\n      selectOption(option);\n    }\n  };\n\n  const handleRangeSelectionAndSelect = (isShiftClick: boolean) => {\n    // For checkbox with shift+click, handle range selection\n    if (type === 'checkbox' && isShiftClick && onRangeSelection && sectionOptionId) {\n      onRangeSelection(sectionOptionId, isShiftClick);\n      return;\n    }\n\n    // For all other cases, perform regular selection\n    select();\n\n    // Update last selected option for future range selections\n    if (onRangeSelection && sectionOptionId) {\n      onRangeSelection(sectionOptionId, false);\n    }\n  };\n\n  const onKeyDownCaptureHandler = (evt: KeyboardEvent<HTMLLIElement>) => {\n    const code = evt.code;\n\n    //  SPACE, UP AND DOWN TRIGGERS SCROLLING BEHAVIOUR. ITS MUST BE HANDLED IN KEYDOWN CAPTURE TO PREVENT IT.\n    if (code === 'Space' || code === 'Enter' || code === 'NumpadEnter') {\n      evt.stopPropagation();\n      evt.preventDefault();\n      handleRangeSelectionAndSelect(evt.shiftKey);\n    }\n\n    if (code === 'Tab') {\n      evt.stopPropagation();\n      evt.preventDefault();\n\n      hide();\n    }\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLLIElement>) => {\n    const { code } = evt;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'ArrowUp':\n        prev();\n        break;\n      case 'ArrowDown':\n        next();\n        break;\n      case 'Home':\n        first();\n        break;\n      case 'End':\n        last();\n        break;\n    }\n  };\n\n  const onMouseDownCapture = (evt: MouseEvent<HTMLLIElement>) => {\n    if (disabled) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const clickHandler = (evt: MouseEvent<HTMLLIElement>) => {\n    if (disabled) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      return;\n    }\n\n    handleRangeSelectionAndSelect(evt.shiftKey);\n  };\n\n  const applySolidIcon = () => {\n    if (!disabled) {\n      setIconName((lastIconName) => lastIconName.replace('line', 'solid'));\n    }\n  };\n\n  const applyLineIcon = () => {\n    if (!disabled) {\n      setIconName((lastIconName) => lastIconName.replace('solid', 'line'));\n    }\n  };\n\n  return (\n    <li\n      ref={ref}\n      className={optionWrapperClasses}\n      role=\"option\"\n      tabIndex={disabled ? -1 : 0}\n      aria-selected={stringToBoolean(selected)}\n      onKeyDown={onKeyDownHandler}\n      onKeyDownCapture={onKeyDownCaptureHandler}\n      onMouseDownCapture={onMouseDownCapture}\n      onClick={clickHandler}\n      onMouseEnter={applySolidIcon}\n      onMouseMove={applySolidIcon}\n      onMouseLeave={applyLineIcon}\n      data-section-option-id={sectionOptionId}\n      {...props}\n    >\n      <OptionComponent type={type} hasIcon={stringToBoolean(hasIcon)} icon={iconName}>\n        {children}\n      </OptionComponent>\n    </li>\n  );\n};\n\nexport { InternalDropdownOption };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { createRef, FC, ReactElement, RefObject, useEffect, useMemo, useRef } from 'react';\nimport { InternalDropdownOption, InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\n\nexport interface InternalDropdownSectionProps {\n  className?: string;\n  name: string;\n  label?: string;\n  hideLabel: BooleanProp;\n  children: ReactElement<InternalDropdownOptionProps> | ReactElement<InternalDropdownOptionProps>[];\n}\n\nexport const InternalDropdownSection: FC<InternalDropdownSectionProps> = ({ className, name, label = '', hideLabel }) => {\n  const dropdownContext = useInternalDropdownContext();\n  const options = dropdownContext.options;\n  const type = dropdownContext.type;\n  const visibility = dropdownContext.visibility;\n  const lastSelectedOption = dropdownContext.lastSelectedOption;\n  const setLastSelectedOption = dropdownContext.setLastSelectedOption;\n\n  const optionsRefMap = useMemo(() => new Map<string, RefObject<HTMLLIElement | null>>(), []);\n  const sectionNameRef = useRef<HTMLLIElement>(null);\n\n  const sectionClassNames = classNames('agora-dropdown-section', className);\n\n  const handleRangeSelection = (currentOptionId: string, isShiftClick: boolean) => {\n    // Always update the last selected option for non-shift clicks\n    if (!isShiftClick) {\n      setLastSelectedOption(currentOptionId);\n      return;\n    }\n\n    // Handle range selection only for checkbox type with shift+click\n    if (type !== 'checkbox' || !lastSelectedOption) {\n      setLastSelectedOption(currentOptionId);\n      return;\n    }\n\n    const sectionOptions = options.filter((opt) => opt.name === name);\n    const lastIndex = sectionOptions.findIndex((opt) => `${name}-${type}-${opt.value}` === lastSelectedOption);\n    const currentIndex = sectionOptions.findIndex((opt) => `${name}-${type}-${opt.value}` === currentOptionId);\n\n    if (lastIndex === -1 || currentIndex === -1) {\n      setLastSelectedOption(currentOptionId);\n      return;\n    }\n\n    const startIndex = Math.min(lastIndex, currentIndex);\n    const endIndex = Math.max(lastIndex, currentIndex);\n\n    // Get the current option to determine if we're selecting or deselecting\n    const currentOption = sectionOptions[currentIndex];\n    const shouldSelect = !currentOption.selected;\n\n    // Select/deselect all options in the range\n    for (let i = startIndex; i <= endIndex; i++) {\n      const option = sectionOptions[i];\n\n      // Only change selection if it's different from desired state\n      if (option.selected !== shouldSelect) {\n        dropdownContext.selectOption(option);\n      }\n    }\n\n    // Update last selected to current for future range selections\n    setLastSelectedOption(currentOptionId);\n  };\n\n  const sectionOptions = useMemo(() => {\n    return options\n      .filter((opt) => opt.name === name)\n      .map((props: InternalDropdownOptionProps) => {\n        const key = `${name}-${type}-${props.value}`;\n\n        const optionClassNames = classNames(props.className, {\n          'no-section-name': type !== 'checkbox' && stringToBoolean(hideLabel)\n        });\n\n        const newRef = createRef<HTMLLIElement>();\n        optionsRefMap.set(key, newRef);\n\n        return (\n          <InternalDropdownOption\n            {...props}\n            key={key}\n            sectionOptionId={key}\n            ref={newRef}\n            className={optionClassNames}\n            onRangeSelection={handleRangeSelection}\n          />\n        );\n      });\n  }, [options, name, type, lastSelectedOption]);\n  useEffect(() => {\n    optionsRefMap.forEach((ref) => {\n      if (ref.current && visibility) {\n        const optionHeight = ref.current.getBoundingClientRect().height;\n        ref.current.setAttribute('data-section-option-height', `${optionHeight}`);\n      }\n    });\n\n    if (sectionNameRef.current && visibility) {\n      const sectionNameHeight = sectionNameRef.current.getBoundingClientRect().height;\n      sectionNameRef.current.setAttribute('data-section-name-height', `${sectionNameHeight}`);\n    }\n  }, [visibility, type, optionsRefMap]);\n\n  const labelVisible = !stringToBoolean(hideLabel);\n\n  return (\n    <ul className={sectionClassNames} role=\"group\" {...(labelVisible ? { 'aria-labelledby': name } : {})}>\n      {labelVisible && (\n        <li ref={sectionNameRef} className=\"section-name\" id={name} role=\"presentation\">\n          {label}\n        </li>\n      )}\n      {sectionOptions}\n    </ul>\n  );\n};\n","import { Icon } from '@/components/icon';\nimport React, { FC, KeyboardEvent as ReactKeyboardEvent, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-select-all-section.scss';\n\nexport interface InternalDropdownSelectAllSectionProps {\n  label: string;\n}\n\nexport const InternalDropdownSelectAllSection: FC<InternalDropdownSelectAllSectionProps> = ({ label }) => {\n  const ref = useRef<HTMLLIElement>(null);\n\n  const dropdownContext = useInternalDropdownContext();\n  const visibility = dropdownContext.visibility;\n  const isAllDisabled = dropdownContext.isAllDisabled;\n  const isAllSelected = dropdownContext.isAllSelected;\n  const selectAll = dropdownContext.selectAll;\n  const last = dropdownContext.last;\n  const first = dropdownContext.first;\n  const next = dropdownContext.next;\n  const prev = dropdownContext.prev;\n  const hide = dropdownContext.hide;\n\n  const onKeydown = (evt: ReactKeyboardEvent<HTMLInputElement>) => {\n    const { code } = evt;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'ArrowUp':\n        prev();\n        break;\n      case 'ArrowDown':\n        next();\n        break;\n      case 'Home':\n        first();\n        break;\n      case 'End':\n        last();\n        break;\n      case 'Space':\n        evt.preventDefault();\n        selectAll();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n        selectAll();\n        break;\n    }\n  };\n\n  const clickHandler = () => {\n    selectAll();\n  };\n  useEffect(() => {\n    const handler = (evt: KeyboardEvent) => {\n      if (evt.code === 'Tab') {\n        evt.stopPropagation();\n        evt.preventDefault();\n\n        hide();\n      }\n    };\n\n    if (ref.current) {\n      ref.current.addEventListener('keydown', handler, true);\n    }\n\n    return () => {\n      if (ref.current) {\n        ref.current.removeEventListener('keydown', handler, true);\n      }\n    };\n  }, []);\n\n  useEffect(() => {\n    if (ref.current && visibility) {\n      const { height } = ref.current.getBoundingClientRect();\n      ref.current.setAttribute('data-select-all-section-height', `${height}`);\n    }\n  }, [visibility]);\n\n  const dropdownAllOptionClassNames = classNames('agora-dropdown-all-option', { 'is-selected': isAllSelected });\n\n  return (\n    <ul className=\"agora-dropdown-select-all-section\" role=\"presentation\">\n      <li ref={ref} className={dropdownAllOptionClassNames} role=\"application\" aria-roledescription=\" \">\n        <div\n          className=\"agora-dropdown-all-option-item\"\n          tabIndex={0}\n          role=\"checkbox\"\n          aria-checked={isAllSelected}\n          aria-disabled={isAllDisabled}\n          onKeyDown={onKeydown}\n          onClick={clickHandler}\n        >\n          <Icon name=\"agora-line-check\" aria-hidden />\n          <span>{label}</span>\n        </div>\n      </li>\n    </ul>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode, Ref, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport { InternalDropdownFilterSection, InternalDropdownFilterSectionRef } from './internal-dropdown-filter-section';\nimport { InternalNoResults } from './internal-dropdown-no-results';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSection } from './internal-dropdown-section';\nimport { InternalDropdownSelectAllSection } from './internal-dropdown-select-all-section';\nimport './internal-dropdown.scss';\n\nexport interface InternalDropdownElement extends HTMLDivElement {\n  resetFilter: () => void;\n}\n\nexport interface InternalDropdownProps extends ComponentProps<'div'> {\n  optionsVisible?: number;\n\n  searchable?: BooleanProp;\n\n  searchAriaLabel?: string;\n\n  searchPlaceholder?: string;\n\n  noSearchResults?: ReactNode;\n\n  searchDebounceTimeout?: number;\n\n  onInputSearchChange?: (value: string) => void;\n\n  selectAllLabel?: string;\n}\n\nconst InternalDropdown: FC<InternalDropdownProps> = ({\n  ref = null,\n  selectAllLabel,\n  searchPlaceholder,\n  searchAriaLabel,\n  searchable,\n  optionsVisible = 6,\n  noSearchResults = '',\n  ...props\n}: InternalDropdownProps) => {\n  const context = useInternalDropdownContext();\n  const visibility = context.visibility;\n  const activeFilter = context.activeFilter;\n  const sections = context.sections;\n  const options = context.options;\n  const type = context.type;\n\n  const filterRef = useRef<InternalDropdownFilterSectionRef>(null);\n  const resetFilter = useCallback(() => {\n    if (searchable && filterRef.current) {\n      filterRef.current.resetFilter();\n    }\n  }, [searchable]);\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<InternalDropdownElement>(ref as Ref<InternalDropdownElement>, innerRef, { resetFilter } as InternalDropdownElement, [\n    resetFilter\n  ]);\n\n  const [maxHeightStyleProp, setMaxHeightStyleProp] = useState('');\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const getFilterSectionHeight = useCallback(() => {\n    if (innerRef.current && searchable) {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-filter-section-item');\n\n      const elem = (queryResults[0] as HTMLDivElement) ?? null;\n\n      if (elem) {\n        const val = elem.getAttribute('data-filter-section-height');\n        return val ? Number(val) : 0;\n      }\n    }\n\n    return 0;\n  }, [searchable]);\n\n  const getSelectAllSectionHeight = useCallback(() => {\n    if (innerRef.current && type === 'checkbox') {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-all-option');\n\n      const elem = (queryResults[0] as HTMLDivElement) ?? null;\n\n      if (elem) {\n        const val = elem.getAttribute('data-select-all-section-height');\n        return val ? Number(val) : 0;\n      }\n    }\n\n    return 0;\n  }, [type]);\n\n  const getVisibleSectionNamesHeight = useCallback((visibleSections: string[]) => {\n    let heightCount = 0;\n\n    if (innerRef.current) {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-section .section-name');\n\n      queryResults.forEach((elem) => {\n        const sectionName = elem.getAttribute('data-section-option-id');\n\n        if (sectionName && visibleSections.includes(sectionName)) {\n          const val = elem.getAttribute('data-section-name-height');\n          heightCount = heightCount + (val ? Number(val) : 0);\n        }\n      });\n    }\n\n    return heightCount;\n  }, []);\n\n  const getVisibleOptionsHeight = useCallback(\n    (visibleOptions: InternalDropdownOptionProps[]) => {\n      let heightCount = 0;\n\n      if (innerRef.current) {\n        const visibleOptionsKeys = visibleOptions.map((opt) => {\n          return `${opt.name}-${type}-${opt.value}`;\n        });\n\n        const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-section .agora-dropdown-option');\n\n        queryResults.forEach((elem) => {\n          const optionId = elem.getAttribute('data-section-option-id');\n\n          if (optionId && visibleOptionsKeys.includes(optionId)) {\n            const val = elem.getAttribute('data-section-option-height');\n            heightCount = heightCount + (val ? Number(val) : 0);\n          }\n        });\n      }\n\n      return heightCount;\n    },\n    [type]\n  );\n\n  const getListboxBorderWidths = useCallback(() => {\n    if (!innerRef.current) {\n      return 0;\n    }\n\n    const computedStyle = getComputedStyle(innerRef.current);\n\n    if (computedStyle) {\n      const borderTopWidth = parseFloat(computedStyle.borderTopWidth);\n      const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);\n      return borderTopWidth + borderBottomWidth;\n    }\n\n    return 0;\n  }, [innerRef]);\n\n  useEffect(() => {\n    if (visibility) {\n      const visibleOptions = options.filter((opt) => !opt.filtered);\n\n      if (visibleOptions.length > optionsVisible) {\n        const containedOptions = visibleOptions.slice(0, optionsVisible);\n        const visibleSections = [...new Set(containedOptions.map((opt) => opt.name ?? '').filter((opt) => !!opt))];\n\n        let maxHeight = 0;\n        //  GET FILTER SECTION HEIGHT\n        maxHeight = maxHeight + getFilterSectionHeight();\n        //  GET SELECT ALL SECTION HEIGHT\n        maxHeight = maxHeight + getSelectAllSectionHeight();\n        //  GET VISIBLE SECTIONS NAMES HEIGHT\n        maxHeight = maxHeight + getVisibleSectionNamesHeight(visibleSections);\n        //  GET NON FILTERED OPTIONS HEIGHT\n        maxHeight = maxHeight + getVisibleOptionsHeight(containedOptions);\n\n        if (maxHeight > 0) {\n          //  GET LISTBOX BORDERS ONLY IF THERE ARE SOME OPTIONS VISIBLE\n          maxHeight = maxHeight + getListboxBorderWidths();\n          setMaxHeightStyleProp(`${maxHeight}px`);\n        } else {\n          setMaxHeightStyleProp('none');\n        }\n      } else {\n        setMaxHeightStyleProp('none');\n      }\n    }\n  }, [\n    visibility,\n    type,\n    activeFilter,\n    options,\n    optionsVisible,\n    getFilterSectionHeight,\n    getSelectAllSectionHeight,\n    getVisibleSectionNamesHeight,\n    getVisibleOptionsHeight,\n    getListboxBorderWidths\n  ]);\n\n  const dropdownClasses = classNames('agora-dropdown', propsClone.className, { visible: visibility });\n\n  const hasOptions = useMemo(() => {\n    return options.length > 0;\n  }, [options]);\n\n  const hasSectionsWithResults = useMemo(() => {\n    return options.some((opt) => !opt.filtered);\n  }, [options]);\n\n  const allSectionResultsDisabled = useMemo(() => {\n    const visibleResults = options.filter((opt) => !opt.filtered);\n    return hasSectionsWithResults && visibleResults.findIndex((opt) => !opt.disabled) === -1;\n  }, [hasSectionsWithResults, options]);\n\n  const sectionWithResults = useMemo(() => {\n    return options.filter((opt) => !opt.filtered).map((opt) => opt.name);\n  }, [options]);\n\n  return (\n    <div\n      className={dropdownClasses}\n      ref={innerRef}\n      style={{\n        maxHeight: maxHeightStyleProp === '' ? '0px' : maxHeightStyleProp,\n        overflowY: maxHeightStyleProp === '' ? 'hidden' : 'auto'\n      }}\n    >\n      <div {...propsClone} role=\"listbox\">\n        {searchable && (\n          <InternalDropdownFilterSection\n            ref={filterRef as Ref<HTMLInputElement>}\n            aria-label={searchAriaLabel}\n            placeholder={searchPlaceholder}\n          />\n        )}\n\n        {type === 'checkbox' && hasSectionsWithResults && !allSectionResultsDisabled && selectAllLabel && (\n          <InternalDropdownSelectAllSection label={selectAllLabel} />\n        )}\n\n        {hasSectionsWithResults &&\n          sections\n            .filter((s) => sectionWithResults.indexOf(s.name) >= 0)\n            .map((section, index) => {\n              const key = `agora-dropdown-option-${propsClone.id}-${index}`;\n              return <InternalDropdownSection key={key} {...section} />;\n            })}\n\n        {(!hasOptions || !hasSectionsWithResults) && <InternalNoResults label={noSearchResults} />}\n      </div>\n    </div>\n  );\n};\n\nexport { InternalDropdown };\n","import { Children, ReactElement, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownOptionProps } from '../dropdown-option';\nimport { DropdownSectionProps } from '../dropdown-section';\nimport { DropdownType } from '../dropdown-type';\nimport { InternalDropdownElement } from './internal-dropdown';\nimport { InternalDropdownContextProps } from './internal-dropdown-context';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSectionProps } from './internal-dropdown-section';\nimport { asyncTrigger } from '@/utils';\n\nexport const useDropdownState = (\n  internalDropdownRef: RefObject<InternalDropdownElement>,\n  type: DropdownType,\n  hideSectionNames: boolean,\n  onChange?: (options: DropdownOptionProps[]) => void,\n  onSearchChange?: (term: string, options: DropdownOptionProps[]) => void,\n  onShow?: () => void,\n  onHide?: () => void,\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]\n) => {\n  //  #region \"OPTIONS\"\n  const [sections, setSections] = useState<Array<InternalDropdownSectionProps>>([]);\n  const [options, setOptions] = useState<Array<InternalDropdownOptionProps>>([]);\n  const [lastSelectedOption, setLastSelectedOption] = useState<string | undefined>(undefined);\n\n  useEffect(() => {\n    const parsedSectionProps: Array<InternalDropdownSectionProps> = [];\n    const parsedOptionProps: Array<InternalDropdownOptionProps> = [];\n\n    if (children) {\n      if (!Array.isArray(children)) {\n        parsedSectionProps.push({\n          ...children.props,\n          hideLabel: hideSectionNames\n        } as InternalDropdownSectionProps);\n      } else {\n        Children.forEach(children, (c) => {\n          parsedSectionProps.push({\n            ...c.props,\n            hideLabel: hideSectionNames\n          } as InternalDropdownSectionProps);\n        });\n      }\n    }\n\n    parsedSectionProps.forEach((sec) => {\n      Children.forEach(sec.children, (opt) => {\n        parsedOptionProps.push({\n          ...opt.props,\n          name: sec.name\n        });\n      });\n    });\n\n    setSections(parsedSectionProps);\n    setOptions(parsedOptionProps);\n  }, [children, type, onChange]);\n\n  //  #endregion \"OPTIONS\"\n\n  //  #region \"FILTER\"\n  const [activeFilter, setActiveFilter] = useState('');\n\n  const applyFilter = (newFilter: string) => {\n    setActiveFilter((lastFilter) => {\n      if (lastFilter === newFilter) {\n        return lastFilter;\n      }\n\n      setOptions((lastOptions) => {\n        const newOptions = lastOptions.map((opt) => {\n          if (newFilter === '') {\n            //  CLEAR FILTER\n            return { ...opt, filtered: false };\n          }\n\n          const val = opt.value.toLowerCase();\n          const childrenVal = opt.children?.toString().toLowerCase();\n\n          const notFound = !val.includes(newFilter) && !childrenVal?.toString().includes(newFilter);\n\n          return {\n            ...opt,\n            filtered: notFound\n          };\n        });\n\n        if (onSearchChange) {\n          const results = newOptions.filter((opt) => !opt.filtered);\n          onSearchChange(newFilter, results);\n        }\n\n        return newOptions;\n      });\n\n      return newFilter;\n    });\n  };\n\n  const resetFilter = useCallback(() => {\n    if (internalDropdownRef.current) {\n      internalDropdownRef.current.resetFilter();\n    }\n  }, [internalDropdownRef]);\n\n  useEffect(() => {\n    resetFilter();\n  }, [children, resetFilter]);\n\n  //  #endregion \"FILTER\"\n\n  //  #region \"NAVIGATION\"\n\n  const focusElem = (elem?: HTMLElement) => {\n    if (elem) {\n      elem.focus();\n      elem.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'start' });\n    }\n  };\n\n  const first = useCallback(() => {\n    if (internalDropdownRef.current) {\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      const idx = Array.from(domOptions).findIndex((opt) => {\n        return (opt as HTMLElement).tabIndex === 0;\n      });\n\n      if (idx >= 0) {\n        focusElem(domOptions[idx] as HTMLElement);\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const last = useCallback(() => {\n    if (internalDropdownRef.current) {\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const idx = Array.from(domOptions).findLastIndex((opt) => {\n          return (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const next = useCallback((): void => {\n    if (internalDropdownRef.current) {\n      const current = document.activeElement;\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const currentIndex = Array.from(domOptions).findIndex((opt) => {\n          return opt.isEqualNode(current);\n        });\n\n        const idx = Array.from(domOptions).findIndex((opt, i) => {\n          return i > currentIndex && (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef, first]);\n\n  const prev = useCallback((): void => {\n    if (internalDropdownRef.current) {\n      const current = document.activeElement;\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const currentIndex = Array.from(domOptions).findIndex((opt) => {\n          return opt.isEqualNode(current);\n        });\n\n        const idx = Array.from(domOptions).findLastIndex((opt, i) => {\n          return i < currentIndex && (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef, last]);\n\n  //  #endregion \"NAVIGATION\"\n\n  //  #region \"VISIBILITY\"\n  const [visibility, setVisibility] = useState(false);\n\n  const show = useCallback(() => {\n    setVisibility(true);\n  }, []);\n\n  const hide = useCallback(() => {\n    setVisibility(false);\n  }, []);\n\n  //  Need this ref because first render will trigger the effect... we only want this event whenever show or hide is called\n  const firstEffect = useRef(true);\n  useEffect(() => {\n    if (firstEffect.current) {\n      firstEffect.current = false;\n      return;\n    }\n\n    if (visibility) {\n      onShow?.();\n    } else {\n      onHide?.();\n    }\n  }, [visibility]);\n\n  //  #endregion \"VISIBILITY\"\n\n  //  #region \"SELECTION\"\n  const triggerOnChange = useCallback(\n    (newOptions: InternalDropdownOptionProps[]) => {\n      const selectedOptions = newOptions\n        .filter((o) => o.selected)\n        .map((o) => {\n          return {\n            selected: o.selected,\n            value: o.value,\n            className: o.className,\n            disabled: o.disabled,\n            hasIcon: o.hasIcon,\n            icon: o.icon,\n            iconPosition: o.iconPosition,\n            children: o.children\n          } as DropdownOptionProps;\n        });\n\n      if (type === 'text' && selectedOptions.length > 0) {\n        hide();\n      }\n\n      //  NEED THIS TO PREVENT MULTIPLE SET STATES WITH RENDERING IN PROCESS\n      //  BY SETTING THIS SET TIMEOUT WE ALLOW REACT TO FULLY RENDER AND THEN TRIGGER THE ONCHANGE\n      //  ON CHANGE MY SET A NEW STATE ON DROPDOWN AND INITIATE A NEW RENDER OF THE COMPONENT\n      asyncTrigger(() => onChange?.(selectedOptions));\n    },\n    [onChange, hide, type]\n  );\n\n  const isMultiSelection = useMemo(() => {\n    return type === 'checkbox';\n  }, [type]);\n\n  const selectOption = useCallback(\n    (option: InternalDropdownOptionProps): void => {\n      if (option.disabled || option.filtered) {\n        return;\n      }\n\n      setOptions((lastOptions) => {\n        const newOptions = lastOptions.map((opt) => {\n          const isProvidedOption = option.name === opt.name && option.value === opt.value;\n\n          if (isMultiSelection) {\n            return {\n              ...opt,\n              selected: isProvidedOption ? !opt.selected : opt.selected\n            };\n          }\n\n          return {\n            ...opt,\n            selected: isProvidedOption ? !opt.selected : false\n          };\n        });\n\n        triggerOnChange(newOptions);\n\n        return newOptions;\n      });\n    },\n    [setOptions, isMultiSelection, triggerOnChange]\n  );\n\n  const isAllSectionOptionsSelected = useCallback(\n    (sectionName: string): boolean => {\n      const availableOptions = options.filter((opt) => opt.name === sectionName && !opt.filtered && !opt.disabled);\n      const hasOptionsUnselected = availableOptions.some((opt) => !opt.selected);\n      return availableOptions.length > 0 && !hasOptionsUnselected;\n    },\n    [options]\n  );\n\n  const selectSectionOptions = useCallback(\n    (sectionName: string): void => {\n      setOptions((lastOptions) => {\n        const allOptionsSelected = isAllSectionOptionsSelected(sectionName);\n\n        const newOptions = lastOptions.map((opt) => {\n          const isInSectionProvided = sectionName === opt.name;\n          return {\n            ...opt,\n            selected: !opt.filtered && !opt.disabled && isInSectionProvided ? !allOptionsSelected : opt.selected\n          };\n        });\n\n        triggerOnChange(newOptions);\n\n        return newOptions;\n      });\n    },\n    [setOptions, isAllSectionOptionsSelected, triggerOnChange]\n  );\n\n  const hasSectionOptionsToInteract = useCallback(\n    (sectionName: string): boolean => {\n      const availableOptions = options.filter((opt) => opt.name === sectionName && !opt.filtered && !opt.disabled);\n      return availableOptions.length > 0;\n    },\n    [options]\n  );\n\n  const isAllSelected = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered && !opt.disabled);\n    const hasOptionsUnselected = availableOptions.some((opt) => !opt.selected);\n    return availableOptions.length > 0 && !hasOptionsUnselected;\n  }, [options]);\n\n  const isAllDisabled = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered);\n    const hasOptionsNotDisabled = availableOptions.some((opt) => !opt.disabled);\n    return availableOptions.length > 0 && !hasOptionsNotDisabled;\n  }, [options]);\n\n  const selectAll = useCallback((): void => {\n    setOptions((lastOptions) => {\n      const newOptions = lastOptions.map((opt) => {\n        return {\n          ...opt,\n          selected: !opt.filtered && !opt.disabled ? !isAllSelected : opt.selected\n        };\n      });\n\n      triggerOnChange(newOptions);\n\n      return newOptions;\n    });\n  }, [setOptions, isAllSelected, triggerOnChange]);\n\n  //  #endregion \"SELECTION\"\n\n  return {\n    type,\n    sections,\n    options,\n\n    visibility,\n    show,\n    hide,\n\n    first,\n    prev,\n    next,\n    last,\n\n    selectOption,\n    hasSectionOptionsToInteract,\n    selectSectionOptions,\n    isAllSectionOptionsSelected,\n\n    isAllDisabled,\n    isAllSelected,\n    selectAll,\n\n    applyFilter,\n    activeFilter,\n    resetFilter,\n    lastSelectedOption,\n    setLastSelectedOption\n  } as InternalDropdownContextProps;\n};\n","import { BooleanProp } from '@/models';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, ReactNode, Ref, useEffect, useRef } from 'react';\n\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\nimport { DropdownOptionProps } from './dropdown-option';\nimport { DropdownSectionProps } from './dropdown-section';\nimport { DropdownType } from './dropdown-type';\nimport { InternalDropdown, InternalDropdownElement } from './internals/internal-dropdown';\nimport { InternalDropdownContext } from './internals/internal-dropdown-context';\nimport { useDropdownState } from './internals/use-dropdown-state';\n\nexport interface DropdownElement extends HTMLDivElement {\n  visibility: boolean;\n  show: () => void;\n  hide: () => void;\n  first: () => void;\n  last: () => void;\n}\n\nexport interface DropdownProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   *  Toggles visibility on section names. It also removes the name from accessibility tree.\n   */\n  hideSectionNames?: BooleanProp;\n  /**\n   *  Number of visible options to display in the Dropdown. Remaining items will be accessible via scroll bar.\n   */\n  optionsVisible?: number;\n  /**\n   *  Define the type of sections that will be used. They can be of type \"text\" or \"checkbox\".\n   */\n  type?: DropdownType;\n  /**\n   *  Callback to run whenever the dropdown becomes visible.\n   */\n  onShow?: () => void;\n  /**\n   *  Callback to run whenever the dropdown becomes hidden.\n   */\n  onHide?: () => void;\n  /**\n   *  List of section to render.\n   */\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[];\n  /**\n   *  Callback to run whenever the select state of an option changes.\n   */\n  onChange?: (options: DropdownOptionProps[]) => void;\n  /**\n   *  Enable the search bar to filter options.\n   */\n  searchable?: BooleanProp;\n  /**\n   *  Accessible text for the input search bar.\n   */\n  searchAriaLabel?: string;\n  /**\n   *  Placeholder text for input search bar.\n   */\n  searchPlaceholder?: string;\n  /**\n   *  Text to show when filtering return no results.\n   */\n  noSearchResults?: ReactNode;\n  /**\n   *  Delay to apply before starting filtering results.\n   */\n  searchDebounceTimeout?: number;\n  /**\n   *  Callback to run whenever the filter runs. Called using the filter term and the filtered result options.\n   */\n  onSearchChange?: (value: string, options: DropdownOptionProps[]) => void;\n  /**\n   *  Text to display in the \"select all options across all sections\" option.\n   */\n  selectAllLabel?: string;\n}\n\nconst Dropdown: FC<DropdownProps> = ({\n  ref = null,\n  type = 'text',\n  onChange,\n  onSearchChange,\n  onShow,\n  onHide,\n  children,\n  hideSectionNames = false,\n  ...props\n}) => {\n  const innerRef = useRef<InternalDropdownElement>(null!);\n\n  const dropdownState = useDropdownState(\n    innerRef,\n    type,\n    stringToBoolean(hideSectionNames),\n    onChange,\n    onSearchChange,\n    onShow,\n    onHide,\n    children\n  );\n\n  //  CALL ON CHANGE TO INITIALIZE COMPONENTS THAT USE DROPDOWN WITH INITIAL DATA\n  const firstCall = useRef(false);\n  useEffect(() => {\n    if (!firstCall.current) {\n      firstCall.current = true;\n\n      const options: DropdownOptionProps[] = [];\n\n      Children.forEach(children, (sectionChild) => {\n        if (isValidElement<DropdownSectionProps>(sectionChild)) {\n          Children.forEach(sectionChild.props.children, (optionChild) => {\n            if (isValidElement<DropdownOptionProps>(optionChild) && optionChild.props.selected) {\n              options.push(optionChild.props);\n            }\n          });\n        }\n      });\n\n      asyncTrigger(() => onChange?.(options));\n    }\n  }, []);\n\n  useExpandedRef<DropdownElement>(\n    ref as Ref<DropdownElement>,\n    innerRef,\n    {\n      visibility: dropdownState.visibility,\n      show: dropdownState.show,\n      hide: dropdownState.hide,\n      first: dropdownState.first,\n      last: dropdownState.last\n    } as DropdownElement,\n    [dropdownState.hide, dropdownState.show, dropdownState.first, dropdownState.last, dropdownState.visibility]\n  );\n\n  return (\n    <InternalDropdownContext value={dropdownState}>\n      <InternalDropdown {...props} ref={innerRef}>\n        {children}\n      </InternalDropdown>\n    </InternalDropdownContext>\n  );\n};\n\nexport { Dropdown };\n","import React, { FC, ReactElement } from 'react';\nimport { DropdownOptionProps } from './dropdown-option';\n\nexport interface DropdownSectionProps {\n  /**\n   * Additional classnames to use in the section.\n   */\n  className?: string;\n  /**\n   * Unique group name identifier for the section.\n   */\n  name: string;\n  /**\n   * Label for the group section.\n   */\n  label?: string;\n  /**\n   * List section options.\n   */\n  children: ReactElement<DropdownOptionProps> | ReactElement<DropdownOptionProps>[];\n}\n\nexport const DropdownSection: FC<DropdownSectionProps> = () => <></>;\n","import React, { FC, ReactNode } from 'react';\nimport { BooleanProp, IconPosition } from '@/models';\n\nexport interface DropdownOptionProps {\n  /**\n   * Additional classnames to set to the option.\n   */\n  className?: string;\n  /**\n   * The value of the option.\n   */\n  value: string;\n  /**\n   * Visual representation of the option.\n   */\n  children: ReactNode;\n  /**\n   * Enables icon placement.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon to use.\n   */\n  icon?: string;\n  /**\n   * Defines the positioning of the icon.\n   */\n  iconPosition?: IconPosition;\n  /**\n   * Sets the option in the disable state.\n   */\n  disabled?: BooleanProp;\n  /**\n   * Sets the option in the selected state.\n   */\n  selected?: BooleanProp;\n}\n\nexport const DropdownOption: FC<DropdownOptionProps> = () => <></>;\n","import React, {\n  Children,\n  cloneElement,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  Ref,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { AvatarProps } from '@/components/avatar';\nimport { Button } from '@/components/button';\nimport { Dropdown, DropdownElement, DropdownOption, DropdownSection } from '@/components/dropdown';\n\nexport interface VisibleCountAvatarGroupProps extends ComponentPropsWithoutRef<'div'> {\n  children: ReactElement<AvatarProps> | Array<ReactElement<AvatarProps>>;\n  visibleCount: number;\n  avatarCount: number;\n  visibleCountAriaLabel?: string;\n}\n\nexport const handleWithAvailableSpace = (containerDropdownRef: HTMLDivElement | null, containerRef: HTMLDivElement | null) => {\n  if (!containerDropdownRef || !containerRef) {\n    return false;\n  }\n\n  const distanceFromLeft = containerRef.getBoundingClientRect().left ?? 0;\n  const freeSpace = window.innerWidth - distanceFromLeft;\n  const result = freeSpace - containerDropdownRef.clientWidth;\n\n  containerDropdownRef.style.left = `${result >= 0 ? 0 : result}px`;\n  return true;\n};\n\nexport const VisibleCountAvatarGroup: FC<VisibleCountAvatarGroupProps> = ({\n  avatarCount,\n  visibleCount,\n  visibleCountAriaLabel,\n  children\n}) => {\n  const containerDropdownRef = useRef<HTMLDivElement>(null);\n\n  const generatedId = useId();\n\n  const countValue = visibleCount >= 0 ? `+${avatarCount - visibleCount}` : `+${avatarCount}`;\n\n  const avatarCountList = Children.map(children, (avatar, index) => {\n    if (index >= visibleCount && isValidElement(avatar)) {\n      return cloneElement(avatar);\n    }\n\n    return null;\n  });\n\n  const dropdownRef = useRef<DropdownElement>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    buttonRef.current?.focus();\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const handleKeydown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n    if (code === 'Escape' && dropdownRef.current) {\n      dropdownRef.current.hide();\n    }\n  };\n\n  const handleClick = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const onMouseEnterHandler = () => {\n    dropdownRef.current?.show();\n  };\n\n  const onMouseLeaveHandler = () => {\n    dropdownRef.current?.hide();\n  };\n\n  useEffect(() => {\n    if (containerRef.current) {\n      containerRef.current.addEventListener('mouseenter', onMouseEnterHandler);\n      containerRef.current.addEventListener('mouseleave', onMouseLeaveHandler);\n    }\n\n    return () => {\n      if (containerRef.current) {\n        containerRef.current.removeEventListener('mouseenter', onMouseEnterHandler);\n        containerRef.current.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    };\n  }, []);\n\n  return (\n    <div\n      ref={containerRef}\n      className=\"avatar-visible-count-wrapper\"\n      onMouseOver={() => handleWithAvailableSpace(containerDropdownRef.current, containerRef.current)}\n      onFocus={() => {}}\n    >\n      <Button\n        ref={buttonRef}\n        className=\"avatar-visible-count\"\n        onClick={handleClick}\n        onKeyDown={handleKeydown}\n        role=\"combobox\"\n        aria-expanded={isDropdownVisible}\n        aria-controls={`${generatedId}-dropdown-avatar-group-container`}\n        aria-label={countValue}\n      >\n        <span aria-hidden>{countValue}</span>\n      </Button>\n\n      <div ref={containerDropdownRef} className=\"absolute -bottom-8 left-0 w-full min-w-[296px]\">\n        <Dropdown\n          id={`${generatedId}-dropdown-avatar-group-container`}\n          ref={dropdownRef as Ref<HTMLDivElement>}\n          onHide={onHide}\n          onShow={onShow}\n          type=\"text\"\n          hideSectionNames\n        >\n          <DropdownSection name={`avatar-list-${generatedId}`} aria-label={visibleCountAriaLabel}>\n            {avatarCountList.map((avatar, index) => {\n              const avatarKey = `avatar-group-${generatedId}-option-${index}`;\n              if (avatar.props.avatarType !== 'initials') {\n                return (\n                  <DropdownOption\n                    key={avatarKey}\n                    value={avatar.props.information?.toString() ?? ''}\n                    hasIcon\n                    icon={avatar.props.srcPath}\n                    iconPosition=\"leading\"\n                  >\n                    {avatar.props.information}\n                  </DropdownOption>\n                );\n              } else {\n                return (\n                  <DropdownOption key={avatarKey} value={avatar.props.information?.toString() ?? ''}>\n                    <div className=\"dropdown-option-content\">\n                      <div className=\"avatar-type-initials\">{avatar}</div>\n                      {avatar.props.information}\n                    </div>\n                  </DropdownOption>\n                );\n              }\n            })}\n          </DropdownSection>\n        </Dropdown>\n      </div>\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, ComponentPropsWithoutRef, FC, isValidElement, ReactElement } from 'react';\nimport { AvatarProps } from '../avatar';\nimport './avatar-group.scss';\nimport { VisibleCountAvatarGroup } from './visible-count-avatar-group';\n\nexport interface AvatarGroupProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * List of avatar components to use as children of the group.\n   */\n  children: ReactElement<AvatarProps> | Array<ReactElement<AvatarProps>>;\n  /**\n   * Number of avatars that will be visible in the group. Once it exceeds that number a separate icon will show how many more avatars there are left. Clicking on the icon with the number will preview the other avatars as well.\n   */\n  visibleCount?: number;\n  /**\n   * Accessible text for the dropdown containing the remaining avatars.\n   */\n  visibleCountAriaLabel?: string;\n  /**\n   * Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst AvatarGroup: FC<AvatarGroupProps> = ({\n  className,\n  children,\n  visibleCount,\n  darkMode,\n  visibleCountAriaLabel,\n  ...props\n}): ReactElement => {\n  const avatarGroupClasses = classNames('avatar-group', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const avatarCount = Children.toArray(children).length;\n  const totalVisibleAvatars = visibleCount ?? avatarCount;\n\n  const renderAvatarListItem = (child: ReactElement<AvatarProps>) => {\n    return (\n      <li>\n        {cloneElement<AvatarProps>(child, {\n          darkMode\n        } as AvatarProps)}\n      </li>\n    );\n  };\n\n  return (\n    <ul {...props} className={avatarGroupClasses}>\n      {Children.map(children, (child, index) => {\n        if (index < totalVisibleAvatars && isValidElement(child)) {\n          return renderAvatarListItem(child);\n        }\n\n        return null;\n      })}\n      {avatarCount > totalVisibleAvatars && (\n        <li>\n          <VisibleCountAvatarGroup\n            visibleCount={totalVisibleAvatars}\n            avatarCount={avatarCount}\n            visibleCountAriaLabel={visibleCountAriaLabel}\n          >\n            {children}\n          </VisibleCountAvatarGroup>\n        </li>\n      )}\n    </ul>\n  );\n};\n\nexport { AvatarGroup };\n","import React, { ComponentProps, FC, ReactElement, ReactNode, useId } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Tooltip, TooltipAlignment, TooltipPosition, TooltipVariant } from '@/components/tooltip';\nimport { BooleanProp } from '@/models';\nimport classNames from 'classnames';\n\nexport interface BackToTopProps extends ComponentProps<'button'> {\n  /**\n   * The variant of the Tooltip.\n   */\n  tooltipVariant?: TooltipVariant;\n  /**\n   * Position of the tooltip to shows when the user focus or hovers the component.\n   */\n  tooltipPosition?: TooltipPosition;\n  /**\n   * Alignment of the tooltip shown whenever the user focus or hovers the component.\n   */\n  tooltipAlignment?: TooltipAlignment;\n  /**\n   * If the Tooltip has a title.\n   */\n  hasTooltipTitle?: BooleanProp;\n  /**\n   * The title of the Tooltip.\n   */\n  tooltipTitle?: ReactNode;\n  /**\n   * Tooltip description to show when user focus or hovers the component.\n   */\n  tooltipDescription: ReactNode;\n}\n\nconst BackToTop: FC<BackToTopProps> = ({\n  ref = null,\n  tooltipVariant = 'light',\n  tooltipAlignment = 'start',\n  tooltipPosition = 'right',\n  hasTooltipTitle,\n  tooltipTitle,\n  tooltipDescription,\n  ...props\n}): ReactElement => {\n  const backToTopClassName = classNames('!rounded-full', props.className);\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const goToTop = () => {\n    window.scrollTo({\n      top: 0,\n      behavior: 'smooth'\n    });\n  };\n\n  return (\n    <Tooltip\n      id={`tooltip-${propsClone.id}`}\n      variant={tooltipVariant}\n      alignment={tooltipAlignment}\n      position={tooltipPosition}\n      hasTitle={hasTooltipTitle}\n      title={tooltipTitle}\n      description={tooltipDescription}\n    >\n      <Button\n        {...propsClone}\n        ref={ref}\n        hasIcon\n        leadingIcon=\"agora-line-chevron-up\"\n        leadingIconHover=\"agora-line-chevron-up\"\n        iconOnly\n        onClick={goToTop}\n        className={backToTopClassName}\n      />\n    </Tooltip>\n  );\n};\n\nexport { BackToTop };\n","import React, { FC, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor } from '@/components/anchor';\nimport { BreadcrumbProps } from '@/components/breadcrumb';\nimport { Icon } from '@/components/icon';\n\nimport './breadcrumb-desktop.scss';\n\nexport const BreadcrumbDesktop: FC<BreadcrumbProps> = ({ items, darkMode, ...props }) => {\n  const generatedId = useId();\n\n  const ariaLabel = props['aria-label'] ?? 'Breadcrumb';\n\n  const BreadcrumbClassName = classNames(props.className, 'agora-breadcrumb-desktop');\n  const iconClassName = classNames('mx-[4px]', {\n    'fill-white': darkMode,\n    'fill-neutral-900': !darkMode\n  });\n\n  return (\n    <nav className={BreadcrumbClassName} aria-label={ariaLabel}>\n      <ol className=\"flex gap-y-8 flex-wrap items-center\">\n        {items.map((link, index) => {\n          const key = `${generatedId}-${index}`;\n\n          return (\n            <li key={key} className=\"flex flex-row items-center\">\n              {index !== 0 && <Icon name=\"agora-line-chevron-right\" dimensions=\"m\" aria-hidden=\"true\" className={iconClassName} />}\n              {index === items.length - 1 || !link.url ? (\n                <span aria-current=\"page\">{link.label}</span>\n              ) : (\n                <Anchor darkMode={darkMode} variant=\"neutral\" appearance=\"text\" href={link.url} className=\"text-s-regular\">\n                  {link.label}\n                </Anchor>\n              )}\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n","import React, { FC, KeyboardEvent as ReactKeyboardEvent, useEffect, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor } from '@/components/anchor';\nimport { Button } from '@/components/button';\nimport { BreadcrumbProps } from '@/components/breadcrumb';\n\nimport './breadcrumb-mobile.scss';\n\nexport const BreadcrumbMobile: FC<BreadcrumbProps> = ({ sectionTitle, items, darkMode, ...props }) => {\n  const generatedId = useId();\n  const [isExpanded, setIsExpanded] = useState(false);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const listRef = useRef<HTMLOListElement>(null);\n  const BreadcrumbClassName = classNames(props.className, 'agora-breadcrumb-mobile');\n\n  const ariaLabel = props['aria-label'] ?? 'Breadcrumb';\n\n  /**\n   * Function used to close the breadcrumb menu.\n   */\n  const closeMenuClickHandler = (evt: MouseEvent) => {\n    if (listRef?.current && evt.target && !listRef.current.contains(evt.target as HTMLElement)) {\n      setIsExpanded(false);\n    }\n  };\n\n  const handleTabKey = (evt: ReactKeyboardEvent<HTMLAnchorElement>) => {\n    const linkList = listRef.current?.querySelectorAll('a');\n    const target = evt.target as HTMLAnchorElement;\n    const liParentNode = target.parentNode as HTMLLIElement;\n\n    if (linkList && linkList.length > 1) {\n      if (evt.shiftKey) {\n        const firstLiChild = linkList[0].parentNode as HTMLLIElement;\n        if (firstLiChild === liParentNode) {\n          evt.preventDefault();\n          linkList[linkList.length - 1]?.focus();\n        }\n      } else {\n        const lastLiWithChildAnchor = linkList[linkList.length - 1].parentNode as HTMLLIElement;\n        if (lastLiWithChildAnchor === liParentNode) {\n          evt.preventDefault();\n          linkList[0]?.focus();\n        }\n      }\n    }\n  };\n\n  /**\n   * Function used to set Keyboard Keydown Behavior.\n   */\n  const setKeyboardKeydownBehavior = (evt: ReactKeyboardEvent<HTMLAnchorElement>) => {\n    if (evt.key === 'Escape' || evt.key === 'Esc') {\n      setIsExpanded(false);\n      buttonRef.current?.focus();\n    }\n\n    if (evt.key === 'Tab') {\n      handleTabKey(evt);\n    }\n\n    if (evt.key === 'Enter') {\n      setIsExpanded(false);\n    }\n  };\n\n  /**\n   * Used to setup the Event Listeners (mouse and keyboard).\n   */\n  useEffect(() => {\n    if (isExpanded) {\n      document.addEventListener('mousedown', closeMenuClickHandler);\n\n      /**\n       * Focus the first link when opening the menu.\n       */\n      const firstLink = listRef.current?.querySelectorAll('a');\n      if (firstLink && firstLink?.length > 0) {\n        firstLink[0]?.focus();\n      }\n    }\n\n    return () => {\n      document.removeEventListener('mousedown', closeMenuClickHandler);\n    };\n  }, [isExpanded]);\n\n  /**\n   * Function used to Expand the breadcrumb Menu.\n   */\n  const expandMenu = () => {\n    setIsExpanded((expanded) => {\n      return !expanded;\n    });\n  };\n\n  return (\n    <nav aria-label={ariaLabel} className={BreadcrumbClassName}>\n      <Button\n        type=\"button\"\n        ref={buttonRef}\n        aria-expanded={isExpanded}\n        aria-controls={`agora-mobile-breadcrumb-menu-${generatedId}`}\n        onClick={expandMenu}\n        hasIcon\n        leadingIcon=\"agora-line-chevron-left\"\n        leadingIconHover=\"agora-solid-chevron-left\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        darkMode={stringToBoolean(darkMode)}\n      >\n        {items.at(-1)?.label}\n      </Button>\n\n      <ol id={`agora-mobile-breadcrumb-menu-${generatedId}`} className={`${!isExpanded ? 'hidden' : 'flex'}`} ref={listRef}>\n        {sectionTitle && (\n          <li>\n            <p className=\"[&>*]:text-s-semibold  text-s-semibold [&>*]:text-neutral-500 text-neutral-500\">{sectionTitle}</p>\n          </li>\n        )}\n        {items.map((link, index) => {\n          const id = `agora-mobile-breadcrumb-link-${generatedId}${index}`;\n\n          if (index === items.length - 1 || !link.url) {\n            return (\n              <li id={id} key={id}>\n                <span aria-current=\"page\" className=\"inline-flex items-center min-h-[44px]\">\n                  {link.label}\n                </span>\n              </li>\n            );\n          }\n\n          return (\n            <li id={id} key={id}>\n              <Anchor variant=\"neutral\" appearance=\"link\" href={link.url} onKeyDown={setKeyboardKeydownBehavior}>\n                {link.label}\n              </Anchor>\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n","import React, { FC, HTMLProps, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { BreadcrumbDesktop } from './desktop/breadcrumb-desktop';\nimport { BreadcrumbMobile } from './mobile/breadcrumb-mobile';\n\nexport interface BreadcrumbLink {\n  /**\n   * The Breadcrumb page link url.\n   */\n  url: string;\n  /**\n   * The Breadcrumb page link label.\n   */\n  label: ReactNode;\n}\n\nexport interface BreadcrumbProps extends HTMLProps<HTMLDivElement> {\n  /**\n   * The links that make up the breadcrumb in hierarchical order.\n   */\n  items: BreadcrumbLink[];\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Section title. Only visible on mobile resolutions.\n   */\n  sectionTitle?: ReactNode;\n}\n\nexport const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {\n  const baseClasses = classNames('agora-breadcrumb', props.className, {\n    'dark-mode': stringToBoolean(props.darkMode)\n  });\n\n  const desktopBreadcrumbClassnames = classNames(baseClasses, 'xs:hidden xl:flex');\n  const mobileBreadcrumbClassnames = classNames(baseClasses, 'xs:flex xl:hidden');\n\n  return (\n    <>\n      <BreadcrumbDesktop {...props} items={items} className={desktopBreadcrumbClassnames} />\n      <BreadcrumbMobile {...props} items={items} className={mobileBreadcrumbClassnames} />\n    </>\n  );\n};\n","import { ButtonProps, ButtonVariant } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, useId, useMemo } from 'react';\nimport './button-group.scss';\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ButtonGroupProps extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'onChange'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The variant of the buttons. This variants will define the background and border color of the given Button.\n   */\n  variant?: ButtonVariant;\n  /**\n   *Defines if the button should be fluid.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   *  List of button components to use as children of the group.\n   */\n  children?: ReactElement<ButtonProps> | Array<ReactElement<ButtonProps>>;\n  /**\n   * Defines vertical or horizontal orientation.\n   */\n  orientation?: ButtonGroupOrientation;\n}\n\nconst ButtonGroup: FC<ButtonGroupProps> = ({\n  variant = 'primary',\n  fullWidth = false,\n  children,\n  darkMode,\n  orientation = 'horizontal',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const childrenButtons: Array<ReactElement<ButtonProps>> = useMemo(() => {\n    const ret: Array<ReactElement<ButtonProps>> = [];\n\n    if (Array.isArray(children)) {\n      children.forEach((child) => {\n        if (isValidElement<ButtonProps>(child)) {\n          ret.push(child);\n        }\n      });\n    } else if (isValidElement<ButtonProps>(children)) {\n      ret.push(children);\n    }\n\n    return ret;\n  }, [children]);\n\n  const buttonGroupClasses = classNames(\n    'button-group',\n    propsClone.className,\n    orientation,\n    { full: stringToBoolean(fullWidth) },\n    { darkMode: stringToBoolean(darkMode) }\n  );\n\n  return (\n    <div className=\"agora-button-group\">\n      {/* button group */}\n      <div {...propsClone} className={buttonGroupClasses} role=\"group\" aria-label={propsClone['aria-label']} id={propsClone.id}>\n        {Children.map(childrenButtons, (child, index) => {\n          return cloneElement<ButtonProps>(child, {\n            ...child.props,\n            id: child.props.id ?? `${propsClone.id}-button-${index}`,\n            variant: variant,\n            appearance: 'outline',\n            onClick: (evt) => {\n              child.props.onClick?.(evt);\n            },\n            darkMode: stringToBoolean(darkMode)\n          } as ButtonProps);\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport { ButtonGroup };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './pill.scss';\n\n/**\n * The available variants of the pill. This variants will define the background and border color of the pill.\n */\nexport type PillVariant = 'primary' | 'secondary' | 'secondary-light' | 'neutral' | 'informative' | 'success' | 'warning' | 'danger';\n\n/**\n * The available pill appearances. Defines the pill shape.\n */\nexport type PillAppearance = 'solid' | 'outline';\n\n/**\n * The available pill size. Defines the pill size.\n */\nexport type PillSize = 'default' | 'large';\n\nexport interface PillProps extends ComponentProps<'div'> {\n  /**\n   * The pill appearance. Define the pill Shape.\n   */\n  appearance?: PillAppearance;\n  /**\n   * The variant of the pill. This variants will define the background and border color of the given Pill.\n   */\n  variant?: PillVariant;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Pill or Circular pill style.\n   */\n  circular?: BooleanProp;\n  /**\n   * Size of pill.\n   */\n  size?: PillSize;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const Pill: FC<PillProps> = ({\n  appearance = 'solid',\n  variant = 'primary',\n  children,\n  className,\n  circular = false,\n  size = 'default',\n  darkMode = false,\n  ...props\n}) => {\n  /**\n   * Building pill class name dynamically according parameters.\n   */\n  const pillClassName = classNames(\n    {\n      'inline-flex items-center justify-center': !props.hidden,\n      'agora-pill-circular': stringToBoolean(circular),\n      'agora-pill-large': size === 'large',\n      'dark-mode': stringToBoolean(darkMode)\n    },\n\n    `agora-pill agora-pill-${appearance}-${variant}`,\n    className\n  );\n\n  return (\n    <span className={pillClassName} {...props}>\n      <span className=\"children-wrapper\">{children}</span>\n    </span>\n  );\n};\n","import { RefObject, useEffect } from 'react';\n\nexport interface IUseBlockedLink {\n  parentCardRef: RefObject<HTMLDivElement | null>;\n  anchorRef: RefObject<HTMLAnchorElement | null>;\n  blockedLink?: boolean;\n}\n\nconst useBlockedLink = ({ parentCardRef, anchorRef, blockedLink = false }: IUseBlockedLink) => {\n  const activateLink = () => {\n    const event = new MouseEvent('click', {\n      detail: 1\n    });\n\n    anchorRef.current?.dispatchEvent(event);\n  };\n\n  const onClickCaptureHandler = (evt: MouseEvent) => {\n    const target = evt.target as HTMLElement;\n    if (target.tagName !== 'A' && !target.matches('a *')) {\n      //  Is blocked link\n      //  Is not an anchor nor a child of an anchor\n      //  Trigger main link\n\n      evt.stopPropagation();\n      evt.preventDefault();\n      activateLink();\n    }\n  };\n\n  const onMouseEnterHandler = () => {\n    (anchorRef?.current as HTMLAnchorElement).classList.add('hover');\n  };\n\n  const onMouseLeaveHandler = () => {\n    (anchorRef?.current as HTMLAnchorElement).classList.remove('hover');\n  };\n\n  useEffect(() => {\n    const anchorElement = anchorRef?.current as HTMLAnchorElement;\n    const parentCardElem = parentCardRef?.current as HTMLDivElement;\n\n    if (parentCardElem && anchorElement) {\n      if (blockedLink) {\n        parentCardElem.classList.add('blocked-link');\n        parentCardElem.addEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.addEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseleave', onMouseLeaveHandler);\n      } else {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    }\n\n    return () => {\n      if (parentCardElem) {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    };\n  }, [parentCardRef, anchorRef, blockedLink]);\n};\n\nexport { useBlockedLink };\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { Pill, PillProps } from '@/components/pill';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ImgHTMLAttributes, ReactNode, useRef } from 'react';\nimport { useBlockedLink } from '../shared/use-blocked-link';\nimport './card-article.scss';\n\nexport type CardArticleVariant = 'default' | 'indented';\n\nexport interface CardArticleProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if the card is indented.\n   */\n  variant?: CardArticleVariant;\n  /**\n   *  Image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * The flag to set the pill.\n   */\n  hasPill?: BooleanProp;\n  /**\n   * Pill props.\n   */\n  pill?: PillProps;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * Subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Definition of the anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Makes the whole card clickable and activates the link.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardArticle: FC<CardArticleProps> = ({\n  hasPill = false,\n  pill,\n  mainAnchor,\n  blockedLink = false,\n  children,\n  image,\n  headingLevel: Heading = 'h3',\n  title,\n  subtitle,\n  variant = 'default',\n  className,\n  ...props\n}) => {\n  const cardArticleRef = useRef<HTMLDivElement | null>(null);\n  const cardArticleAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const onlyAnchor = !title && !subtitle && !children && !hasPill && !!mainAnchor && !mainAnchor.hidden;\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    children: !title && !subtitle && !!children,\n    pill: !title && !subtitle && !children && !!hasPill,\n    anchor: onlyAnchor\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    subtitle: false,\n    children: false,\n    pill: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.subtitle = !title && !!subtitle;\n      anchorPlacement.children = !title && !subtitle && !!children;\n      anchorPlacement.pill = !title && !subtitle && !children && !!hasPill;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardArticleAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardArticleAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardArticleRef,\n    anchorRef: cardArticleAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardClassNames = classNames(\n    'agora-card-article',\n    { indented: variant === 'indented' },\n    { default: variant === 'default' },\n    className,\n    { 'has-image': !!image },\n    { 'only-anchor': onlyAnchor }\n  );\n\n  const anchorContainerClassNames = classNames(\n    'anchor-container',\n    { 'icon-only': mainAnchorClone?.iconOnly },\n    { 'has-siblings': !onlyAnchor }\n  );\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardArticleRef} className={cardClassNames}>\n      {image && (\n        <div className=\"container-image w-full\">\n          <img src={image.src} className=\"card-image w-full\" alt={image.alt} />\n        </div>\n      )}\n\n      <div className=\"container-body\">\n        {hasPill && pill && (\n          <div className=\"pill-container\">\n            <Pill {...pill}>{buildText(pill.children, mainAnchorClone, anchorPlacement.pill, headingPlacement.pill)}</Pill>\n          </div>\n        )}\n\n        {subtitle && (\n          <div className=\"subtitle-container\">\n            {buildText(subtitle, mainAnchorClone, anchorPlacement.subtitle, headingPlacement.subtitle)}\n          </div>\n        )}\n\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>}\n\n        {children && (\n          <div className=\"children-container\">\n            {buildText(children, mainAnchorClone, anchorPlacement.children, headingPlacement.children)}\n          </div>\n        )}\n\n        {anchorPlacement.anchor && (\n          <div className={anchorContainerClassNames}>\n            {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-collection.scss';\n\nexport interface CardCollectionProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Card Collection heading level title.\n   */\n  headingLevel: HeadingLevel;\n  /**\n   * Defines the subtitle\n   */\n  subtitle?: ReactNode;\n  /**\n   * Defines the title\n   */\n  title?: ReactNode;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardCollection: FC<CardCollectionProps> = ({\n  headingLevel: Heading,\n  subtitle,\n  title,\n  mainAnchor,\n  blockedLink = false,\n  className,\n  ...props\n}) => {\n  const cardCollectionRef = useRef<HTMLDivElement | null>(null);\n\n  const cardCollectionAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const CardCollectionClass = classNames('agora-card-collection', className);\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    anchor: !title && !subtitle && !!mainAnchor && !mainAnchor.hidden\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    subtitle: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.subtitle = !title && !!subtitle;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} variant=\"neutral\" darkMode appearance=\"link\" ref={cardCollectionAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} variant=\"neutral\" darkMode appearance=\"link\" ref={cardCollectionAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardCollectionRef,\n    anchorRef: cardCollectionAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const anchorContainerClassNames = classNames('anchor-container', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardCollectionRef} className={CardCollectionClass}>\n      <div className=\"card-info\">\n        {subtitle && (\n          <div className=\"subtitle-container\">\n            {buildText(subtitle, mainAnchorClone, anchorPlacement.subtitle, headingPlacement.subtitle)}\n          </div>\n        )}\n\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>}\n\n        {anchorPlacement.anchor && (\n          <div className={anchorContainerClassNames}>\n            {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n          </div>\n        )}\n      </div>\n      <div className=\"custom-svg-container -z-10 absolute top-0 left-0 min-w-full min-h-full w-full h-full flex justify-center items-center bg-primary-900 xs:py-0 md:py-64 xl:py-128\">\n        <svg\n          className=\"custom-svg\"\n          width=\"100%\"\n          height=\"100%\"\n          viewBox=\"0 0 384 378\"\n          aria-hidden\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"none\"\n        >\n          <g opacity=\"0.04\" stroke=\"white\" strokeWidth=\"24\" strokeMiterlimit=\"9.56677\" strokeLinecap=\"round\">\n            <path d=\"M-436 189.113C-237.528 189.113 -202.994 271.214 -118.581 252.744C-42.7446 236.151 30.3181 89.0689 81.1009 93.8569C133.588 98.8049 4.82279 267.863 60.1717 290.185C105.121 308.314 250.971 -0.840043 299.676 13.483C357.976 30.624 189.186 355.513 249.579 364.748C308.959 373.827 348.241 135.047 419.085 122.245C483.27 110.647 497 189.113 742 189.113\" />\n          </g>\n        </svg>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { Icon, IconProps } from '@/components/icon';\n\nimport './card-emphasize.scss';\n\n/**\n * The available alignments of the card emphasize.\n */\nexport type CardEmphasizeAlignment = 'left' | 'center' | 'right';\n\nexport interface CardEmphasizeProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Definition of the icon to use in the card.\n   */\n  icon?: IconProps;\n  /**\n   * The card title.\n   */\n  title?: ReactNode;\n  /**\n   * The card description.\n   */\n  description?: ReactNode;\n  /**\n   * Card main button definition.\n   */\n  mainButton?: ButtonProps;\n  /**\n   * Apply the alignment specified in all card content.\n   */\n  alignment?: CardEmphasizeAlignment;\n}\n\nexport const CardEmphasize: FC<CardEmphasizeProps> = ({\n  icon,\n  title,\n  description,\n  mainButton,\n  alignment = 'left',\n  className,\n  ...props\n}) => {\n  const cardEmphasizeClasseNames = classNames('agora-card-emphasize', `card-${alignment}`, className);\n\n  const iconProps = {\n    ...icon,\n    className: classNames('card-emphasize-icon', icon?.className)\n  };\n\n  const buttonProps = {\n    ...mainButton,\n    className: classNames('card-emphasize-button', mainButton?.className)\n  } as ButtonProps;\n\n  return (\n    <div {...props} role=\"presentation\" className={cardEmphasizeClasseNames}>\n      {icon && <Icon {...iconProps} />}\n      {title && <div className=\"card-emphasize-title\">{title}</div>}\n      {description && <div className=\"card-emphasize-description\">{description}</div>}\n      {mainButton && <Button {...buttonProps} />}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './link-wrapper.scss';\n\nexport type LinkWrapperAppearance = 'link' | 'text';\n\nexport type LinkWrapperVariant = 'primary' | 'informative' | 'neutral' | 'success' | 'warning' | 'danger';\n\nexport interface LinkWrapperProps extends Omit<ComponentProps<'span'>, 'children'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The anchor appearance. Define the anchor Shape.\n   */\n  appearance?: LinkWrapperAppearance;\n  /**\n   * The variant of the anchor. This variants will define the background and border color of the given Anchor\n   */\n  variant?: LinkWrapperVariant;\n  /**\n   * Defines if the anchor should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if anchor is inline text or not. An inline element does not start on a new line and takes up as much width as necessary. See https://www.w3schools.com/html/html_blocks.asp.\n   */\n  inline?: BooleanProp;\n  /**\n   * Children anchor.\n   */\n  children?: ReactNode;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst LinkWrapper: FC<LinkWrapperProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'text',\n  variant = 'primary',\n  fullWidth = false,\n  children,\n  className = '',\n  inline = false,\n  ...props\n}) => {\n  const anchorContainerClassName = classNames(\n    'agora-link-wrapper',\n    `agora-link-wrapper-${appearance}-${variant}`,\n    { 'dark-mode': stringToBoolean(darkMode) },\n\n    { 'full-width': fullWidth },\n\n    { 'inline-flex items-center': !props.hidden },\n    { 'justify-center min-h-[44px] min-w-[44px] py-8': !stringToBoolean(inline) },\n    { 'justify-start': stringToBoolean(inline) },\n\n    className\n  );\n\n  return (\n    <span {...props} ref={ref} className={anchorContainerClassName}>\n      {children}\n    </span>\n  );\n};\n\nexport { LinkWrapper };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './card-error.scss';\n\nexport interface CardErrorProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   *  The card icon.\n   */\n  icon?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   *  Navigation link used to go back from the error page. It can be a native anchor or any other type of link (example: NextJS link, ReactRouter Link, etc...).\n   */\n  backLink?: ReactNode;\n  /**\n   * The status message of the card.\n   */\n  statusCodeMessage?: ReactNode;\n  /**\n   * The dark mode of the card.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const CardError: FC<CardErrorProps> = ({\n  icon,\n  title,\n  subtitle,\n  description,\n  backLink,\n  statusCodeMessage,\n  darkMode = false,\n  className = '',\n  ...props\n}) => {\n  const CardLinksClasses = classNames('card-error', stringToBoolean(darkMode) ? 'dark' : 'default', className);\n\n  return (\n    <div className={CardLinksClasses} {...props}>\n      {icon && <div className=\"icon-container\">{icon}</div>}\n      {title && <div className=\"title\">{title}</div>}\n      {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n      {description && <div className=\"description\">{description}</div>}\n      {backLink && (\n        <div className=\"go-back\">\n          <LinkWrapper darkMode={stringToBoolean(darkMode)} variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}>\n            {backLink}\n          </LinkWrapper>\n        </div>\n      )}\n      {statusCodeMessage && <div className=\"status-code-message\">{statusCodeMessage}</div>}\n    </div>\n  );\n};\n","import React, { HTMLProps } from 'react';\n\nexport const BookmarkIcon = (props: HTMLProps<SVGSVGElement>) => {\n  const newProps = { ...props };\n  delete newProps.alt;\n  delete newProps.title;\n\n  return (\n    <svg width=\"24\" height=\"32\" viewBox=\"0 0 24 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...newProps} role=\"img\">\n      {props.title && <title>{props.title}</title>}\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M0.923077 0C0.413276 0 0 0.421379 0 0.941176V31.0588C0 31.4134 0.195426 31.7379 0.505561 31.8982C0.815697 32.0586 1.18791 32.0276 1.46846 31.8182L12 23.9544L22.5315 31.8182C22.8121 32.0276 23.1843 32.0586 23.4944 31.8982C23.8046 31.7379 24 31.4134 24 31.0588V0.941176C24 0.421379 23.5867 0 23.0769 0H0.923077Z\"\n        fill=\"#BBD1FD\"\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M0.923077 0C0.413276 0 0 0.421379 0 0.941176V5.64706H24V0.941176C24 0.421379 23.5867 0 23.0769 0H0.923077Z\"\n        fill=\"#034AD8\"\n      />\n    </svg>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, SyntheticEvent, useEffect, useId, useRef, useState } from 'react';\n\nimport { Icon } from '@/components/icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\n\nimport { createSyntheticEvent } from '@/utils/create-synthetic-event';\nimport { useExpandedRef } from '@/utils/expand-ref';\nimport './card-accordion.scss';\n\n/**\n * The available variants of the accordion. Those variants will define the style of the accordion.\n */\nexport type CardAccordionVariant = 'white' | 'primary-light' | 'primary-dark';\n\nexport interface CardAccordionElement extends HTMLDivElement {\n  /**\n   *  Expand the accordion.\n   */\n  expand: () => void;\n  /**\n   *  Collapse the accordion.\n   */\n  collapse: () => void;\n  /**\n   *  Toggles the content of the accordion.\n   */\n  toggle: () => void;\n  /**\n   *  Current value of the expanded state of the accordion.\n   */\n  isExpanded: boolean;\n}\n\nexport interface CardAccordionProps extends ComponentProps<'div'> {\n  /**\n   * The variant of the accordion. Those variants will define the style of the accordion.\n   */\n  variant?: CardAccordionVariant;\n  /**\n   * Accordion header title.\n   */\n  headingTitle?: ReactNode;\n  /**\n   * Accordion heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Accordion content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n}\n\nconst CardAccordion: FC<CardAccordionProps> = ({\n  ref = null,\n  children,\n  variant = 'white',\n  headingTitle,\n  'headingLevel': Component = 'h3',\n  className = '',\n  defaultExpanded,\n  'expanded': expandedFromProps,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  'aria-label': ariaLabel,\n  ...props\n}): ReactElement => {\n  const generatedId = useId();\n\n  const isControlled = typeof expandedFromProps != 'undefined';\n\n  const hasDefaultValue = typeof defaultExpanded != 'undefined';\n\n  const [internalExpandedValue, setInternalExpandedValue] = useState(hasDefaultValue ? stringToBoolean(defaultExpanded) : false);\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n\n  // Internally, we need to deal with some value. Depending on whether the component is controlled or not, that value comes from its props or from its internal state.\n  const expanded = isControlled ? stringToBoolean(expandedFromProps) : internalExpandedValue;\n\n  const [eventToTrigger, setEventToTrigger] = useState<{ name: 'expand' | 'collapse' | null }>({ name: null });\n\n  const expand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n\n    setEventToTrigger({ name: 'expand' });\n  };\n\n  const collapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n\n    setEventToTrigger({ name: 'collapse' });\n  };\n\n  const toggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n\n    if (expanded) {\n      setEventToTrigger({ name: 'collapse' });\n    }\n\n    if (!expanded) {\n      setEventToTrigger({ name: 'expand' });\n    }\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const externalRef = useExpandedRef<CardAccordionElement>(\n    ref as React.RefObject<CardAccordionElement>,\n    innerRef,\n    {\n      isExpanded: expanded,\n      expand,\n      collapse,\n      toggle\n    } as CardAccordionElement,\n    [innerRef, expanded]\n  );\n\n  useEffect(() => {\n    if (eventToTrigger.name === 'expand') {\n      const expandedEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'expand');\n      onExpanded?.(expandedEvt);\n    }\n\n    if (eventToTrigger.name === 'collapse') {\n      const collapsedEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'collapse');\n      onCollapsed?.(collapsedEvt);\n    }\n\n    const changeEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'change');\n    onChange?.(changeEvt);\n  }, [eventToTrigger]);\n\n  const AccordionClassName = classNames(\n    'agora-card-accordion',\n    className,\n    {\n      'card-accordion-open': expanded,\n      'mobile': isMobile\n    },\n    variant\n  );\n  const AccordionBodyClassName = classNames('card-accordion-body', { 'card-accordion-body-block': expanded });\n  const AccordionIconClassName = classNames('icon icon-chevron', { 'icon-chevron-flip': expanded });\n\n  const onClickHandler = () => {\n    toggle();\n  };\n\n  return (\n    <div className={AccordionClassName} {...props} ref={innerRef}>\n      <Component className=\"flex justify-start items-center w-full\">\n        <button\n          aria-label={ariaLabel}\n          type=\"button\"\n          className=\"card-accordion-header\"\n          aria-expanded={expanded}\n          id={`agora-card-accordion-${generatedId}-control`}\n          aria-controls={`agora-card-accordion-${generatedId}-region`}\n          onClick={onClickHandler}\n        >\n          <div className=\"card-accordion-header-button-wrapper\">\n            <Icon aria-hidden name=\"agora-line-chevron-down\" className={AccordionIconClassName} />\n            {headingTitle && <span className=\"title\">{headingTitle}</span>}\n          </div>\n        </button>\n      </Component>\n      <div\n        className={AccordionBodyClassName}\n        id={`agora-card-accordion-${generatedId}-region`}\n        role=\"region\"\n        aria-labelledby={`agora-card-accordion-${generatedId}-control`}\n      >\n        <div className=\"children-wrapper\">{children}</div>\n      </div>\n    </div>\n  );\n};\n\nexport { CardAccordion };\n","import { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, SyntheticEvent } from 'react';\nimport './card-expandable.scss';\nimport { CardAccordion, CardAccordionElement } from './card-accordion';\n\nimport { IconItem } from '../../shared/icon-set/icon-set';\n\n/**\n * The available variants of the card. Those variants will define the style of the card.\n */\nexport type CardExpandableVariant = 'white' | 'primary-light' | 'primary-dark';\n\nexport interface CardExpandableElement extends CardAccordionElement {}\n\nexport interface CardExpandableProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The variant of the card. Those variants will define the style of the card.\n   */\n  variant?: CardExpandableVariant;\n  /**\n   * Heading level to apply in the card.\n   */\n  cardHeadingLevel: HeadingLevel;\n  /**\n   * Card title.\n   */\n  cardTitle: ReactNode;\n  /**\n   * Card subtitle.\n   */\n  cardSubtitle?: ReactNode;\n  /**\n   * Card icon.\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n  /**\n   * CardAccordion heading level title.\n   */\n  accordionHeadingLevel: HeadingLevel;\n  /**\n   * CardAccordion header title.\n   */\n  accordionHeadingTitle: ReactNode;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n}\n\nconst CardExpandable: FC<CardExpandableProps> = ({\n  ref = null,\n  variant = 'primary-light',\n  cardHeadingLevel: Component,\n  cardTitle,\n  cardSubtitle,\n  showBookmarkIcon,\n  hasIcon,\n  leadingIcon,\n  children,\n  accordionHeadingLevel,\n  accordionHeadingTitle,\n  expanded,\n  defaultExpanded,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  className = '',\n  ...props\n}): ReactElement => {\n  const CardExpandableClasses = classNames('agora-card-expandable', className, {\n    'white': variant === 'white',\n    'primary-dark': variant === 'primary-dark'\n  });\n\n  return (\n    <div className={CardExpandableClasses} {...props}>\n      {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"card-expandable-icon\" aria-hidden />}\n\n      <div className=\"card-expandable-header\">\n        <div className=\"header-title-container\">\n          {stringToBoolean(hasIcon) && leadingIcon && <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon} />}\n          <Component className=\"header-title\">{cardTitle}</Component>\n        </div>\n        {cardSubtitle && <Component className=\"header-subtitle\">{cardSubtitle}</Component>}\n      </div>\n\n      <CardAccordion\n        variant={variant}\n        headingLevel={accordionHeadingLevel}\n        headingTitle={accordionHeadingTitle}\n        expanded={expanded}\n        defaultExpanded={defaultExpanded}\n        onExpanded={onExpanded}\n        onCollapsed={onCollapsed}\n        onChange={onChange}\n        ref={ref}\n      >\n        {children}\n      </CardAccordion>\n    </div>\n  );\n};\n\nexport { CardExpandable };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode, useRef } from 'react';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { useBlockedLink } from '../shared/use-blocked-link';\nimport './card-frame.scss';\n\nexport interface CardFrameProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel: HeadingLevel;\n  /**\n   * Label header.\n   */\n  label: ReactNode;\n  /**\n   * Definition of the anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Makes the whole card clickable and activates the link.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardFrame: FC<CardFrameProps> = ({\n  className,\n  label,\n  headingLevel: Heading,\n  mainAnchor,\n  blockedLink = false,\n  children,\n  ...props\n}) => {\n  const cardFrameRef = useRef<HTMLDivElement | null>(null);\n  const cardFrameAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const cardFrameClassNames = classNames('agora-card-frame', className);\n\n  const anchorPlacement = {\n    anchor: false,\n    label: false,\n    children: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.leadingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.leadingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.label = !!label;\n      anchorPlacement.children = false;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardFrameAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardFrameAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardFrameRef,\n    anchorRef: cardFrameAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardFrameContainerClass = classNames('container-body', { 'anchor-icon-only': mainAnchor?.iconOnly }, className);\n\n  return (\n    <div {...props} ref={cardFrameRef} role=\"presentation\" className={cardFrameClassNames}>\n      <div className={cardFrameContainerClass}>\n        {label && <div className=\"label-container\">{buildText(label, mainAnchorClone, anchorPlacement.label, true)}</div>}\n\n        {children && <div className=\"children-container\">{buildText(children, mainAnchorClone, anchorPlacement.children, false)}</div>}\n\n        {anchorPlacement.anchor && (\n          <div className=\"anchor-container\">{buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, false)}</div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ImgHTMLAttributes, ReactElement } from 'react';\n\nimport classNames from 'classnames';\n\nimport { CardHeroHelperProps } from '@/components/cards/card-hero-helper';\nimport { CardHeroIndexProps } from '@/components/cards/card-hero-index';\nimport { CardHeroSitemapProps } from '@/components/cards/card-hero-sitemap';\n\nimport './card-full-image.scss';\n\nexport interface CardFullImageProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children: ReactElement<CardHeroSitemapProps | CardHeroIndexProps | CardHeroHelperProps>;\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n}\n\nexport const CardFullImage: FC<CardFullImageProps> = ({ image, ...props }) => {\n  const cardFullImageClassName = classNames('agora-card-full-image', props.className);\n\n  return (\n    <div className={cardFullImageClassName} {...props}>\n      <div className=\"card-background\">\n        <div className=\"card-image-container\">\n          <img className=\"card-image\" src={image.src} alt={image.alt} aria-hidden={image['aria-hidden'] ?? true} />\n        </div>\n      </div>\n      <div className=\"card-content\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-x-32\">\n          <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-5 xl:col-start-7\">{props.children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\nimport { HeadingLevel } from '@/models';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport './card-hero-helper.scss';\n\nexport interface HelpTopic {\n  description: ReactNode;\n  anchor: AnchorProps;\n}\n\nexport interface CardHeroHelperProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card\n   */\n  subtitle?: ReactNode;\n  /**\n   * The list of help topics of the card\n   */\n  helpTopics?: HelpTopic[];\n}\n\nexport const CardHeroHelper: FC<CardHeroHelperProps> = ({\n  subtitle,\n  headingLevel: Heading = 'h2',\n  title,\n  helpTopics = [],\n  className,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const CardHeroHelperClasses = classNames('agora-card-hero-helper', className);\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className={CardHeroHelperClasses} {...props}>\n      {(subtitle || title) && (\n        <div className=\"flex gap-8 flex-col\">\n          {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n        </div>\n      )}\n\n      {helpTopics.length > 0 && (\n        <ul className=\"flex flex-col justify-start items-start gap-32\">\n          {helpTopics?.map((block, index) => {\n            const key = `card-hero-helper-${generatedId}-description-block-${index}`;\n            return (\n              <li key={key} className=\"flex flex-col gap-16 justify-start items-start\">\n                <div>{block.description}</div>\n                <Anchor {...block?.anchor} />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './card-hero-index.scss';\n\nexport interface CardHeroIndexProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   *  Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The list of anchor props that makes up the index.\n   */\n  index: AnchorProps[];\n}\n\nexport const CardHeroIndex: FC<CardHeroIndexProps> = ({ title, headingLevel: Heading = 'h3', index, className, ...props }) => {\n  const generatedId = useId();\n\n  const CardExpandableClasses = classNames('agora-card-hero-index', className);\n\n  return (\n    <div className={CardExpandableClasses} {...props}>\n      {title && <Heading className=\"card-hero-index-title\">{title}</Heading>}\n\n      {index.length > 0 && (\n        <ul className=\"index-list\">\n          {index.map((cardIndex, idx) => {\n            const key = `card-index-${generatedId}-index-item-${idx}`;\n            return (\n              <li key={key}>\n                <Anchor {...cardIndex} appearance=\"link\" variant=\"neutral\">\n                  {cardIndex.children}\n                </Anchor>\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './card-hero-sitemap.scss';\n\nexport interface CardHeroSitemapProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of anchor props that makes up the index.\n   */\n  anchors: AnchorProps[];\n  /**\n   * The anchor props that makes up the highlighted link.\n   */\n  highlightedLink?: AnchorProps;\n}\n\nexport const CardHeroSitemap: FC<CardHeroSitemapProps> = ({\n  description,\n  headingLevel: Heading = 'h2',\n  title,\n  anchors,\n  highlightedLink,\n  className,\n  ...props\n}) => {\n  const generatedId = useId();\n  const arrayLink = anchors.slice(0, 5);\n\n  const CardHeroSitemapClasses = classNames('agora-card-hero-sitemap', className);\n\n  const headingPlacement = {\n    title: !!title,\n    description: !title && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className={CardHeroSitemapClasses} {...props}>\n      {(title || description) && (\n        <div className=\"flex gap-8 flex-col  text-l-semibold\">\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          {description && <div className=\"description-container\">{buildText(description, headingPlacement.description)}</div>}\n        </div>\n      )}\n\n      {arrayLink.length > 0 && (\n        <ul className=\"flex flex-col justify-start items-start gap-8\">\n          {arrayLink?.map((link, index) => {\n            const key = `card-hero-sitemap-${generatedId}-description-block-${index}`;\n            return (\n              <li key={key}>\n                <Anchor {...link} />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n\n      {highlightedLink && (\n        <Anchor\n          appearance=\"link\"\n          {...highlightedLink}\n          hasIcon={highlightedLink.hasIcon ?? true}\n          trailingIcon={highlightedLink.trailingIcon ?? 'agora-line-arrow-right-circle'}\n          trailingIconHover={highlightedLink.trailingIcon ?? 'agora-line-arrow-right-circle'}\n          {...(!highlightedLink?.children && { className: '!block' })}\n        />\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useId } from 'react';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './inner-highlight-card.scss';\n\nexport interface InnerHighlightCardProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of links of the card\n   */\n  links: AnchorProps[];\n}\n\nexport const InnerHighlightCard: FC<InnerHighlightCardProps> = ({\n  title,\n  subtitle,\n  description,\n  links,\n  headingLevel: Heading = 'h3',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    description: !title && !subtitle && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className=\"inner-highlight-card\" {...props}>\n      {(subtitle || title || description) && (\n        <div className=\"flex flex-col gap-8\">\n          {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          {description && <div className=\"description-container\">{buildText(description, headingPlacement.description)}</div>}\n        </div>\n      )}\n\n      {links?.length > 0 && (\n        <ul className=\"links-container\">\n          {links?.map((link, index) => {\n            const key = `card-highlight-links-list-${generatedId}-${index}`;\n            return (\n              <li key={key}>\n                <Anchor\n                  appearance=\"link\"\n                  hasIcon\n                  trailingIcon=\"agora-line-arrow-right-circle\"\n                  trailingIconHover=\"agora-line-arrow-right-circle\"\n                  {...link}\n                />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode, useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { AnchorProps } from '@/components/anchor';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { HeadingLevel } from '@/models';\nimport { InnerHighlightCard } from './shared/inner-highlight-card';\n\nimport './card-highlight.scss';\n\nexport type HighlightAreaPositionType = 'interior' | 'exterior';\nexport type HighlightCardPositionType = 'bottom' | 'middle';\nexport type HighlightCardSizeType = 's' | 'default';\n\nexport interface CardHighlightProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * The subtitle to be displayed.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title to be displayed.\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of links of the card.\n   */\n  links: AnchorProps[];\n  /**\n   * Positioning title and subtitle internally/externally of the card.\n   */\n  highlightAreaPosition?: HighlightAreaPositionType;\n  /**\n   * Positioning card.\n   */\n  cardPosition?: HighlightCardPositionType;\n  /**\n   * Card size\n   */\n  cardSize?: HighlightCardSizeType;\n}\n\nexport const CardHighlight: FC<CardHighlightProps> = ({\n  image,\n  title,\n  subtitle,\n  description,\n  highlightAreaPosition = 'exterior',\n  headingLevel: Heading = 'h3',\n  links,\n  cardPosition = 'bottom',\n  cardSize = 'default',\n  className,\n  ...props\n}) => {\n  const cardHighlightClassName = classNames('agora-card-highlight', cardPosition, `card-${cardSize}`, className);\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isTablet = width >= mdScreen && width < xlScreen;\n  const isMobile = width < mdScreen;\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    description: !title && !subtitle && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  const cardInfoRef = useRef<HTMLDivElement>(null);\n  const cardContentRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (!cardContentRef.current) return;\n\n    cardContentRef.current.style.marginTop = '';\n\n    if (width < xlScreen || cardPosition === 'bottom' || highlightAreaPosition === 'interior') return;\n\n    const height = cardInfoRef.current?.clientHeight ?? 0;\n    const spaceBetweenElements = 32;\n    const marginTop = -248;\n    const heightLessDefaultValue = height - 136;\n    const result = marginTop + spaceBetweenElements + heightLessDefaultValue;\n\n    cardContentRef.current.style.marginTop = `${result}px`;\n  }, [title, subtitle, width]);\n\n  return (\n    <div className={cardHighlightClassName} {...props}>\n      <div className=\"card-image-container\">\n        <img className=\"card-image\" {...image} src={image.src} alt={image.alt} aria-hidden={image['aria-hidden'] ?? true} />\n      </div>\n      {(title || subtitle) && highlightAreaPosition === 'exterior' && !isMobile && !isTablet && (\n        <div className=\"card-box-exterior\">\n          <div ref={cardInfoRef} className=\"card-info\">\n            {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n            {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          </div>\n        </div>\n      )}\n      <div ref={cardContentRef} className=\"card-content\">\n        <div className=\"shared-card-content\">\n          <InnerHighlightCard\n            headingLevel={Heading}\n            {...(highlightAreaPosition === 'interior' || isTablet || isMobile ? { title, subtitle } : undefined)}\n            description={description}\n            links={links}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { InputEmailBarProps } from '@/components/input-email-bar/input-email-bar';\n\nimport './card-highlight-newsletter.scss';\n\nexport interface CardHighlightNewsletterProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The title to be displayed.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle to be displayed.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * Children content.\n   */\n  children: ReactElement<InputEmailBarProps>;\n}\n\nexport const CardHighlightNewsletter: FC<CardHighlightNewsletterProps> = ({ title, subtitle, image, ...props }) => {\n  const cardHighlightNewsletterClassName = classNames('agora-card-highlight-newsletter', props.className);\n\n  return (\n    <div className={cardHighlightNewsletterClassName} style={{ backgroundImage: `url(${image.src})` }} {...props}>\n      <div className=\"card-container\">\n        <div className=\"card-content\">\n          {title && <div className=\"title\">{title}</div>}\n          {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n        </div>\n        <div className=\"input-container\">\n          <div className=\"email-bar\">{props.children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\n\nimport './card-highlight-single.scss';\nimport { stringToBoolean } from '@/utils';\nimport { BooleanProp } from '@/models';\n\nexport interface CardHighlightSingleProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Card title.\n   */\n  title?: ReactNode;\n  /**\n   * Card subtitle.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Card icon.\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Button props.\n   */\n  actionButton?: ButtonProps;\n}\n\nexport const CardHighlightSingle: FC<CardHighlightSingleProps> = ({\n  title,\n  subtitle,\n  actionButton,\n  showBookmarkIcon,\n  className = '',\n  ...props\n}) => {\n  const CardHighLightClasses = classNames('agora-card-highlight-single', className);\n\n  return (\n    <div className={CardHighLightClasses} {...props}>\n      <div className=\"custom-svg-container\">\n        <svg\n          className=\"custom-svg\"\n          width=\"100%\"\n          height=\"100%\"\n          viewBox=\"0 0 384 378\"\n          aria-hidden\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"none\"\n        >\n          <g opacity=\"0.04\" stroke=\"white\" strokeWidth=\"24\" strokeMiterlimit=\"9.56677\" strokeLinecap=\"round\">\n            <path d=\"M-436 189.113C-237.528 189.113 -202.994 271.214 -118.581 252.744C-42.7446 236.151 30.3181 89.0689 81.1009 93.8569C133.588 98.8049 4.82279 267.863 60.1717 290.185C105.121 308.314 250.971 -0.840043 299.676 13.483C357.976 30.624 189.186 355.513 249.579 364.748C308.959 373.827 348.241 135.047 419.085 122.245C483.27 110.647 497 189.113 742 189.113\" />\n          </g>\n        </svg>\n      </div>\n      <div className=\"card-content\">\n        <div className=\"content\">\n          {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"card-highlight-single-icon\" aria-hidden />}\n          <div className=\"card-title\">{title && <div className=\"title\">{title}</div>}</div>\n          <div className=\"card-action\">\n            {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n            <div className=\"action-button\">\n              <Button {...actionButton} />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { CardLinksStyles } from './card-links';\n\ntype CardLinksStylesBody = {\n  backgroundColor: string;\n  textColor?: string;\n  borderColor?: string;\n};\n\nexport type CardLinksStylesMap = Record<CardLinksStyles, CardLinksStylesBody>;\n\nexport const cardLinksStylesMap: CardLinksStylesMap = {\n  'transparent': {\n    backgroundColor: 'bg-transparent',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-[var(--color-neutral-700)]'\n  },\n  'white': {\n    backgroundColor: 'bg-white',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-neutral-700'\n  },\n  'neutral-100': {\n    backgroundColor: 'bg-neutral-100',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-neutral-700'\n  },\n  'primary-100': {\n    backgroundColor: 'bg-primary-100',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-neutral-700'\n  },\n  'secondary-100': {\n    backgroundColor: 'bg-secondary-100',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-neutral-700'\n  },\n  'primary-300': {\n    backgroundColor: 'bg-primary-300',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-neutral-700'\n  },\n  'secondary-300': {\n    backgroundColor: 'bg-secondary-300',\n    textColor: 'text-neutral-900',\n    borderColor: 'border-neutral-700'\n  },\n  'primary-500': {\n    backgroundColor: 'bg-primary-500',\n    textColor: 'text-white',\n    borderColor: 'border-white'\n  },\n  'primary-700': {\n    backgroundColor: 'bg-primary-700',\n    textColor: 'text-white',\n    borderColor: 'border-white'\n  },\n  'primary-900': {\n    backgroundColor: 'bg-primary-900',\n    textColor: 'text-white',\n    borderColor: 'border-white'\n  }\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode, useId, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Icon } from '@/components/icon';\n\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-links.scss';\nimport { cardLinksStylesMap } from './card-links-style';\n\nexport type CardLinksStyles =\n  | 'transparent'\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900';\n\nexport interface CardLinksProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Style of card\n   */\n  variant?: CardLinksStyles;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The category of the card.\n   */\n  category?: ReactNode;\n  /**\n   * Card date label.\n   */\n  date?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description2?: ReactNode;\n  /**\n   * Second description of the card.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * Anchor props to render in heading.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * The list of links of the card.\n   */\n  links?: AnchorProps[];\n  /**\n   * The list of topics of the card.\n   */\n  topics?: ReactNode[];\n  /**\n   *  Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Makes the title clickable.\n   */\n  titleLink?: BooleanProp;\n}\n\n// ...existing code...\n\nexport const CardLinks: FC<CardLinksProps> = ({\n  headingLevel: Heading = 'h2',\n  category,\n  title,\n  description,\n  description2,\n  image,\n  date,\n  mainAnchor,\n  links = [],\n  topics = [],\n  className,\n  darkMode,\n  titleLink,\n  variant,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const cardLinksRef = useRef<HTMLDivElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const backgroundColor: string =\n    variant && cardLinksStylesMap[variant]?.backgroundColor ? cardLinksStylesMap[variant].backgroundColor : 'bg-neutral-100';\n  const textColor: string = variant && cardLinksStylesMap[variant]?.textColor ? cardLinksStylesMap[variant].textColor : 'text-neutral-900';\n  const borderColor: string =\n    variant && cardLinksStylesMap[variant]?.borderColor ? cardLinksStylesMap[variant].borderColor : 'border-neutral-700';\n\n  const cardLinksClasses = classNames(\n    'agora-card-links',\n    [backgroundColor],\n    [borderColor],\n    [textColor],\n    {\n      'dark-mode': stringToBoolean(darkMode)\n    },\n    className\n  );\n\n  //  MAIN ANCHOR IS OPTIONAL SINCE ITS ONLY USED AS THE LINK TO THE BLOCKED LINK\n  let mainAnchorClone: AnchorProps | null = null;\n\n  if (mainAnchor && stringToBoolean(titleLink)) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    //  MUST DELETE IN ORDER TO SPREAD IT LATER\n    delete mainAnchorClone.hidden;\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps | null, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor || !anchorProps) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <Heading>\n        <Anchor\n          {...anchorProps}\n          inline\n          appearance=\"link\"\n          variant={anchorProps?.variant ?? (textColor == 'text-white' ? 'neutral' : 'primary')}\n          ref={anchorRef}\n        >\n          {text}\n        </Anchor>\n      </Heading>\n    );\n  };\n\n  useBlockedLink({\n    anchorRef,\n    parentCardRef: cardLinksRef,\n    blockedLink: stringToBoolean(titleLink)\n  });\n\n  const shouldRenderLinks = !stringToBoolean(titleLink);\n\n  return (\n    <div className={`p-64 pb-96 ${backgroundColor} xs:p-32 md:p-64 xl:p-64`}>\n      <div {...props} role=\"presentation\" className={cardLinksClasses}>\n        <div className=\"top-container\">\n          {category && <div className=\"category\">{category}</div>}\n\n          <div className=\"content\">\n            {image && (\n              <div className=\"image-content h-full\">\n                <img src={image.src} alt={image.alt} {...image} />\n              </div>\n            )}\n\n            <div className={`text-content ${textColor}`}>\n              {date && <div className=\"date\">{date}</div>}\n\n              {title && <div className=\"title\">{buildText(title, mainAnchorClone, stringToBoolean(titleLink), true)}</div>}\n\n              <div className=\"description\">\n                {description && <div className=\"description\">{description}</div>}\n                {description2 && <div className=\"description\">{description2}</div>}\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {((shouldRenderLinks && links.length > 0) || topics.length > 0) && (\n          <div className=\"bottom-container\">\n            {shouldRenderLinks && links.length > 0 && (\n              <ul className=\"links\">\n                {links.map((link, index) => {\n                  const anchorKey = `card-link-${generatedId}-link-${index}`;\n                  return (\n                    <li key={anchorKey} className=\"link-container\">\n                      <Anchor\n                        {...link}\n                        appearance=\"link\"\n                        target={link.target}\n                        href={link.href}\n                        darkMode={textColor == 'text-white'}\n                        variant={textColor == 'text-white' ? 'neutral' : 'primary'}\n                        hasIcon={link.hasIcon ?? true}\n                        trailingIcon={link.trailingIcon ?? 'agora-line-arrow-right-circle'}\n                        trailingIconHover={link.trailingIcon ?? 'agora-line-arrow-right-circle'}\n                      >\n                        {link.children}\n                      </Anchor>\n                    </li>\n                  );\n                })}\n              </ul>\n            )}\n\n            {topics.length > 0 && (\n              <div className=\"topic-list\">\n                {topics.map((topic, index) => (\n                  <div key={`key-${Number(index)}`} className={`topic-item ${textColor}`}>\n                    {topic}\n                    {index < topics.length - 1 && <Icon aria-hidden name=\"agora-solid-bullet\" />}\n                  </div>\n                ))}\n              </div>\n            )}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { Icon } from '../icon';\n\nexport interface ItemProps extends ComponentPropsWithoutRef<'li'> {\n  /**\n   * Choose the icon for an unordered list.\n   */\n  icon?: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const Item: FC<ItemProps> = ({ icon, ...props }) => (\n  <li {...props}>\n    {icon !== undefined && <Icon name={icon} aria-hidden />}\n    <div className=\"list-items\">{props.children as ReactNode}</div>\n  </li>\n);\n","import React, { Children, ComponentPropsWithoutRef, CSSProperties, FC, isValidElement, ReactElement, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Item, ItemProps } from './item';\nimport './list.scss';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport type ListStyle = 'none' | 'bullet' | 'number' | 'icon';\n\nexport interface ListProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * Icon for the list.\n   */\n  icon?: string;\n  /**\n   * Style of the list depending on the chosen type.\n   */\n  listStyle?: ListStyle;\n  /**\n   * Choose the starting number of an ordered number list.\n   */\n  startNumber?: number;\n  /**\n   * Children content.\n   */\n  children?: ReactElement<ItemProps> | Array<ReactElement<ItemProps>>;\n  /**\n   * Add a darkMode to the list.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const List: FC<ListProps> = ({ listStyle = 'none', startNumber = 1, children, icon, darkMode = false, ...props }) => {\n  const ComponentType = listStyle === 'number' ? 'ol' : 'ul';\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const classes = classNames(`agora-list list-${listStyle}`, propsClone.className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const mappedLIElements = Children.map(children, (child) => {\n    if (!isValidElement<ItemProps>(child)) {\n      return null;\n    }\n\n    const childProps = {\n      ...child.props\n    };\n\n    if (icon) {\n      childProps.icon = icon;\n    }\n\n    return <Item {...childProps} />;\n  });\n\n  return (\n    <ComponentType\n      role=\"list\"\n      style={{ '--startNumber': startNumber } as CSSProperties}\n      start={startNumber}\n      className={classes}\n      id={propsClone.id}\n    >\n      {mappedLIElements}\n    </ComponentType>\n  );\n};\n","import React, { cloneElement, ComponentProps, FC, isValidElement, ReactNode } from 'react';\nimport { Item, List } from '@/components/list';\nimport { Anchor } from '@/components/anchor';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './card-no-results.scss';\n\nexport interface CardNoResultsProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Icon to display in the card.\n   */\n  icon?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   * The extra description of the card.\n   */\n  extraDescription?: ReactNode;\n  /**\n   * If the card should be displayed in a dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * allow you to say where the content should be aligned\n   */\n  position?: 'left' | 'center';\n  /**\n   * show the button within the card\n   */\n  hasAnchor?: boolean;\n  /**\n   * name of icon to show inside of anchor\n   */\n  anchorLeadingIcon?: string;\n  /**\n   * name of icon to show when hover the anchor\n   */\n  anchorLeadingIconHover?: string;\n  /**\n   * name of icon to show after the name of button when hover the anchor\n   */\n  anchorTrailingIcon?: string;\n  /**\n   * name of icon to show after the name of button when hover the anchor\n   */\n  anchorTrailingIconHover?: string;\n  /**\n   * name of button\n   */\n  valueAnchor?: string;\n  /**\n   * list of items to be displayed\n   */\n  itemList?: ReactNode[];\n  /**\n   * show the list inside the card\n   */\n  hasList?: boolean;\n  /**\n   * href of the anchor\n   */\n  anchorHref?: string;\n  /**\n   * target of the anchor link\n   */\n  anchorTarget?: '_blank' | '_self' | '_parent' | '_top';\n}\n\nexport const stringOrReactNode = (value: string | ReactNode, className: string) => {\n  if (typeof value === 'string') {\n    return <div className={className}>{value}</div>;\n  }\n\n  if (isValidElement(value)) {\n    return cloneElement(value as React.ReactElement, { className } as ComponentProps<'div'>);\n  }\n\n  return null;\n};\n\nexport const CardNoResults: FC<CardNoResultsProps> = ({\n  icon,\n  title,\n  subtitle,\n  description,\n  darkMode = false,\n  position = 'center',\n  className = '',\n  hasAnchor,\n  valueAnchor,\n  anchorLeadingIcon,\n  anchorLeadingIconHover,\n  anchorTrailingIcon,\n  anchorTrailingIconHover,\n  itemList = [],\n  anchorHref,\n  hasList,\n  anchorTarget = '_blank',\n  extraDescription,\n  ...props\n}) => {\n  const cardNoResultsClasses = classNames('agora-card-no-results', stringToBoolean(darkMode) ? 'dark' : 'default', className);\n\n  const mainContentClasses = classNames('main-content', {\n    'items-center': position === 'center',\n    'items-start': position === 'left',\n    'text-center': position === 'center'\n  });\n\n  const hasAnyAnchorIcon = !!anchorLeadingIcon || !!anchorLeadingIconHover || !!anchorTrailingIcon || !!anchorTrailingIconHover;\n\n  return (\n    <div className={cardNoResultsClasses} {...props}>\n      <div className={mainContentClasses}>\n        {icon && <div className=\"icon-container\">{icon}</div>}\n\n        {title && stringOrReactNode(title, 'title')}\n\n        {subtitle && stringOrReactNode(subtitle, 'subtitle')}\n\n        {description && stringOrReactNode(description, 'description')}\n\n        {extraDescription && stringOrReactNode(extraDescription, 'extra-description')}\n\n        {hasList && (\n          <List className=\"list\" listStyle=\"bullet\" darkMode={darkMode}>\n            {itemList?.map((item, index) => (\n              <Item key={index}>{item}</Item>\n            ))}\n          </List>\n        )}\n\n        {hasAnchor && valueAnchor && (\n          <Anchor\n            target={anchorTarget}\n            href={anchorHref}\n            darkMode={darkMode}\n            variant={darkMode ? 'neutral' : 'primary'}\n            className=\"anchor\"\n            hasIcon={hasAnyAnchorIcon}\n            leadingIcon={anchorLeadingIcon}\n            leadingIconHover={anchorLeadingIconHover}\n            trailingIcon={anchorTrailingIcon}\n            trailingIconHover={anchorTrailingIconHover}\n          >\n            {valueAnchor}\n          </Anchor>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Icon, IconProps } from '@/components/icon';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-single.scss';\n\n/**\n * Card Single Variants\n */\nexport type CardSingleVariant = 'default' | 'neutral' | 'white';\n\nexport interface CardSingleProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Defines the variant of the card single.\n   */\n  variant?: CardSingleVariant;\n  /**\n   * The icon props\n   */\n  icon?: IconProps;\n  /**\n   * Title Tag Card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardSingle: FC<CardSingleProps> = ({\n  variant = 'default',\n  icon,\n  headingLevel: Heading = 'h3',\n  title,\n  description,\n  mainAnchor,\n  blockedLink,\n  className,\n  ...props\n}) => {\n  const cardSingleRef = useRef<HTMLDivElement | null>(null);\n  const cardSingleAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    description: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.description = false;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  useBlockedLink({\n    parentCardRef: cardSingleRef,\n    anchorRef: cardSingleAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const CardSingleClasses = classNames('card-single', `card-${variant}`, className);\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardSingleAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardSingleAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n  const anchorContainerClassNames = classNames('anchor-container', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} ref={cardSingleRef} role=\"presentation\" className={CardSingleClasses}>\n      {icon && (\n        <div className=\"icon-container\">\n          <Icon {...icon} className=\"card-single-icon\" dimensions=\"m\" />\n        </div>\n      )}\n\n      <div className=\"info-container\">\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, true)}</div>}\n\n        {description && (\n          <div className=\"description-container\">{buildText(description, mainAnchorClone, anchorPlacement.description, false)}</div>\n        )}\n      </div>\n\n      {anchorPlacement.anchor && (\n        <div className={anchorContainerClassNames}>\n          {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, false)}\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Pill } from '@/components/pill';\n\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-topic.scss';\nimport { PillProps } from '@/components/pill/pill';\n\n/**\n * Available card topic variant styles.\n */\nexport type CardTopicVariant = 'default' | 'white' | 'informative' | 'success' | 'warning' | 'danger';\n/**\n * Available card topic status.\n */\nexport type CardTopicStatus = 'success' | 'warning' | 'danger';\n\nexport interface CardTopicProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Defines the variant of the card topic.\n   */\n  variant?: CardTopicVariant;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * Defines the status description.\n   */\n  description?: ReactNode;\n  /**\n   * The flag to set the pill.\n   */\n  hasPill?: BooleanProp;\n  /**\n   * Pill props.\n   */\n  pill?: PillProps;\n  /**\n   * Defines the status text.\n   */\n  statusLabel?: ReactNode;\n  /**\n   * Defines the status of the card topic.\n   */\n  status?: CardTopicStatus;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardTopic: FC<CardTopicProps> = ({\n  headingLevel: Heading = 'h3',\n  variant = 'default',\n  title,\n  description,\n  hasPill = false,\n  pill,\n  statusLabel,\n  status = 'success',\n  mainAnchor,\n  blockedLink = false,\n  className,\n  ...props\n}) => {\n  const variantMemo = useMemo(() => {\n    if (variant === 'default' || variant === 'white') {\n      return 'primary';\n    }\n\n    return variant;\n  }, [variant]);\n\n  const cardTopicRef = useRef<HTMLDivElement | null>(null);\n  const cardTopicAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const headingPlacement = {\n    title: !!title,\n    description: !title && !!description,\n    pill: !title && !description && !!hasPill,\n    anchor: !title && !description && !hasPill && !!mainAnchor && !mainAnchor.hidden\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    description: false,\n    pill: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.description = !title && !!description;\n      anchorPlacement.pill = !title && !description && !!hasPill;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" variant={variantMemo} ref={cardTopicAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" variant={variantMemo} ref={cardTopicAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardTopicRef,\n    anchorRef: cardTopicAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardTopicClasseNames = classNames('agora-card-topic', `card-${variant}`, { 'has-anchor-label': !mainAnchor?.iconOnly }, className);\n  const cardStatusClasseNames = classNames('card-topic-status', `card-topic-status-${status}`);\n  const anchorContainerClassNames = classNames('card-topic-anchor', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} role=\"presentation\" className={cardTopicClasseNames} ref={cardTopicRef}>\n      <div className=\"content-info\">\n        {hasPill && pill && (\n          <div className=\"card-topic-pill\">\n            <Pill {...pill}>{buildText(pill.children, mainAnchorClone, anchorPlacement.pill, headingPlacement.pill)} </Pill>\n          </div>\n        )}\n\n        {title && (\n          <div className=\"card-topic-title\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>\n        )}\n\n        {statusLabel && (\n          <div className=\"flex items-center gap-8\">\n            <div className={cardStatusClasseNames} />\n            <div>{statusLabel}</div>\n          </div>\n        )}\n\n        {description && (\n          <div className=\"card-topic-description\">\n            {buildText(description, mainAnchorClone, anchorPlacement.description, headingPlacement.description)}\n          </div>\n        )}\n      </div>\n\n      {anchorPlacement.anchor && (\n        <div className={anchorContainerClassNames}>\n          {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n        </div>\n      )}\n    </div>\n  );\n};\n","import { CardActionStyles } from './card-action';\nimport { ButtonVariant } from '../../button/button';\n\ntype CardActionStylesBody = {\n  backgroundColor: string;\n  textColor?: string;\n  titleColor?: string;\n  hasBorder?: boolean;\n  isBorderWhite?: boolean;\n  buttonVariant?: ButtonVariant;\n  buttonDarkMode?: boolean;\n  iconColor?: string;\n};\n\nexport type CardActionStylesMap = Record<CardActionStyles, CardActionStylesBody>;\n\nexport const cardActionStylesMap: CardActionStylesMap = {\n  'white': {\n    backgroundColor: 'bg-white'\n  },\n  'neutral-100': {\n    backgroundColor: 'bg-neutral-100'\n  },\n  'primary-100': {\n    backgroundColor: 'bg-primary-100'\n  },\n  'secondary-100': {\n    backgroundColor: 'bg-secondary-100'\n  },\n  'primary-300': {\n    backgroundColor: 'bg-primary-300'\n  },\n  'secondary-300': {\n    backgroundColor: 'bg-secondary-300'\n  },\n  'primary-500': {\n    iconColor: 'fill-white',\n    backgroundColor: 'bg-primary-500',\n    textColor: 'text-white',\n    titleColor: 'text-white',\n    buttonVariant: 'neutral'\n  },\n  'primary-700': {\n    iconColor: 'fill-white',\n    backgroundColor: 'bg-primary-700',\n    textColor: 'text-white',\n    titleColor: 'text-white',\n    buttonVariant: 'neutral'\n  },\n  'primary-900': {\n    iconColor: 'fill-white',\n    backgroundColor: 'bg-primary-900',\n    textColor: 'text-white',\n    titleColor: 'text-white',\n    buttonDarkMode: true\n  },\n  'white-line': {\n    backgroundColor: 'bg-white',\n    hasBorder: true\n  },\n  'primary-900-line': {\n    iconColor: 'fill-white',\n    backgroundColor: 'bg-primary-900',\n    textColor: 'text-white',\n    titleColor: 'text-white',\n    hasBorder: true,\n    isBorderWhite: true,\n    buttonDarkMode: true\n  }\n};\n","import React, { FC, ImgHTMLAttributes } from 'react';\nimport { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport { Icon, IconProps } from '@/components/icon';\nimport './card-action.scss';\nimport { cardActionStylesMap } from './card-action-styles';\nimport { BooleanProp } from '@/models';\n\nexport type CardActionStyles =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'white-line'\n  | 'primary-900-line';\n\nexport type CardActionAlignment = 'left' | 'center' | 'right';\n\nexport interface CardActionProps {\n  /**\n   * title of card\n   */\n  title: string;\n  /**\n   * text to show within the card\n   */\n  text: string;\n  /**\n   * style of card action\n   */\n  variant?: CardActionStyles;\n  /**\n   * it allow you align title, text and button\n   */\n  alignment?: CardActionAlignment;\n  /**\n   * show the card horizontally\n   */\n  isCardHorizontal?: BooleanProp;\n  /**\n   * name of icon logo\n   */\n  icon?: IconProps;\n  /**\n   * image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * props for the button component\n   */\n  button: ButtonProps;\n}\n\nexport const CardAction: FC<CardActionProps> = ({\n  variant = 'white',\n  alignment = 'left',\n  isCardHorizontal,\n  icon,\n  title,\n  text,\n  image,\n  button\n}) => {\n  const backgroundColor = cardActionStylesMap[variant]?.backgroundColor;\n  const textColor = cardActionStylesMap[variant]?.textColor ?? 'text-neutral-900';\n  const titleColor = cardActionStylesMap[variant]?.titleColor ?? 'text-neutral-900';\n  const hasBorder = cardActionStylesMap[variant]?.hasBorder ?? false;\n  const isBorderWhite = cardActionStylesMap[variant]?.isBorderWhite ?? false;\n  const buttonVariant = cardActionStylesMap[variant]?.buttonVariant ?? 'primary';\n  const buttonDarkMode = cardActionStylesMap[variant]?.buttonDarkMode ?? false;\n  const iconColor = cardActionStylesMap[variant]?.iconColor ?? 'fill-primary-600';\n\n  const cardActionContainerClassNames = classNames('card-action-container', {\n    'border-2': hasBorder,\n    'border-white': isBorderWhite,\n    'card-action-horizontal': isCardHorizontal,\n    'border-neutral-700': hasBorder && !isBorderWhite\n  });\n\n  const cardActionClassNames = classNames('card-action', [backgroundColor], {\n    'items-center': alignment === 'center',\n    'text-center': alignment === 'center',\n    'items-end': alignment === 'right',\n    'text-right': alignment === 'right'\n  });\n\n  const iconLogoClassNames = classNames('icon-logo', {\n    'justify-center': alignment === 'center',\n    'justify-end': alignment === 'right'\n  });\n\n  const titleClassNames = classNames('title', [titleColor]);\n\n  const buttonClassNames = classNames('flex w-full mt-32', {\n    'justify-center': alignment === 'center',\n    'justify-end': alignment === 'right'\n  });\n\n  const iconProps = {\n    ...icon,\n    className: classNames(icon?.className, iconColor, {\n      'justify-center': alignment === 'center',\n      'justify-end': alignment === 'right'\n    })\n  };\n\n  return (\n    <div className={cardActionContainerClassNames}>\n      {image?.src && <img {...image} alt={image?.alt ?? 'Card action image'} className=\"card-action-image\" />}\n\n      <div className={cardActionClassNames}>\n        <div className=\"mb-8 overflow-hidden\">\n          {icon && !image?.src && (\n            <div className={iconLogoClassNames}>\n              <Icon {...iconProps} />\n            </div>\n          )}\n\n          <span className={titleClassNames}>{title}</span>\n\n          <p className={textColor}>{text}</p>\n        </div>\n\n        <div className={buttonClassNames}>\n          <Button {...button} variant={buttonVariant} darkMode={buttonDarkMode} className=\"card-action-button\" />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Icon } from '@/components/icon';\nimport './feedback.scss';\n\nexport interface FeedbackProps extends ComponentProps<'div'> {\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * The flag to set if the feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst Feedback: FC<FeedbackProps> = ({ ref = null, className, feedbackState = 'info', feedbackText, darkMode, ...props }) => {\n  const feedbackWrapperClasses = classNames('feedback', className);\n  const feedbackIconWrapperClasses = classNames('feedback-icon-wrapper', `feedback-icon-wrapper-${feedbackState}`, {\n    dark: stringToBoolean(darkMode)\n  });\n  const feedbackTextClasses = classNames('feedback-text', stringToBoolean(darkMode) ? 'feedback-text-dark' : 'feedback-text-light');\n  /**\n   * Dictionary of possible icons feedback.\n   */\n  const feedbackStateIconsMap = {\n    info: 'agora-solid-info-mark',\n    danger: 'agora-solid-alert-triangle',\n    success: 'agora-solid-check-circle',\n    warning: 'agora-solid-alert-circle'\n  };\n\n  return (\n    <div {...props} className={feedbackWrapperClasses} ref={ref}>\n      <span className={feedbackIconWrapperClasses}>\n        <Icon name={feedbackStateIconsMap[feedbackState]} dimensions=\"s\" aria-hidden />\n      </span>\n      <p className={feedbackTextClasses}>{feedbackText}</p>\n    </div>\n  );\n};\n\nexport { Feedback };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\nimport './checkbox.scss';\n\nexport interface CheckboxProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Child elements to render as custom label.\n   */\n  children?: ReactNode;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * The flag to set if the checkbox is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst Checkbox: FC<CheckboxProps> = ({\n  ref = null,\n  className,\n  label,\n  hasError,\n  hideLabel,\n  required = true,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  darkMode,\n  children,\n  ...props\n}): ReactElement => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentChecked, setCurrentChecked] = useState(stringToBoolean(propsClone.checked ?? propsClone.defaultChecked));\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const handleCheckboxKeyDownCapture = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    //  CURRENT TARGET IS THE LISTENING ELEMENT. IF CLICK ON AN ANCHOR, LET IT TRIGGER ITS INTERNAL BEHAVIOR.\n    if (evt.target !== evt.currentTarget) {\n      return;\n    }\n\n    if (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter') {\n      evt.preventDefault();\n      evt.stopPropagation();\n      inputRef.current?.click();\n    }\n  };\n\n  const handleCheckboxClick = (evt: MouseEvent<HTMLInputElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    //  CURRENT TARGET IS THE LISTENING ELEMENT. IF CLICK ON AN ANCHOR, LET IT TRIGGER ITS INTERNAL BEHAVIOR.\n    if (evt.target !== evt.currentTarget) {\n      return;\n    }\n\n    if (evt.detail > 0) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      inputRef.current?.click();\n    }\n  };\n\n  const handleChange = () => {\n    setCurrentChecked((last) => !last);\n  };\n\n  const inputWrapper = classNames(\n    'agora-checkbox',\n    'inline-flex items-start min-h-[44px]',\n    {\n      'disabled': props.disabled,\n      'checked': currentChecked,\n      'dark': stringToBoolean(darkMode),\n\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n\n  useEffect(() => {\n    const checked = propsClone.checked ?? propsClone.defaultChecked;\n    if (checked !== undefined) {\n      setCurrentChecked(checked);\n    }\n  }, [propsClone.checked, propsClone.defaultChecked]);\n\n  return (\n    <div>\n      <div\n        {...propsClone}\n        className={inputWrapper}\n        id={`agora-checkbox-custom-${propsClone.id}`}\n        role=\"checkbox\"\n        tabIndex={props.disabled ? -1 : 0}\n        aria-checked={currentChecked}\n        aria-disabled={!!props.disabled}\n        aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n        aria-describedby={hasFeedbackText ? `checkbox-${propsClone.id}-feedback` : (propsClone['aria-describedby'] ?? undefined)}\n        aria-required={isRequired}\n        aria-invalid={stringToBoolean(hasError)}\n        onKeyDownCapture={handleCheckboxKeyDownCapture}\n        onClickCapture={handleCheckboxClick}\n      >\n        <input className=\"hidden\" {...propsClone} type=\"checkbox\" ref={inputRef} onChange={handleChange} />\n        <label className=\"label-checkbox\" htmlFor={propsClone.id}>\n          <span className=\"mark\">{currentChecked && <Icon name=\"agora-line-check\" aria-hidden />}</span>\n          {!hideLabel && <span className=\"label\">{children ?? label}</span>}\n        </label>\n      </div>\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <div className=\"agora-checkbox-button-feedback px-8\">\n          <Feedback\n            id={`checkbox-${propsClone.id}-feedback`}\n            feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n            feedbackText={feedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { Checkbox };\n","import React, { ChangeEvent, Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { CheckboxProps } from '@/components/checkbox/';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport interface CheckboxGroupProps extends Omit<HtmlHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n  /**\n   * Group legend.\n   */\n  legend?: ReactNode;\n  /**\n   * Sets the checkbox in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below checkbox-group.\n   */\n  feedbackText?: ReactNode;\n  /**\n   *  List of checkbox components to use as children of the group.\n   */\n  children?: ReactElement<CheckboxProps> | Array<ReactElement<CheckboxProps>>;\n  /**\n   *  Event triggered whenever any of the checkboxes changes is own state.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n}\nconst CheckboxGroup: FC<CheckboxGroupProps> = ({\n  className,\n  legend,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  onChange,\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const { hidden, ...fieldsetProps } = props;\n  const innerOnChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(evt);\n  };\n\n  const containerClasses = classNames('agora-checkbox-group', className);\n\n  const mappedCheckbox = Children.map(children, (child) => {\n    if (!isValidElement<CheckboxProps>(child)) {\n      return null;\n    }\n\n    return cloneElement<CheckboxProps>(child, {\n      'onChange': innerOnChange,\n      'hasError': stringToBoolean(hasError),\n      'hasFeedback': stringToBoolean(hasFeedback),\n      'aria-describedby': hasFeedbackText ? `checkbox-group-${generatedId}-feedback` : undefined\n    } as CheckboxProps);\n  });\n\n  return (\n    <div className={containerClasses} hidden={hidden}>\n      <fieldset {...fieldsetProps}>\n        {legend && <legend className=\"text-primary-900 text-m-medium mb-8\">{legend}</legend>}\n        {mappedCheckbox}\n      </fieldset>\n\n      {hasFeedbackText && (\n        <Feedback\n          id={`checkbox-group-${generatedId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { CheckboxGroup };\n","import React, { ComponentProps, FC, Ref, useCallback, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './dialog.scss';\n\nexport interface DialogElement extends HTMLDivElement {\n  /**\n   * Initial visibility state of the dialog.\n   * */\n  visible?: boolean;\n  /**\n   * Show dialog.\n   * */\n  show: () => void;\n  /**\n   * Hide dialog.\n   * */\n  hide: () => void;\n}\n\nexport interface DialogProps extends ComponentProps<'div'> {\n  /**\n   * Initial visibility state of the dialog.\n   * */\n  visible?: BooleanProp;\n  /**\n   * Renders the dialog content as full screen without a backdrop.\n   */\n  fullScreen?: BooleanProp;\n  /**\n   * In a non-fullscreen dialog, allow users to dismiss the dialog by clicking in the backdrop.\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Allow users to dismiss the dialog by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Callback to be called when click outside.\n   */\n  onClickedOutside?: () => void;\n  /**\n   * Callback to be called when escape is pressed.\n   */\n  onEscape?: () => void;\n  /**\n   * Callback to run after dialog is closed.\n   */\n  onHide?: () => void;\n  /**\n   * Callback to run after dialog is opened.\n   */\n  onShow?: () => void;\n}\n\nconst Dialog: FC<DialogProps> = ({\n  ref = null,\n  visible = false,\n  fullScreen = false,\n  dismissOnBackdropClick = true,\n  dismissOnEscape = true,\n  children,\n  className,\n  onClickedOutside,\n  onEscape,\n  onShow,\n  onHide,\n  ...props\n}) => {\n  const [isVisible, setIsVisible] = useState(stringToBoolean(visible));\n\n  const show = useCallback((): void => {\n    if (isVisible) {\n      return;\n    }\n\n    setIsVisible(true);\n\n    asyncTrigger(() => {\n      onShow?.();\n    });\n  }, [onShow, isVisible]);\n\n  const hide = useCallback((): void => {\n    if (!isVisible) {\n      return;\n    }\n\n    setIsVisible(false);\n\n    asyncTrigger(() => {\n      onHide?.();\n    });\n  }, [onHide, isVisible]);\n\n  const innerDialogRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<DialogElement>(\n    ref as Ref<DialogElement>,\n    innerDialogRef,\n    {\n      visible: isVisible,\n      show,\n      hide\n    } as DialogElement,\n    [innerDialogRef, hide, show, isVisible]\n  );\n\n  const handleKeyDown = (evt: KeyboardEvent) => {\n    if (!isVisible || !innerDialogRef.current) {\n      return;\n    }\n\n    if (evt.key === 'Escape' && stringToBoolean(dismissOnEscape) && isVisible) {\n      evt.preventDefault();\n      hide();\n      onEscape?.();\n      return;\n    }\n\n    if (evt.key === 'Tab') {\n      const focusableElements: HTMLElement[] = Array.from(\n        innerDialogRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      );\n\n      focusableElements.sort((a, b) => b.tabIndex - a.tabIndex);\n\n      const firstElement = focusableElements[0];\n      const lastElement = focusableElements[focusableElements.length - 1];\n\n      if (evt.shiftKey && document.activeElement === firstElement) {\n        evt.preventDefault();\n        lastElement.focus();\n      }\n\n      if (!evt.shiftKey && document.activeElement === lastElement) {\n        evt.preventDefault();\n        firstElement.focus();\n      }\n    }\n  };\n\n  const handleClickOutside = (event: MouseEvent) => {\n    if ((event.target as HTMLElement).classList.contains('agora-dialog-backdrop')) {\n      hide();\n      onClickedOutside?.();\n    }\n  };\n\n  useEffect(() => {\n    document?.addEventListener('keydown', handleKeyDown);\n\n    if (!stringToBoolean(fullScreen) && stringToBoolean(dismissOnBackdropClick)) {\n      document?.addEventListener('click', handleClickOutside);\n    }\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n\n      if (!stringToBoolean(fullScreen) && stringToBoolean(dismissOnBackdropClick)) {\n        document?.removeEventListener('click', handleClickOutside);\n      }\n    };\n  }, [dismissOnEscape, fullScreen, dismissOnBackdropClick, handleClickOutside, handleKeyDown]);\n\n  useEffect(() => {\n    if (isVisible && innerDialogRef.current) {\n      document.body.classList.add('overflow-hidden');\n\n      const focusableElements: HTMLElement[] = Array.from(\n        innerDialogRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      );\n\n      focusableElements.sort((a, b) => b.tabIndex - a.tabIndex);\n\n      const autoFocusIndex = focusableElements.findIndex((e) => stringToBoolean(e.getAttribute('data-autofocus')?.toString()));\n\n      const firstElement = autoFocusIndex >= 0 ? focusableElements[autoFocusIndex] : focusableElements[0];\n\n      if (firstElement) {\n        firstElement.focus();\n      }\n    } else {\n      document.body.classList.remove('overflow-hidden');\n    }\n  }, [isVisible]);\n\n  const containerClassNames = classNames(\n    'agora-dialog',\n    {\n      closed: !isVisible\n    },\n    className\n  );\n\n  return (\n    <div ref={innerDialogRef} className={containerClassNames} aria-modal=\"true\" role=\"dialog\" {...props}>\n      {!fullScreen && <div className=\"agora-dialog-backdrop\" />}\n      {children}\n    </div>\n  );\n};\n\nexport { Dialog };\n","import React, { ComponentProps, FC, ReactNode, Ref, useRef, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { useExpandedRef } from '@/utils';\n\nimport { Dialog, DialogElement } from '@/components/dialog';\n\nimport './drawer.scss';\n\nexport type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerElement extends HTMLDivElement {\n  /**\n   * Open drawer.\n   */\n  isOpen: boolean;\n  /**\n   * Open drawer.\n   */\n  open: () => void;\n  /**\n   * Close drawer.\n   */\n  close: () => void;\n}\n\nexport interface DrawerProps extends ComponentProps<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Allow users to dismiss the drawer by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Dismiss on back drop click.\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Position of the drawer.\n   */\n  position?: DrawerPosition;\n  /**\n   * Callback to be called when click outside.\n   */\n  onClickedOutside?: () => void;\n  /**\n   * Callback to be called when escape is pressed.\n   */\n  onEscape?: () => void;\n  /**\n   * Callback to be called when the drawer is opened.\n   */\n  onShow?: () => void;\n  /**\n   * Callback to be called when the drawer is closed.\n   */\n  onHide?: () => void;\n}\n\n/**\n * Return icon default animation class drawer icon name and default position.\n */\nconst Drawer: FC<DrawerProps> = ({\n  ref = null,\n  children,\n  dismissOnEscape = true,\n  dismissOnBackdropClick = true,\n  position = 'left',\n  onClickedOutside,\n  onEscape,\n  onShow,\n  onHide,\n  className,\n  'aria-label': ariaLabel,\n  'aria-labelledby': ariaLabelledby,\n  ...props\n}) => {\n  const [open, setOpen] = useState(false);\n\n  const dialogRef = useRef<DialogElement>(null);\n\n  const drawerClassNames = classNames(\n    `agora-drawer`,\n\n    { 'agora-drawer-horizontal': position === 'left' || position === 'right' },\n    { 'agora-drawer-vertical': position === 'top' || position === 'bottom' },\n\n    { ['agora-drawer-open-' + position]: open },\n    { ['agora-drawer-close-' + position]: !open }\n  );\n\n  const handleClose = () => {\n    if (!open) {\n      return;\n    }\n\n    const fn = () => {\n      setOpen(false);\n      dialogRef.current?.hide();\n      dialogRef.current?.querySelector('.agora-drawer')?.classList?.remove(`agora-drawer-close-${position}`);\n      dialogRef.current?.querySelector('.agora-drawer')?.removeEventListener('animationend', fn);\n\n      onHide?.();\n    };\n\n    dialogRef.current?.querySelector('.agora-drawer')?.addEventListener('animationend', fn);\n    dialogRef.current?.querySelector('.agora-drawer')?.classList.add(`agora-drawer-close-${position}`);\n  };\n\n  const handleOpen = () => {\n    if (open) {\n      return;\n    }\n\n    const fn = () => {\n      dialogRef.current?.querySelector('.agora-drawer')?.removeEventListener('animationend', fn);\n      onShow?.();\n    };\n\n    dialogRef.current?.querySelector('.agora-drawer')?.addEventListener('animationend', fn);\n\n    setOpen(true);\n    dialogRef.current?.show();\n  };\n\n  useExpandedRef<DrawerElement>(\n    ref as Ref<DrawerElement>,\n    dialogRef,\n    {\n      isOpen: open,\n      open: handleOpen,\n      close: handleClose\n    } as DrawerElement,\n    [dialogRef, handleOpen, handleClose, open]\n  );\n\n  const handleClickOutside = () => {\n    setOpen(false);\n    onHide?.();\n    onClickedOutside?.();\n  };\n\n  const handleOnEscape = () => {\n    setOpen(false);\n    onHide?.();\n    onEscape?.();\n  };\n\n  return (\n    <Dialog\n      aria-label={ariaLabel}\n      aria-labelledby={ariaLabelledby}\n      ref={dialogRef}\n      className={className}\n      dismissOnBackdropClick={dismissOnBackdropClick}\n      dismissOnEscape={dismissOnEscape}\n      onClickedOutside={handleClickOutside}\n      onEscape={handleOnEscape}\n    >\n      <div {...props} className={drawerClassNames}>\n        {children}\n      </div>\n    </Dialog>\n  );\n};\n\nexport { Drawer };\n","import React, { ComponentProps, FC, Ref, useEffect, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Button, ButtonProps, ButtonVariant } from '@/components/button';\n\nimport './rating-buttons.scss';\n\nexport type RatingStatus = 'like' | 'dislike' | 'neutral';\n\nexport interface RatingButtonsElement extends HTMLDivElement {\n  status: RatingStatus;\n}\n\nexport interface RatingButtonsProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Like button definition.\n   */\n  likeButton?: ButtonProps;\n  /**\n   * Dislike button definition.\n   */\n  dislikeButton?: ButtonProps;\n  /**\n   * Defines if the buttons only contains the icon.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Toggles dark mode in buttons.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  variant?: ButtonVariant;\n  /**\n   *  Event triggered whenever any of the button changes is own state.\n   */\n  onChange?: (status: RatingStatus) => void;\n}\n\nconst RatingButtons: FC<RatingButtonsProps> = ({\n  ref = null,\n  likeButton,\n  dislikeButton,\n  iconOnly = false,\n  darkMode = false,\n  variant,\n  className = '',\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [pressedButton, setPressedButton] = useState<RatingStatus>('neutral');\n\n  const handleToggleButton = (buttonType: RatingStatus) => {\n    setPressedButton((last) => (last === buttonType ? 'neutral' : buttonType));\n  };\n\n  useEffect(() => {\n    asyncTrigger(() => onChange?.(pressedButton));\n  }, [pressedButton]);\n\n  const createButton = (buttonProps: ButtonProps, buttonType: RatingStatus) => {\n    const selected = pressedButton === buttonType;\n    return (\n      <Button\n        {...buttonProps}\n        id={`${propsClone.id}-${buttonType}`}\n        onClick={() => handleToggleButton(buttonType)}\n        appearance={selected ? 'solid' : 'outline'}\n        aria-pressed={pressedButton === buttonType ? 'true' : 'false'}\n      />\n    );\n  };\n\n  const ratingButtonClasses = classNames('rating-buttons', stringToBoolean(darkMode) ? 'dark' : '', className);\n  const ratingButtonWrapperClasses = classNames('rating-buttons-wrapper', iconOnly ? 'icon-only' : '', className);\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<RatingButtonsElement>(\n    ref as Ref<RatingButtonsElement>,\n    innerRef,\n    {\n      status: pressedButton\n    } as RatingButtonsElement,\n    [pressedButton]\n  );\n\n  const parsedLikeButton = {\n    ...likeButton,\n    'className': 'agora-btn-like',\n    'hasIcon': true,\n    'trailingIcon': 'agora-line-thumbs-up',\n    'trailingIconHover': 'agora-solid-thumbs-up',\n    'variant': variant ?? likeButton?.variant,\n    'darkMode': darkMode,\n    'iconOnly': iconOnly,\n    'aria-label': iconOnly ? likeButton?.children?.toString() : null\n  } as ButtonProps;\n\n  const parsedDislikeButton = {\n    ...dislikeButton,\n    'className': 'agora-btn-dislike',\n    'hasIcon': true,\n    'trailingIcon': 'agora-line-thumbs-down',\n    'trailingIconHover': 'agora-solid-thumbs-down',\n    'variant': variant ?? dislikeButton?.variant,\n    'darkMode': darkMode,\n    'iconOnly': iconOnly,\n    'aria-label': iconOnly ? dislikeButton?.children?.toString() : null\n  } as ButtonProps;\n\n  return (\n    <div {...props} className={ratingButtonClasses} ref={innerRef}>\n      <ul className={ratingButtonWrapperClasses}>\n        <li> {!!likeButton && createButton(parsedLikeButton, 'like')}</li>\n        <li>{!!dislikeButton && createButton(parsedDislikeButton, 'dislike')}</li>\n      </ul>\n    </div>\n  );\n};\n\nexport { RatingButtons };\n","import React, {\n  Children,\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  isValidElement,\n  KeyboardEvent,\n  MouseEvent,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Icon, IconProps } from '@/components/icon';\nimport { BooleanProp, FeedbackState } from '@/models';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport './rating-icons.scss';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nexport interface RatingIconsElement extends HTMLDivElement {\n  rating: number;\n}\n\nexport interface RatingIconsProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Label of the rating icons.\n   */\n  label?: ReactNode;\n  /**\n   * Hide rating icons label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Set the rating icons in readonly mode.\n   */\n  readOnly?: BooleanProp;\n  /**\n   *  Change Event that is triggered whenever rating changes.\n   */\n  onChange?: (value: number) => void;\n  /**\n   *  Default rating value.\n   */\n  value?: number;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasError?: BooleanProp;\n  /**\n   * The list of icons to use as rating icon values;\n   */\n  children?: ReactElement<IconProps> | ReactElement<IconProps>[];\n}\n\nconst RatingIcons: FC<RatingIconsProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  darkMode = false,\n  readOnly = false,\n  className = '',\n  value,\n  onChange,\n  hasError = false,\n  hasFeedback = false,\n  feedbackState = 'info',\n  feedbackText = '',\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const iconElements: ReactElement<IconProps>[] = Children.toArray(children).filter((child) => {\n    return isValidElement<IconProps>(child) && (child as ReactElement).type === Icon;\n  }) as ReactElement<IconProps>[];\n\n  const startWrapperRef = useRef<HTMLDivElement>(null);\n\n  const [selectedIndex, setSelectedIndex] = useState<number>(value ?? 0);\n\n  const [hoverIndex, setHoverIndex] = useState<number>(0);\n\n  const handleMouseDown = (evt: MouseEvent<HTMLDivElement>) => {\n    if (stringToBoolean(readOnly)) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleMouseEnter = (index: number) => {\n    return () => {\n      if (!stringToBoolean(readOnly)) {\n        setHoverIndex(index);\n      }\n    };\n  };\n\n  const handleMouseLeave = () => {\n    if (!stringToBoolean(readOnly)) {\n      setHoverIndex(0);\n    }\n  };\n\n  const handleClick = (index: number) => {\n    return () => {\n      if (!stringToBoolean(readOnly)) {\n        setSelectedIndex(index);\n      }\n    };\n  };\n\n  const onkeyDownHandler = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (stringToBoolean(readOnly)) {\n      return;\n    }\n\n    const { code } = evt;\n\n    setSelectedIndex((last) => {\n      if (code === 'ArrowLeft') {\n        return last > 1 ? last - 1 : iconElements.length;\n      }\n\n      if (code === 'ArrowRight') {\n        return last == iconElements.length ? 1 : last + 1;\n      }\n\n      return last;\n    });\n  };\n\n  const handleFocusIcon = (evt: FocusEvent<HTMLDivElement>) => {\n    const dataValue = parseInt(evt.target.getAttribute('data-icon-value') ?? '1', 10);\n    setSelectedIndex(dataValue);\n  };\n\n  useEffect(() => {\n    if (document.activeElement?.classList.contains('rating-icon') && startWrapperRef.current) {\n      const focusedIcon = startWrapperRef.current.querySelector(`.rating-icon[data-icon-value = '${selectedIndex}']`);\n      (focusedIcon as HTMLElement)?.focus();\n    }\n\n    asyncTrigger(() => onChange?.(selectedIndex));\n  }, [selectedIndex]);\n\n  useEffect(() => {\n    if (value) {\n      setSelectedIndex(value);\n    }\n  }, [value]);\n\n  const ratingIconClasses = classNames(\n    'agora-rating-icons',\n    { dark: stringToBoolean(darkMode) },\n    { 'read-only': stringToBoolean(readOnly) },\n    {\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<RatingIconsElement>(\n    ref as React.Ref<RatingIconsElement>,\n    innerRef,\n    {\n      rating: selectedIndex\n    } as RatingIconsElement,\n    [selectedIndex]\n  );\n\n  return (\n    <div\n      ref={innerRef}\n      className={ratingIconClasses}\n      {...props}\n      role=\"radiogroup\"\n      {...(stringToBoolean(hideLabel) ? { 'aria-label': label?.toString() } : { 'aria-labelledby': `label-${generatedId}` })}\n    >\n      <div className=\"flex flex-col gap-8\">\n        {!stringToBoolean(hideLabel) && (\n          <div id={`label-${generatedId}`} className=\"rating-label\">\n            {label}\n          </div>\n        )}\n\n        <div ref={startWrapperRef} className=\"rating-wrapper\">\n          {iconElements.map((iconReactElement, index) => {\n            const iconValue = index + 1;\n            const isHovered = iconValue <= hoverIndex;\n            const isSelected = selectedIndex !== null && iconValue <= selectedIndex;\n\n            const clonedIcon = cloneElement<IconProps>(iconReactElement, {\n              name:\n                isHovered || isSelected\n                  ? iconReactElement.props.name?.replace('line', 'solid')\n                  : iconReactElement.props.name?.replace('solid', 'line')\n            });\n\n            const iconKey = `${generatedId}-icon-${index}`;\n            let tabIndexValue = -1;\n            if (stringToBoolean(readOnly)) {\n              tabIndexValue = -1;\n            } else if (selectedIndex <= 0) {\n              tabIndexValue = index === 0 ? 0 : -1;\n            } else {\n              tabIndexValue = selectedIndex === iconValue ? 0 : -1;\n            }\n\n            return (\n              <div\n                key={iconKey}\n                id={`${generatedId}-${iconValue}`}\n                className=\"rating-icon\"\n                role=\"radio\"\n                aria-checked={selectedIndex === iconValue}\n                tabIndex={tabIndexValue}\n                onMouseDownCapture={handleMouseDown}\n                onMouseEnter={handleMouseEnter(iconValue)}\n                onMouseLeave={handleMouseLeave}\n                onClick={handleClick(iconValue)}\n                onKeyDown={onkeyDownHandler}\n                onFocus={handleFocusIcon}\n                data-icon-value={iconValue}\n                aria-describedby={\n                  (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText\n                    ? `rating-icons-${propsClone.id}-feedback`\n                    : undefined\n                }\n              >\n                {clonedIcon}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`rating-icons-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Hidden svg filter */}\n      <svg style={{ display: 'none' }}>\n        <defs>\n          <filter id=\"inner-shadow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n            <feOffset dx=\"0\" dy=\"3\" />\n            <feGaussianBlur stdDeviation=\"3\" result=\"offset-blur\" />\n            <feComposite operator=\"out\" in=\"SourceGraphic\" in2=\"offset-blur\" result=\"inverse\" />\n            <feFlood floodColor=\"black\" floodOpacity=\"0.45\" result=\"color\" />\n            <feComposite operator=\"in\" in=\"color\" in2=\"inverse\" result=\"shadow\" />\n            <feComposite operator=\"over\" in=\"shadow\" in2=\"SourceGraphic\" />\n          </filter>\n        </defs>\n      </svg>\n    </div>\n  );\n};\n\nexport { RatingIcons };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { RatingButtons, RatingButtonsProps, RatingStatus } from '@/components/ratings';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './feedback.scss';\n\nexport interface FeedbackProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the feedback.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the feedback.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The rating button props.\n   */\n  ratingButtons?: RatingButtonsProps;\n  /**\n   * The message of the feedback.\n   */\n  message?: ReactNode;\n  /**\n   * The dark mode of the feedback.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n}\n\nexport const Feedback: FC<FeedbackProps> = ({\n  title,\n  subtitle,\n  ratingButtons,\n  message,\n  darkMode = false,\n  className,\n  headingLevel: Heading = 'h3',\n  ...props\n}) => {\n  const [showMessage, setShowMessage] = useState(false);\n\n  const handleChange = (status: RatingStatus) => {\n    setShowMessage(status !== 'neutral');\n    ratingButtons?.onChange?.(status);\n  };\n\n  const feedbackClasses = classNames('agora-feedback', stringToBoolean(darkMode) ? 'darkMode' : '', className);\n\n  const parsedRatingButtons: RatingButtonsProps = {\n    ...ratingButtons,\n    darkMode: stringToBoolean(darkMode)\n  };\n\n  return (\n    <div className={feedbackClasses} {...props}>\n      {(title || subtitle) && (\n        <div className=\"xs:col-span-4 md:col-span-5 xl:col-span-6\">\n          {title && <Heading className=\"title\">{title}</Heading>}\n          {subtitle && <p className=\"subtitle\">{subtitle}</p>}\n        </div>\n      )}\n      {ratingButtons && (\n        <div className=\"xs:col-span-4 md:col-span-3 xl:col-span-3\">\n          <RatingButtons {...parsedRatingButtons} onChange={handleChange} />\n        </div>\n      )}\n      {showMessage && message && (\n        <div className=\"xs:col-span-4 md:col-span-5 xl:col-span-3\">\n          <p className=\"message\">{message}</p>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\n\nconst FooterBrandBadge: FC<{\n  brandImage: LinkableImagesProps;\n  badgeImage?: LinkableImagesProps;\n}> = ({ brandImage, badgeImage }) => {\n  return (\n    <div className=\"grid items-center xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 xs:pt-32 md:pt-64 xs:pb-32 xl:pb-64\">\n      <div className=\"xs:col-span-2 md:col-span-4 xl:col-span-6\">\n        {brandImage.link && brandImage.image && (\n          <a\n            {...brandImage.link}\n            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus\"\n          >\n            <img alt={brandImage.image.alt} {...brandImage.image} />\n          </a>\n        )}\n        {!brandImage.link && brandImage.image && <img {...brandImage.image} alt={brandImage.image.alt} />}\n      </div>\n      <div className=\"xs:col-span-2 md:col-span-4 xl:col-span-6 justify-self-end\">\n        {badgeImage?.link && badgeImage?.image && (\n          <a\n            {...badgeImage.link}\n            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus\"\n          >\n            <img alt={badgeImage.image.alt} {...badgeImage.image} />\n          </a>\n        )}\n        {badgeImage && !badgeImage.link && badgeImage.image && <img {...badgeImage.image} alt={badgeImage.image.alt} />}\n      </div>\n    </div>\n  );\n};\n\nexport { FooterBrandBadge };\n","import React, { FC, ReactNode } from 'react';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\n\nconst FooterCaptionPartners: FC<{\n  caption: string | ReactNode;\n  partnersLogos: LinkableImagesProps[];\n  partnersLogosAriaLabel?: string;\n}> = ({ caption, partnersLogos, partnersLogosAriaLabel }) => {\n  return (\n    <div className=\"grid items-center xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 py-32\">\n      <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-6\">\n        <span className=\"text-m-regular text-neutral-500\">{caption}</span>\n      </div>\n      <nav\n        className=\"xs:col-span-4 md:col-span-4 xl:col-span-6 md:justify-self-end md:w-[calc(100%+32px)]\"\n        aria-label={partnersLogosAriaLabel}\n      >\n        <ul className=\"flex flex-wrap md:justify-end xs:gap-32 md:gap-[30px]\">\n          {partnersLogos\n            .filter((_i, index) => index < 10)\n            .map((partner, index) => {\n              const key = `logo-${index}`;\n\n              return (\n                <li key={key}>\n                  {partner?.link && partner?.image && (\n                    <a\n                      {...partner.link}\n                      className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 opacity-50 hover:opacity-100 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus focus:opacity-100\"\n                    >\n                      <img alt={partner.image.alt} {...partner.image} />\n                    </a>\n                  )}\n                  {!partner?.link && partner?.image && <img {...partner?.image} alt={partner?.image.alt} />}\n                </li>\n              );\n            })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n\nexport { FooterCaptionPartners };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\n\nimport { Anchor } from '@/components/anchor';\nimport { Icon } from '@/components/icon';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\n\nconst FooterSocialUsefulCopyright: FC<{\n  socialsLink?: LinkableIconsProps[];\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n  copyright: string | ReactNode;\n  socialsLinkAriaLabel?: string;\n  usefulLinksAriaLabel?: string;\n}> = ({ socialsLink, usefulLinks, copyright, socialsLinkAriaLabel, usefulLinksAriaLabel }) => {\n  return (\n    <div className=\"grid items-center xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 md:gap-x-32\">\n      {socialsLink && (\n        <nav\n          className=\"xs:col-span-4 md:col-start-2 md:col-span-6 xl:col-span-4 xs:py-16 md:py-32 xl:py-64\"\n          aria-label={socialsLinkAriaLabel}\n        >\n          <ul className=\"flex flex-wrap xs:justify-start md:justify-center xl:justify-start xs:gap-x-8 md:gap-x-24 xl:gap-x-24 -ml-16 xs:my-16 md:my-0\">\n            {socialsLink\n              .filter((_i, index) => index < 10)\n              .map((social, index) => {\n                const key = `social-${index}`;\n                return (\n                  <li key={key}>\n                    {social?.link && social?.icon && (\n                      <a\n                        {...social.link}\n                        className=\"group ease-in-out overflow-hidden relative inline-flex justify-center items-center content-center h-56 w-56 min-h-[44px] min-w-[44px] outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus text-white\"\n                      >\n                        <Icon\n                          aria-hidden\n                          name={social.icon}\n                          dimensions=\"m\"\n                          className=\"absolute ease-in-out translate-y-0 opacity-100 group-hover:opacity-0 group-focus:opacity-0 fill-white\"\n                        />\n                        <Icon\n                          aria-hidden\n                          name={social.iconHover}\n                          dimensions=\"m\"\n                          className=\"absolute ease-in-out translate-y-0 opacity-0 group-hover:opacity-100 group-focus:opacity-100 fill-white\"\n                        />\n                      </a>\n                    )}\n                    {social && !social.link && social.icon && <Icon name={social.icon} alt={social.iconAlt} />}\n                  </li>\n                );\n              })}\n          </ul>\n        </nav>\n      )}\n      <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-7 xs:py-32 md:py-64\">\n        {usefulLinks && (\n          <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-7\" aria-label={usefulLinksAriaLabel}>\n            <ul className=\"flex flex-wrap xs:flex-col md:flex-row xl:flex-row md:justify-center xl:justify-end xs:gap-x-32 md:gap-[30px]\">\n              {usefulLinks\n                .filter((_i, index) => index < 8)\n                .map((link, index) => {\n                  const key = `useful-${index}`;\n                  return (\n                    <li key={key} className=\"py-8\">\n                      <Anchor {...link} darkMode appearance=\"link\" variant=\"neutral\" />\n                    </li>\n                  );\n                })}\n            </ul>\n          </nav>\n        )}\n        <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-7 mt-32\">\n          <span className=\"text-s-regular text-neutral-500 flex md:justify-center xl:justify-end\">{copyright}</span>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { FooterSocialUsefulCopyright };\n","import React, { FC } from 'react';\nimport { FooterBrandBadge } from './footer-brand-badge';\nimport { FooterCaptionPartners } from './footer-caption-partners';\nimport { FooterSocialUsefulCopyright } from './footer-social-useful-copyright';\nimport { FederatedFooterProps } from '../federated-footer';\nimport { PublicFooterProps } from '../public-footer/public-footer';\n\nconst MainFooter: FC<FederatedFooterProps | PublicFooterProps> = ({\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright\n}) => {\n  return (\n    <div className=\"bg-primary-900\">\n      <div className=\"container mx-auto\">\n        <FooterBrandBadge brandImage={brandImage} badgeImage={badgeImage} />\n\n        <hr aria-hidden className=\"border-1 border-white opacity-5 w-full absolute left-0\" />\n\n        <FooterCaptionPartners caption={caption} partnersLogos={partnersLogos} partnersLogosAriaLabel={partnersLogosAriaLabel} />\n\n        <hr aria-hidden className=\"border-1 border-white opacity-5 w-full absolute left-0\" />\n\n        <FooterSocialUsefulCopyright\n          socialsLink={socialsLink}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinks={usefulLinks}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n          copyright={copyright}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { MainFooter };\n","import React, { FC } from 'react';\nimport { Anchor } from '@/components/anchor';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { CardFooterProps } from '@/components/footer';\n\nconst FederatedFooterCard: FC<CardFooterProps> = ({ title, description, links }) => {\n  return (\n    <div className=\"footer-gradient xl:overflow-hidden\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 xl:-mr-112\">\n          <div className=\"col-span-5 w-[calc(100%+32px)] h-128 self-end xs:hidden md:hidden xl:block\" />\n          <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-7 xs:col-span-4 md:col-span-8 xl:col-span-7 xl:col-start-6 xs:pb-32 md:pb-64 xl:pb-64 bg-primary-100 xl:pr-112\">\n            <div className=\"xs:col-span-4 md:col-span-6 xl:col-start-2 xl:col-span-7\">\n              <BookmarkIcon aria-hidden className=\"mb-32\" />\n              {title && <h2 className=\"xs:text-m-bold md:text-l-bold text-primary-900\">{title}</h2>}\n              {description && <p className=\"text-m-regular text-primary-900 mt-16\">{description}</p>}\n            </div>\n            {links && (\n              <ul className=\"grid xs:grid-cols-1 md:grid-cols-3-auto xs:gap-0 md:gap-[28px] xs:col-span-4 md:col-span-8 xl:col-start-2 xl:col-span-7 mt-32\">\n                {links\n                  .filter((_i, index) => index < 3)\n                  .map((link, index) => {\n                    const key = `link-${index}`;\n                    return (\n                      <li key={key}>\n                        <Anchor\n                          {...link}\n                          className=\"xs:flex xs:justify-between\"\n                          appearance=\"link\"\n                          variant=\"primary\"\n                          hasIcon\n                          trailingIcon=\"agora-line-arrow-right-circle\"\n                          trailingIconHover=\"agora-solid-arrow-right-circle\"\n                        />\n                      </li>\n                    );\n                  })}\n              </ul>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { FederatedFooterCard };\n","import { CardFooterProps, LinkableIconsProps, LinkableImagesProps } from '@/components/footer';\nimport React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\n\nimport { MainFooter } from '../shared-components/footer-main';\nimport { FederatedFooterCard } from './federated-footer-card';\nimport './federated-footer.scss';\n\nexport interface FederatedFooterProps {\n  /**\n   * Informative card. Links limited to first 3, remaining array is discarded.\n   */\n  card?: CardFooterProps;\n\n  /**\n   * Image on left side with/without link.\n   */\n  brandImage: LinkableImagesProps;\n\n  /**\n   * Image on right side with/without link.\n   */\n  badgeImage?: LinkableImagesProps;\n\n  /**\n   * Small descriptive text\n   */\n  caption: string | ReactNode;\n\n  /**\n   * List of images with or without link. Links limited to first 10, remaining array is discarded.\n   */\n  partnersLogos: LinkableImagesProps[];\n\n  /**\n   * Accessible text for the partners logos.\n   */\n  partnersLogosAriaLabel?: string;\n\n  /**\n   * List of icons with/without link. Links limited to first 10, remaining array is discarded.\n   */\n  socialsLink?: LinkableIconsProps[];\n\n  /**\n   * Accessible text for the social links.\n   */\n  socialsLinkAriaLabel?: string;\n\n  /**\n   * List of links. Links limited to first 8, remaining array is discarded.\n   */\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n\n  /**\n   * Accessible text for the useful links.\n   */\n  usefulLinksAriaLabel?: string;\n\n  /*\n   * Copyright text\n   */\n  copyright: string;\n}\n\nconst FederatedFooter: FC<FederatedFooterProps> = ({\n  card,\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright\n}) => {\n  return (\n    <div className=\"agora-footer\">\n      {card && <FederatedFooterCard {...card} />}\n      <MainFooter\n        brandImage={brandImage}\n        badgeImage={badgeImage}\n        caption={caption}\n        partnersLogos={partnersLogos}\n        partnersLogosAriaLabel={partnersLogosAriaLabel}\n        socialsLink={socialsLink}\n        socialsLinkAriaLabel={socialsLinkAriaLabel}\n        usefulLinks={usefulLinks}\n        usefulLinksAriaLabel={usefulLinksAriaLabel}\n        copyright={copyright}\n      />\n    </div>\n  );\n};\n\nexport { FederatedFooter };\n","import classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\n\nconst PublicFooterContacts: FC<{ contacts: ContactsFooterProps[]; contactsOnly: boolean; hasCardLinks: boolean }> = ({\n  contacts,\n  contactsOnly,\n  hasCardLinks\n}) => {\n  const contactsClassName = classNames('grid gap-x-32 xs:gap-y-32 md:gap-y-64 md:content-center', {\n    'xs:pt-32 md:pt-32 xl:pt-64': contactsOnly,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-6 xs:col-span-4 md:col-span-8 xl:col-span-6': !hasCardLinks,\n    'xs:grid-cols-4 md:grid-cols-4 xl:grid-cols-6 xs:col-span-4 md:col-span-4 xl:col-span-6': !contactsOnly && hasCardLinks\n  });\n  return (\n    <div className={contactsClassName}>\n      {contacts\n        ?.filter((_i, index) => index < 2)\n        .map((contact, index) => {\n          const key = `contacts-${index}`;\n          return (\n            <div key={key} className=\"xs:col-span-4 md:col-span-4 xl:col-span-3\">\n              <div className=\"text-m-bold text-primary-900 mb-8\">{contact.title}</div>\n              <div className=\"text-m-regular text-primary-900\">{contact.description}</div>\n              {contact.phones && (\n                <div>\n                  {contact.phones[0] && (\n                    <a href={`tel:${contact.phones[0]}`}>\n                      <span className=\"text-l-bold text-primary-900\">{contact.phones[0].match(/.{1,3}/g)?.join(' ')} </span>\n                    </a>\n                  )}\n                  {contact.phones[1] && <span className=\"text-m-regular text-primary-900\">{` ${contact.phones[1]} `}</span>}\n                  {contact.phones[2] && (\n                    <a href={`tel:${contact.phones[2]}`}>\n                      <span className=\"text-l-bold text-primary-900\">{contact.phones[2].match(/.{1,3}/g)?.join(' ')}</span>\n                    </a>\n                  )}\n                </div>\n              )}\n            </div>\n          );\n        })}\n    </div>\n  );\n};\n\nexport { PublicFooterContacts };\n","import classNames from 'classnames';\nimport React, { FC, useEffect } from 'react';\nimport { Anchor } from '@/components/anchor';\n\nimport { CardFooterProps } from '../models';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { PublicFooterContacts } from './public-footer-contacts';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\n\nconst PublicFooterHighlightCard: FC<{ card?: CardFooterProps; contacts?: ContactsFooterProps[]; hasCardLinks: boolean }> = ({\n  card,\n  contacts,\n  hasCardLinks\n}) => {\n  const cardClassName = classNames(\n    'grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xl:row-span-1 bg-primary-100 pb-32 relative xl:-ml-[112px] xl:pl-[112px]',\n    {\n      'pb-64': !contacts\n    }\n  );\n\n  const cardHelpClassName = classNames('relative z-[1]', {\n    'xs:col-span-4 md:col-span-6 xl:col-span-6': hasCardLinks,\n    'xs:col-span-4 md:col-span-8 xl:col-span-6': !hasCardLinks\n  });\n\n  const contactsClassName = classNames('grid gap-x-32 xl:row-span-1 bg-primary-100 xl:-ml-[112px] xl:pl-[112px]', {\n    'xs:grid-cols-4 md:grid-cols-4 xl:grid-cols-8 xs:col-span-4 md:col-span-4 xl:col-span-8 xs:pb-32 md:pb-64 xl:pb-64':\n      card && hasCardLinks && contacts,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xs:pb-32 md:pb-64 xl:pb-64':\n      card && !hasCardLinks && contacts,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xs:pb-32 md:pb-32 xl:pb-64 ':\n      !card && !hasCardLinks && contacts\n  });\n\n  useEffect(() => {\n    const setCardLinkVW = () => {\n      //  THIS IS NEEDED BECAUSE CSS UNIT 100VW TAKES SCROLLBAR INTO ACCOUNT AND THE CALCULATION OF THE WITH OF THE CARD INTRODUCES A HORIZONTAL SCROLL BAR.\n      //  TO SOLVE THIS THE CLIENT WIDTH DOES NOT TAKE INTO ACCOUNT HE SCROLL BAR WITH. WE SET A CSS VARIABLE TO BE USED LATTER IN THE CLASS TO PERFORM THE CALCULATION.\n      const vw = document.documentElement.clientWidth;\n      document.documentElement.style.setProperty('--footer-aux-vw', `${vw}px`);\n    };\n\n    if (hasCardLinks) {\n      window.addEventListener('resize', setCardLinkVW);\n      setCardLinkVW();\n    }\n\n    const cleanUp = () => {\n      window.removeEventListener('resize', setCardLinkVW);\n    };\n\n    return cleanUp;\n  }, [hasCardLinks]);\n\n  return (\n    <>\n      {card && (\n        <div className={cardClassName}>\n          {hasCardLinks && (\n            <div\n              aria-hidden\n              className=\"absolute left-0 xs:block md:block xl:hidden xs:w-[calc(100%+32px)] md:w-[calc(((var(--footer-aux-vw)-100%)/2)+100%)] h-full bg-primary-100 z-0\"\n            />\n          )}\n          <div className={cardHelpClassName}>\n            <BookmarkIcon aria-hidden className=\"mb-32\" />\n            {card?.title && <h2 className=\"xs:text-m-bold md:text-l-bold text-primary-900\">{card.title}</h2>}\n            {card?.description && <div className=\"text-m-regular text-primary-900 mt-16\">{card.description}</div>}\n          </div>\n          {card.links && (\n            <ul className=\"relative z-[1] xs:col-span-4 md:col-span-8 xl:col-span-6 mt-32 inline-flex gap-x-32 xs:flex-col md:flex-row xl:flex-row\">\n              {card.links\n                .filter((_i, index) => index < 3)\n                .map((link, index) => {\n                  const key = `link-${index}`;\n                  return (\n                    <li key={key} className=\"py-8\">\n                      <Anchor\n                        {...link}\n                        className=\"xs:flex xs:justify-between\"\n                        appearance=\"link\"\n                        variant=\"primary\"\n                        hasIcon\n                        trailingIcon=\"agora-line-arrow-right-circle\"\n                        trailingIconHover=\"agora-solid-arrow-right-circle\"\n                      />\n                    </li>\n                  );\n                })}\n            </ul>\n          )}\n        </div>\n      )}\n      {contacts && (\n        <div className={contactsClassName}>\n          {contacts && <PublicFooterContacts contacts={contacts} contactsOnly={!card && !hasCardLinks} hasCardLinks={hasCardLinks} />}\n        </div>\n      )}\n    </>\n  );\n};\n\nexport { PublicFooterHighlightCard };\n","import React, { FC } from 'react';\n\nimport { Anchor } from '@/components/anchor';\nimport { CardFooterProps } from '../models';\n\nconst PublicFooterHighlightCardLinks: FC<CardFooterProps> = (cardLinks) => {\n  return (\n    <>\n      {cardLinks?.title && <h2 className=\"xs:text-m-bold md:text-l-bold text-white\">{cardLinks.title}</h2>}\n      {cardLinks?.links && (\n        <nav aria-label={cardLinks.title as string}>\n          <ul className=\"mt-32\">\n            {cardLinks.links\n              .filter((_i, index) => index < 5)\n              .map((link, index) => {\n                const key = `link-${index}`;\n                return (\n                  <li key={key} className=\"py-8\">\n                    <Anchor {...link} darkMode appearance=\"link\" variant=\"neutral\" />\n                  </li>\n                );\n              })}\n          </ul>\n        </nav>\n      )}\n    </>\n  );\n};\n\nexport { PublicFooterHighlightCardLinks };\n","import classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { CardFooterProps } from '../models/CardFooterProps';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { PublicFooterHighlightCard } from './public-footer-highlight-card';\nimport { PublicFooterHighlightCardLinks } from './public-footer-highlight-card-links';\n\nconst PublicFooterHighlight: FC<{ card?: CardFooterProps; cardLinks?: CardLinksFooterProps; contacts?: ContactsFooterProps[] }> = ({\n  card,\n  cardLinks,\n  contacts\n}) => {\n  const footerHighlightClassName = classNames('footer-highlight', {\n    'footer-highlight-only-card': card && contacts && !cardLinks,\n    'footer-highlight-only-help': card && !contacts && !cardLinks,\n    'footer-highlight-only-contacts': !card && contacts && !cardLinks\n  });\n\n  const cardFooterClassName = classNames('grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-x-32 xl:grid-rows-1', {\n    'xl:grid-flow-col': card && cardLinks,\n    'xl:grid-flow-row': card && !cardLinks\n  });\n  return (\n    <div className={footerHighlightClassName}>\n      <div className=\"container mx-auto\">\n        <div className={cardFooterClassName}>\n          <PublicFooterHighlightCard card={card} contacts={contacts} hasCardLinks={!!cardLinks} />\n          {cardLinks && (\n            <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-4 xl-grid-cols-4 xs:col-span-4 md:col-span-4 xl:col-span-4 xl:row-span-2 bg-primary-900 relative\">\n              <div aria-hidden className=\"md:hidden xl:hidden absolute w-[calc(100%+64px)] -left-[32px] h-full bg-primary-900 z-0\" />\n              <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:py-32 xs:pl-0 md:py-64 md:pl-64 xl:py-64 xl:pl-64 z-[1]\">\n                <PublicFooterHighlightCardLinks {...cardLinks} />\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { PublicFooterHighlight };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\nimport { FooterSocialUsefulCopyright } from '../shared-components/footer-social-useful-copyright';\nimport { PublicFooterHighlightCardLinks } from './public-footer-highlight-card-links';\n\nconst PublicFooterMainPlusCardLinks: FC<{\n  brandImage: LinkableImagesProps;\n  badgeImage?: LinkableImagesProps;\n  caption: string | ReactNode;\n  partnersLogos: LinkableImagesProps[];\n  partnersLogosAriaLabel?: string;\n  socialsLink?: LinkableIconsProps[];\n  socialsLinkAriaLabel?: string;\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n  usefulLinksAriaLabel?: string;\n  copyright: string | ReactNode;\n  cardLinks: CardLinksFooterProps;\n}> = ({\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  cardLinks\n}) => {\n  return (\n    <div className=\"bg-primary-900\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32\">\n          <div className=\"xs:col-span-4 md:col-span-3 xl:col-span-6 xs:pt-32 md:pt-64\">\n            <div className=\"mb-32\">\n              {brandImage.link && brandImage.image && (\n                <a\n                  {...brandImage.link}\n                  className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center border-2 border-transparent rounded-4 outline-none focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus\"\n                >\n                  <img alt={brandImage.image.alt} {...brandImage.image} />\n                </a>\n              )}\n              {!brandImage.link && brandImage.image && <img {...brandImage.image} alt={brandImage.image.alt} />}\n            </div>\n            <div className=\"mb-64\">\n              <span className=\"text-m-regular text-neutral-500\">{caption}</span>\n            </div>\n            {badgeImage && (\n              <div className=\"mb-64\">\n                {badgeImage?.link && badgeImage?.image && (\n                  <a\n                    {...badgeImage.link}\n                    className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center border-2 border-transparent rounded-4 outline-none focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus\"\n                  >\n                    <img alt={badgeImage.image.alt} {...badgeImage.image} />\n                  </a>\n                )}\n                {badgeImage && !badgeImage.link && badgeImage.image && <img {...badgeImage.image} alt={badgeImage.image.alt} />}\n              </div>\n            )}\n          </div>\n          <div className=\"xs:col-span-4 md:col-span-1 xl:col-span-1 min-h-full min-w-full md:relative xl:relative\">\n            <hr\n              aria-hidden\n              className=\"border-1 border-white opacity-5 md:h-[calc(100%-2px)] xl:h-[calc(100%-2px)] max-md:w-full md:bottom-0 right-0 absolute\"\n            />\n          </div>\n          <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:pt-32 md:pt-64\">\n            <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:py-32 xs:pl-0 md:pt-0 md:pb-64 md:pl-0 xl:pl-32 xl:pb-64 xl:pt-0\">\n              <PublicFooterHighlightCardLinks {...cardLinks} />\n            </div>\n          </div>\n        </div>\n\n        <hr aria-hidden className=\"border-1 border-white opacity-5 w-full absolute left-0\" />\n        <div className=\"grid xs:justify-items-center md:justify-items-center xl:justify-items-start xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 py-32\">\n          <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\" aria-label={partnersLogosAriaLabel}>\n            {partnersLogos && (\n              <ul className=\"flex flex-wrap xs:gap-32 md:gap-[30px]\">\n                {partnersLogos\n                  .filter((_i, index) => index < 10)\n                  .map((partner, index) => {\n                    const key = `logo-${index}`;\n\n                    return (\n                      <li key={key}>\n                        {partner?.link && partner?.image && (\n                          <a\n                            {...partner.link}\n                            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 opacity-50 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-focus focus:opacity-100 hover:opacity-100\"\n                          >\n                            <img alt={partner.image.alt} {...partner.image} />\n                          </a>\n                        )}\n                        {!partner?.link && partner?.image && <img {...partner?.image} alt={partner?.image.alt} />}\n                      </li>\n                    );\n                  })}\n              </ul>\n            )}\n          </nav>\n        </div>\n        <hr aria-hidden className=\"border-1 border-white opacity-5 w-full absolute left-0\" />\n\n        <FooterSocialUsefulCopyright\n          socialsLink={socialsLink}\n          usefulLinks={usefulLinks}\n          copyright={copyright}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { PublicFooterMainPlusCardLinks };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\nimport { CardFooterProps } from '../models/CardFooterProps';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\nimport { MainFooter } from '../shared-components/footer-main';\nimport { PublicFooterHighlight } from './public-footer-highlight';\nimport { PublicFooterMainPlusCardLinks } from './public-footer-main-plus-card-links';\nimport './public-footer.scss';\n\nexport interface PublicFooterProps {\n  /**\n   * Informative card. Links limited to first 3, remaining array is discarded.\n   */\n  card?: CardFooterProps;\n\n  /**\n   * Contacts limited to first 2, remaining array is discarded.\n   */\n  contacts?: ContactsFooterProps[];\n\n  /*\n   * Informative list of links. Links limited to first 5, remaining array is discarded.\n   */\n  cardLinks?: CardLinksFooterProps;\n\n  /**\n   * Image on left side with/without link.\n   */\n  brandImage: LinkableImagesProps;\n\n  /**\n   * Image on right side with/without link.\n   */\n  badgeImage?: LinkableImagesProps;\n\n  /**\n   * Small descriptive text\n   */\n  caption: string | ReactNode;\n\n  /**\n   * List of images with or without link. Links limited to first 10, remaining array is discarded.\n   */\n  partnersLogos: LinkableImagesProps[];\n\n  /**\n   * Accessible text for the partners logos.\n   */\n  partnersLogosAriaLabel?: string;\n\n  /**\n   * List of icons with/without link. Links limited to first 10, remaining array is discarded.\n   */\n  socialsLink?: LinkableIconsProps[];\n\n  /**\n   * Accessible text for the social links.\n   */\n  socialsLinkAriaLabel?: string;\n\n  /**\n   * List of links. Links limited to first 8, remaining array is discarded.\n   */\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n\n  /**\n   * Accessible text for the useful links.\n   */\n  usefulLinksAriaLabel?: string;\n\n  /*\n   * Copyright text\n   */\n  copyright: string | ReactNode;\n}\n\nconst PublicFooter: FC<PublicFooterProps> = ({\n  card,\n  contacts,\n  cardLinks,\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright\n}) => {\n  return (\n    <div className=\"agora-footer\">\n      {(card || contacts || !cardLinks) && (\n        <>\n          <PublicFooterHighlight card={card} cardLinks={cardLinks} contacts={contacts} />\n          {(card || cardLinks || contacts) && (\n            <hr\n              aria-hidden\n              className=\"border-1 xs:border-white md:border-transparent xl:border-transparent opacity-5 w-full absolute left-0\"\n            />\n          )}\n          <MainFooter\n            brandImage={brandImage}\n            badgeImage={badgeImage}\n            caption={caption}\n            partnersLogos={partnersLogos}\n            partnersLogosAriaLabel={partnersLogosAriaLabel}\n            socialsLink={socialsLink}\n            socialsLinkAriaLabel={socialsLinkAriaLabel}\n            usefulLinks={usefulLinks}\n            usefulLinksAriaLabel={usefulLinksAriaLabel}\n            copyright={copyright}\n          />\n        </>\n      )}\n      {!card && cardLinks && (\n        <PublicFooterMainPlusCardLinks\n          cardLinks={cardLinks}\n          brandImage={brandImage}\n          badgeImage={badgeImage}\n          caption={caption}\n          partnersLogos={partnersLogos}\n          partnersLogosAriaLabel={partnersLogosAriaLabel}\n          socialsLink={socialsLink}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinks={usefulLinks}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n          copyright={copyright}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { PublicFooter };\n","import React, { ComponentProps, FC, HTMLProps } from 'react';\n\nimport classNames from 'classnames';\n\nimport './glossary-letters.scss';\n\nexport type LetterStatus = 'default' | 'disabled' | 'selected';\n\nexport interface GlossaryLetter extends HTMLProps<HTMLAnchorElement> {\n  /**\n   * Letter to be rendered\n   */\n  letter: string;\n  /**\n   *  Glossary letter status\n   */\n  status: LetterStatus;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nexport interface GlossaryLettersProps extends ComponentProps<'div'> {\n  /**\n   * Letters Array\n   */\n  letters?: GlossaryLetter[];\n  /**\n   * Turn the dark mode on or off.\n   */\n  darkMode?: boolean;\n}\n\nconst GlossaryLetters: FC<GlossaryLettersProps> = ({ ref = null, letters, ...props }) => {\n  const NavElementClass = classNames('navElement');\n  const GlossaryContainerClass = classNames('glossary-container');\n\n  return (\n    <nav {...props} className={NavElementClass} ref={ref}>\n      <div className={GlossaryContainerClass}>\n        {letters?.map(({ letter, status, ...anchorProps }) => {\n          const isDisabled = status === 'disabled';\n\n          const isSelected = status === 'selected';\n\n          const darkMode = props.darkMode || false;\n\n          const letterClassName = classNames('letter', {\n            'letter-disabled': isDisabled,\n            'letter-selected': isSelected && !darkMode,\n\n            'letter-dark': darkMode,\n            'letter-dark-selected': isSelected && darkMode\n          });\n\n          const href = `#${letter}`;\n\n          if (isDisabled) {\n            return (\n              <span key={`${letter}-${href}`} className={letterClassName} aria-disabled=\"true\">\n                {letter}\n              </span>\n            );\n          }\n\n          return (\n            <a key={`${letter}-${href}`} {...anchorProps} className={letterClassName} href={href}>\n              {letter}\n            </a>\n          );\n        })}\n      </div>\n    </nav>\n  );\n};\n\nexport { GlossaryLetters };\n","import { AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooterActionProps } from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { InputSearchBarProps } from '@/components/input-search-bar';\nimport { createContext, ReactElement, ReactNode, useContext } from 'react';\n\nexport interface HeaderDataContextProps {\n  getGeneralBarAriaLabel: () => string;\n\n  getInstitutionalPhrase: () => ReactNode;\n  getLogoImage: () => ReactNode;\n\n  hasVisibleAreas: () => boolean;\n  getAreasAriaLabel: () => string;\n  getAreas: () => InternalAreaProps[];\n  getActiveArea: () => InternalAreaProps | undefined;\n  onAreaChange?: (area: string) => void;\n\n  hasLanguages: () => boolean;\n  getLanguagesAriaLabel: () => string;\n  getCheckedLanguage: () => LanguageProps[];\n  getLanguages: () => LanguageProps[];\n  onLanguageChange?: (lang: string) => void;\n\n  getAuthenticated: () => AuthenticatedProps | null;\n  getAuthenticatedHeader: () => AuthenticatedHeaderProps | null;\n  getAuthenticatedBodyLinks: () => AuthenticatedBodyLinkProps[];\n  getAuthenticatedFooterActions: () => AuthenticatedFooterActionProps[];\n\n  getUnauthenticated: () => UnauthenticatedProps | null;\n  getUnauthenticatedLinks: () => UnauthenticatedLinkProps[];\n\n  hasSearch: () => boolean;\n  getSearchLabel: () => string;\n  hasDefaultSearch: () => boolean;\n  getDefaultSearchTitle: () => SearchTitleProps | null;\n  getDefaultSearchInputBar: () => InputSearchBarProps | null;\n  getCustomSearchInputBar: () => ReactNode;\n  getDefaultSearchRelatedLinksTitle: () => SearchRelatedLinksTitleProps | null;\n  getDefaultSearchRelatedLinks: () => SearchRelatedLinkProps[];\n\n  hasCustomSearch: () => boolean;\n  getCustomSearch: () => CustomSearchProps | null;\n\n  countNavigationItems: () => number;\n  maxNavigationItems: number;\n\n  getNavigationId: () => string;\n  getNavigationItems: () => ReactElement<NavigationRootProps | NavigationLinkProps>[];\n  getResponsiveMenuLabel: () => string;\n  getResponsiveMenuAriaLabel: () => string;\n  getResponsiveMenuBackToRootLabel: () => string;\n\n  getModalMenuLabel: () => string;\n  getModalAriaLabel: () => string;\n  getModalCloseLabel: () => string;\n\n  darkMode: boolean;\n}\n\nexport const HeaderDataContext = createContext<HeaderDataContextProps>({} as HeaderDataContextProps);\n\nexport const useHeaderDataContext = (): HeaderDataContextProps => {\n  return useContext(HeaderDataContext);\n};\n","import { ButtonProps } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport React, { FC, ReactNode } from 'react';\n\nexport interface AreaProps extends ButtonProps {\n  value: string;\n  label: ReactNode;\n  active?: BooleanProp;\n}\n\nexport const Area: FC<AreaProps> = () => <></>;\n","import { ButtonGroupProps } from '@/components/button-group';\nimport React, { FC, ReactElement } from 'react';\nimport { AreaProps } from './area';\n\nexport interface AreasProps extends Omit<ButtonGroupProps, 'onChange'> {\n  ['aria-label']: string;\n  children: ReactElement<AreaProps> | ReactElement<AreaProps>[];\n  onChange?: (activeArea: string) => void;\n}\nexport const Areas: FC<AreasProps> = () => <></>;\n","import React, { FC, ReactElement } from 'react';\nimport { AreasProps } from './areas/areas';\nimport { AuthenticatedProps } from './authenticated/authenticated';\nimport { LanguagesProps } from './languages/languages';\nimport { SearchProps } from './search/search';\nimport { UnauthenticatedProps } from './unauthenticated/unauthenticated';\n\nexport interface GeneralBarProps {\n  ['aria-label']: string;\n  children:\n    | ReactElement<AreasProps | LanguagesProps | AuthenticatedProps | UnauthenticatedProps | SearchProps>\n    | ReactElement<AreasProps | LanguagesProps | AuthenticatedProps | UnauthenticatedProps | SearchProps>[];\n}\nexport const GeneralBar: FC<GeneralBarProps> = () => <></>;\n","import { BrandProps } from '@/components/header/brand/brand';\nimport { Area, AreaProps } from '@/components/header/general-bar/areas/area';\nimport { Areas, AreasProps } from '@/components/header/general-bar/areas/areas';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { Children, isValidElement, ReactElement } from 'react';\n\nexport const hasVisibleAreasProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  let areaReactElements: ReactElement<AreaProps>[] = [];\n  if (areasReactElement && isValidElement<AreasProps>(areasReactElement)) {\n    areaReactElements = Children.toArray(areasReactElement.props.children).map((child) => {\n      if (isValidElement<AreaProps>(child) && (child as ReactElement).type === Area) {\n        return child;\n      }\n    }) as ReactElement<AreaProps>[];\n  }\n\n  return areaReactElements.length > 1;\n};\n\nexport const getParseAreasAriaLabel = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  return areasReactElement?.props['aria-label'] ?? '';\n};\n\nexport const getParsedOnAreaChange = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): ((activeArea: string) => void) | null | undefined => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n  if (areasReactElement) {\n    return areasReactElement.props.onChange;\n  }\n};\n\nexport const getParsedAvailableAreaProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): InternalAreaProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  let areaReactElements: ReactElement<AreaProps>[] = [];\n  if (areasReactElement && isValidElement<AreasProps>(areasReactElement)) {\n    areaReactElements = Children.toArray(areasReactElement.props.children).map((child) => {\n      if (isValidElement<AreaProps>(child) && (child as ReactElement).type === Area) {\n        return child;\n      }\n    }) as ReactElement<AreaProps>[];\n  }\n\n  let areas = areaReactElements\n    .map((p) => {\n      if (isValidElement<AreaProps>(p)) {\n        return p?.props as InternalAreaProps;\n      }\n\n      return null;\n    })\n    .filter((p) => !!p);\n\n  if (areas.length > 0 && !areas.some((a) => a.active)) {\n    areas = areas.map((a, index) => {\n      return {\n        ...a,\n        active: index == 0\n      } as InternalAreaProps;\n    });\n  }\n\n  return areas;\n};\n\nexport const getParsedActiveAreaProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): InternalAreaProps | undefined => {\n  return getParsedAvailableAreaProps(children)\n    .filter((a) => a.active)\n    .at(0);\n};\n","import { ButtonProps } from '@/components/button';\nimport React, { FC } from 'react';\n\nexport interface AuthenticatedFooterActionProps extends ButtonProps {}\nexport const AuthenticatedFooterAction: FC<AuthenticatedFooterActionProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface AuthenticatedHeaderProps extends ComponentProps<'div'> {\n  closeAriaLabel?: string;\n}\nexport const AuthenticatedHeader: FC<AuthenticatedHeaderProps> = () => <></>;\n","import { AvatarProps } from '@/components/avatar';\nimport React, { FC, ReactElement } from 'react';\nimport { AuthenticatedBodyProps } from './authenticated-body';\nimport { AuthenticatedFooterProps } from './authenticated-footer';\nimport { AuthenticatedHeaderProps } from './authenticated-header';\n\nexport interface AuthenticatedProps extends AvatarProps {\n  children:\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>[];\n}\nexport const Authenticated: FC<AuthenticatedProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { AuthenticatedBodyLinkProps } from './authenticated-body-link';\n\nexport interface AuthenticatedBodyProps extends ComponentProps<'div'> {\n  children?: ReactElement<AuthenticatedBodyLinkProps> | ReactElement<AuthenticatedBodyLinkProps>[];\n}\nexport const AuthenticatedBody: FC<AuthenticatedBodyProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface AuthenticatedBodyLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\nexport const AuthenticatedBodyLink: FC<AuthenticatedBodyLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { AuthenticatedFooterActionProps } from './authenticated-footer-action';\n\nexport interface AuthenticatedFooterProps extends ComponentProps<'div'> {\n  children: ReactElement<AuthenticatedFooterActionProps> | ReactElement<AuthenticatedFooterActionProps>[];\n}\nexport const AuthenticatedFooter: FC<AuthenticatedFooterProps> = () => <></>;\n","import {\n  AuthenticatedFooterAction,\n  AuthenticatedFooterActionProps\n} from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeader, AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { BrandProps } from '@/components/header/brand/brand';\nimport { Authenticated, AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBody, AuthenticatedBodyProps } from '@/components/header/general-bar/authenticated/authenticated-body';\nimport { AuthenticatedBodyLink, AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooter, AuthenticatedFooterProps } from '@/components/header/general-bar/authenticated/authenticated-footer';\nimport { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedAuthenticatedProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): AuthenticatedProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  return authenticatedReactElement ? authenticatedReactElement.props : null;\n};\n\nexport const getParsedAuthenticatedHeaderProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): AuthenticatedHeaderProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedHeaderReactElement: ReactElement<AuthenticatedHeaderProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedHeaderReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedHeaderProps>(child) && (child as ReactElement).type === AuthenticatedHeader;\n    }) as ReactElement<AuthenticatedHeaderProps> | null;\n    if (authenticatedHeaderReactElement) {\n      return authenticatedHeaderReactElement.props;\n    }\n  }\n\n  return null;\n};\n\nexport const getParsedAuthenticatedBodyLinkProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): AuthenticatedBodyLinkProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedBodyReactElement: ReactElement<AuthenticatedBodyProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedBodyReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedBodyProps>(child) && (child as ReactElement).type === AuthenticatedBody;\n    }) as ReactElement<AuthenticatedBodyProps>;\n  }\n\n  if (authenticatedBodyReactElement) {\n    return Children.toArray(authenticatedBodyReactElement.props.children)\n      .map((child) => {\n        if (isValidElement<AuthenticatedBodyLinkProps>(child) && (child as ReactElement).type === AuthenticatedBodyLink) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [] as AuthenticatedBodyLinkProps[];\n};\n\nexport const getParsedAuthenticatedFooterActionProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): AuthenticatedFooterActionProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedFooterReactElement: ReactElement<AuthenticatedFooterProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedFooterReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedFooterProps>(child) && (child as ReactElement).type === AuthenticatedFooter;\n    }) as ReactElement<AuthenticatedFooterProps>;\n  }\n\n  if (authenticatedFooterReactElement) {\n    return Children.toArray(authenticatedFooterReactElement.props.children)\n      .map((child) => {\n        if (isValidElement<AuthenticatedFooterActionProps>(child) && (child as ReactElement).type === AuthenticatedFooterAction) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [] as AuthenticatedFooterActionProps[];\n};\n","import React, { FC, ReactElement } from 'react';\nimport { InstitutionalProps } from './institutional';\nimport { LogoProps } from './logo';\n\nexport interface BrandProps {\n  children: ReactElement<LogoProps | InstitutionalProps> | ReactElement<LogoProps | InstitutionalProps>[];\n}\n\nexport const Brand: FC<BrandProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface InstitutionalProps extends ComponentProps<'div'> {}\n\nexport const Institutional: FC<InstitutionalProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface LogoProps extends ComponentProps<'div'> {}\n\nexport const Logo: FC<LogoProps> = () => <></>;\n","import { Brand, BrandProps } from '@/components/header/brand/brand';\nimport { Institutional, InstitutionalProps } from '@/components/header/brand/institutional';\nimport { Logo, LogoProps } from '@/components/header/brand/logo';\nimport { GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport React, { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const getParsedInstitutionalPhrase = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): ReactNode => {\n  const brandReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<BrandProps>(child) && (child as ReactElement).type === Brand;\n  });\n\n  let institutionalElement: ReactElement<InstitutionalProps> | null = null;\n  if (brandReactElement && isValidElement<BrandProps>(brandReactElement)) {\n    institutionalElement = Children.toArray(brandReactElement.props.children).find((child) => {\n      return isValidElement<InstitutionalProps>(child) && (child as ReactElement).type === Institutional;\n    }) as ReactElement<InstitutionalProps> | null;\n  }\n\n  return institutionalElement ? institutionalElement.props.children : '';\n};\n\nexport const getParsedLogo = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): ReactNode => {\n  const brandReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<BrandProps>(child) && (child as ReactElement).type === Brand;\n  });\n\n  let logoElement: ReactElement<LogoProps> | null = null;\n  if (brandReactElement && isValidElement<BrandProps>(brandReactElement)) {\n    logoElement = Children.toArray(brandReactElement.props.children).find((child) => {\n      return isValidElement<LogoProps>(child) && (child as ReactElement).type === Logo;\n    }) as ReactElement<LogoProps> | null;\n  }\n\n  return logoElement ? logoElement.props.children : '';\n};\n","import { BrandProps } from '@/components/header/brand/brand';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedGeneralBarAriaLabel = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  }) as ReactElement<GeneralBarProps> | null;\n\n  return generalBarReactElement?.props['aria-label'] ?? '';\n};\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface LanguageProps extends ComponentProps<'input'> {\n  icon?: string;\n  label: string;\n  abbr: string;\n  value: string;\n}\n\nexport const Language: FC<LanguageProps> = () => <></>;\n","import React, { FC, ReactElement } from 'react';\nimport { LanguageProps } from './language';\n\nexport interface LanguagesProps {\n  ['aria-label']: string;\n  children: ReactElement<LanguageProps> | ReactElement<LanguageProps>[];\n  onChange?: (activeLanguage: string) => void;\n}\nexport const Languages: FC<LanguagesProps> = () => <></>;\n","import { BrandProps } from '@/components/header/brand/brand';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Language, LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { Languages, LanguagesProps } from '@/components/header/general-bar/languages/languages';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getLanguagesProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): ReactElement<LanguagesProps> | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    return Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<LanguagesProps>(child) && (child as ReactElement).type === Languages;\n    }) as ReactElement<LanguagesProps> | null;\n  }\n\n  return null;\n};\n\nexport const hasLanguagesProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): boolean => {\n  return !!getLanguagesProps(children);\n};\n\nexport const getParsedLanguagesAriaLabel = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): string => {\n  const languagesReactElement = getLanguagesProps(children);\n  return languagesReactElement?.props['aria-label'] ?? '';\n};\n\nexport const getParsedOnLanguageChange = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): ((activeLanguage: string) => void) | null | undefined => {\n  const languagesReactElement = getLanguagesProps(children);\n  if (languagesReactElement) {\n    return languagesReactElement.props.onChange;\n  }\n};\n\nexport const getParsedAvailableLanguageProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): LanguageProps[] => {\n  const languagesReactElement = getLanguagesProps(children);\n\n  let languageReactElements: ReactElement<LanguageProps>[] = [];\n  if (languagesReactElement && isValidElement<LanguagesProps>(languagesReactElement)) {\n    languageReactElements = Children.toArray(languagesReactElement.props.children).map((child) => {\n      if (isValidElement<LanguageProps>(child) && (child as ReactElement).type === Language) {\n        return child;\n      }\n    }) as ReactElement<LanguageProps>[];\n  }\n\n  return languageReactElements\n    .map((p) => {\n      if (isValidElement<LanguageProps>(p)) {\n        return p?.props;\n      }\n    })\n    .filter((p) => !!p);\n};\n\nexport const getParsedCheckedLanguageProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): LanguageProps[] => {\n  const languagesReactElement = getLanguagesProps(children);\n\n  let languageReactElements: ReactElement<LanguageProps>[] = [];\n  if (languagesReactElement && isValidElement<LanguagesProps>(languagesReactElement)) {\n    languageReactElements = Children.toArray(languagesReactElement.props.children).map((child) => {\n      if (isValidElement<LanguageProps>(child) && (child as ReactElement).type === Language) {\n        return child;\n      }\n    }) as ReactElement<LanguageProps>[];\n  }\n\n  if (languageReactElements.length > 0) {\n    return languageReactElements\n      .filter((lang) => {\n        return isValidElement<LanguageProps>(lang) && lang.props.checked;\n      })\n      .map((lang) => lang.props);\n  }\n\n  return [] as LanguageProps[];\n};\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { NavigationRootProps } from './navigation-root';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface NavigationBarProps extends ComponentProps<'div'> {\n  id?: string;\n\n  //  RESPONSIVE\n  responsiveMenuLabel?: string;\n\n  responsiveMenuAriaLabel?: string;\n\n  responsiveMenuBackToRootLabel?: string;\n\n  //  MODAL\n  modalMenuLabel?: string;\n\n  modalAriaLabel?: string;\n  modalCloseLabel?: string;\n\n  children: ReactElement<NavigationRootProps | NavigationLinkProps> | ReactElement<NavigationRootProps | NavigationLinkProps>[];\n}\n\nexport const NavigationBar: FC<NavigationBarProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface NavigationLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\nexport const NavigationLink: FC<NavigationLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { RelatedNavigationLinkProps } from './related-navigation-link';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface NavigationRootProps extends ComponentProps<'div'> {\n  label: string;\n  linksAriaLabel?: string;\n  relatedLinksAriaLabel?: string;\n  children:\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps>\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps>[];\n}\nexport const NavigationRoot: FC<NavigationRootProps> = () => <></>;\n","import { BrandProps } from '@/components/header/brand/brand';\nimport { GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { NavigationBar, NavigationBarProps } from '@/components/header/navigation-bar/navigation-bar';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\ntype NavigationBarChildrenType = BrandProps | GeneralBarProps | NavigationBarProps;\n\nexport const getParsedNavigationBarProps = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): NavigationBarProps | null => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps>;\n\n  return navigationBarReactElement?.props;\n};\n\nexport const getParsedNavigationBarId = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = getParsedNavigationBarProps(children);\n  return navigationBarReactElement?.id ?? '';\n};\n\nexport const countParsedNavigationItems = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): number => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return Children.toArray(navigationBarReactElement?.props.children ?? []).length;\n};\n\nexport const getParsedNavigationItems = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): ReactElement<NavigationRootProps | NavigationLinkProps>[] => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps>;\n\n  return Children.toArray(navigationBarReactElement.props.children)\n    .map((child) => {\n      if (isValidElement<NavigationRootProps>(child) && (child as ReactElement).type === NavigationRoot) {\n        return child;\n      }\n\n      if (isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink) {\n        return child;\n      }\n\n      return null;\n    })\n    .filter((c) => !!c) as ReactElement<NavigationRootProps | NavigationLinkProps>[];\n};\n\n//  #REGION MODAL\n\nexport const getParsedModalMenuLabel = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalMenuLabel ?? '';\n};\n\nexport const getParsedModalAriaLabel = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalAriaLabel ?? '';\n};\n\nexport const getParsedModalCloseLabel = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalCloseLabel ?? '';\n};\n\n//  #ENDREGION MODAL\n\n//  #REGION BURGER\n\nexport const getParsedResponsiveMenuLabel = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuLabel ?? '';\n};\n\nexport const getParsedResponsiveMenuAriaLabel = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuAriaLabel ?? '';\n};\n\nexport const getParsedResponsiveMenuBackToRootLabel = (\n  children?: ReactElement<NavigationBarChildrenType> | ReactElement<NavigationBarChildrenType>[]\n): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuBackToRootLabel ?? '';\n};\n\n//  #ENDREGION BURGER\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface CustomSearchProps extends ComponentProps<'div'> {}\n\nexport const CustomSearch: FC<CustomSearchProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { SearchRelatedLinksProps } from './search-related-links';\nimport { SearchTitleProps } from './search-title';\nimport { SearchInputContainerProps } from './search-input-container';\n\nexport interface DefaultSearchProps extends ComponentProps<'div'> {\n  children:\n    | ReactElement<SearchTitleProps | SearchInputContainerProps | SearchRelatedLinksProps>\n    | ReactElement<SearchTitleProps | SearchInputContainerProps | SearchRelatedLinksProps>[];\n}\n\nexport const DefaultSearch: FC<DefaultSearchProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { CustomSearchProps } from './custom-search';\nimport { DefaultSearchProps } from './default-search';\n\nexport interface SearchProps extends ComponentProps<'div'> {\n  label: string;\n  children: ReactElement<DefaultSearchProps | CustomSearchProps>;\n}\nexport const Search: FC<SearchProps> = () => <></>;\n","import { InputSearchBarProps } from '@/components/input-search-bar';\nimport React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nexport interface SearchInputContainerProps extends ComponentProps<'div'> {\n  children: ReactElement<InputSearchBarProps> | ReactNode;\n}\n\nexport const SearchInputContainer: FC<SearchInputContainerProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface SearchRelatedLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\n\nexport const SearchRelatedLink: FC<SearchRelatedLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { SearchRelatedLinkProps } from './search-related-link';\nimport { SearchRelatedLinksTitleProps } from './search-related-links-title';\n\nexport interface SearchRelatedLinksProps extends ComponentProps<'div'> {\n  children:\n    | ReactElement<SearchRelatedLinksTitleProps | SearchRelatedLinkProps>\n    | ReactElement<SearchRelatedLinksTitleProps | SearchRelatedLinkProps>[];\n}\n\nexport const SearchRelatedLinks: FC<SearchRelatedLinksProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface SearchRelatedLinksTitleProps extends ComponentProps<'div'> {}\n\nexport const SearchRelatedLinksTitle: FC<SearchRelatedLinksTitleProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface SearchTitleProps extends ComponentProps<'div'> {}\n\nexport const SearchTitle: FC<SearchTitleProps> = () => <></>;\n","import React from 'react';\nimport './equalizer.scss';\n\nexport interface EqualizerProps {}\n\nexport const Equalizer: React.FC<EqualizerProps> = () => {\n  return (\n    <span className=\"equalizer\">\n      <span className=\"bar-container\">\n        <span className=\"equalizer-1\" />\n        <span className=\"equalizer-2\" />\n        <span className=\"equalizer-3\" />\n        <span className=\"equalizer-4\" />\n      </span>\n    </span>\n  );\n};\n","import { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, Ref, useEffect, useId, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport { Equalizer } from './equalizer/equalizer';\nimport './input-search-bar.scss';\n\nexport interface InputSearchBarElement extends HTMLInputElement {\n  /**\n   * React ref object to the search action button.\n   */\n  searchActionButton?: Ref<HTMLButtonElement>;\n  /**\n   * React ref object to the voice action button.\n   */\n  voiceActionButton?: Ref<HTMLButtonElement>;\n}\n\nexport interface InputSearchBarProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * The flag to set if the label is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines if the user specifies a leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Defines if the voice action button is visible.\n   */\n  hasVoiceActionButton?: BooleanProp;\n  /**\n   * Defines if the voice action button is active and displaying the equalizer animation.\n   */\n  isVoiceActive?: BooleanProp;\n  /**\n   * Alternative text for the voice action button.\n   */\n  voiceActionAltText?: string;\n  /**\n   * Alternative text for the search action button.\n   */\n  searchActionAltText?: string;\n  /**\n   * Callback to execute whenever the user activates the microphone button.\n   */\n  onVoiceActivate?: () => void;\n  /**\n   * Callback to execute whenever the user activates the search button.\n   */\n  onSearchActivate?: (term: string) => void;\n  /**\n   * React ref object to the input search bar.\n   */\n  ref?: Ref<InputSearchBarElement>;\n}\n\nconst InputSearchBar: FC<InputSearchBarProps> = ({\n  ref = null,\n  className,\n  label,\n  hideLabel,\n  darkMode,\n  hasIcon,\n  icon,\n  hasVoiceActionButton = true,\n  voiceActionAltText = '',\n  searchActionAltText = '',\n  isVoiceActive,\n  onVoiceActivate,\n  onSearchActivate,\n  onChange,\n  ...props\n}) => {\n  const innerRef = useRef<HTMLInputElement>(null);\n  const searchButtonRef = useRef<HTMLButtonElement>(null);\n  const voiceButtonRef = useRef<HTMLButtonElement>(null);\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  useExpandedRef<InputSearchBarElement>(\n    ref,\n    innerRef,\n    {\n      searchActionButton: searchButtonRef,\n      voiceActionButton: voiceButtonRef\n    } as InputSearchBarElement,\n    [innerRef, searchButtonRef, voiceButtonRef]\n  );\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentTarget, setCurrentTarget] = useState(propsClone.value);\n\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n    setCurrentTarget(value);\n    onChange?.(evt);\n  };\n\n  const onVoiceButtonClick = () => {\n    onVoiceActivate?.();\n  };\n\n  const onMouseEnterHandler = () => {\n    setActiveState('hover');\n  };\n\n  const onMouseLeaveHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseDownHandler = () => {\n    setActiveState('active');\n  };\n\n  const onMouseUpHandler = () => {\n    setActiveState('hover');\n  };\n\n  const onSearchButtonClick = () => {\n    onSearchActivate?.(currentTarget?.toString() ?? '');\n  };\n\n  const inputWrapperClassNames = classNames('agora-input-search-bar', { 'dark-mode': darkMode }, className);\n\n  const labelSectionClasses = classNames('input-label-wrapper flex items-end', {\n    'mb-16': label && !stringToBoolean(hideLabel),\n    'justify-end': !label || stringToBoolean(hideLabel),\n    'justify-between': label && !stringToBoolean(hideLabel)\n  });\n\n  const MIN_SEARCH_LENGTH = 3;\n\n  useEffect(() => {\n    setCurrentTarget(propsClone.value);\n  }, [propsClone.value]);\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClassNames}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-search-bar-label\">\n          {label}\n        </label>\n      </div>\n      {/* Search input wrapper */}\n      <div className=\"input-search-bar-container\">\n        {hasIcon && icon?.startsWith('agora-line') && <Icon name={icon} aria-hidden />}\n        <input\n          {...propsClone}\n          className=\"flex-grow-[1] outline-none\"\n          ref={innerRef}\n          type=\"text\"\n          disabled={!!propsClone.disabled}\n          onChange={handleChangeEvent}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n        />\n\n        <div className=\"actions-container flex flex-row gap-16\">\n          {stringToBoolean(hasVoiceActionButton) && (\n            <Button\n              type=\"button\"\n              ref={voiceButtonRef}\n              className=\"microphone-icon\"\n              appearance=\"link\"\n              aria-label={voiceActionAltText}\n              onClick={onVoiceButtonClick}\n              onMouseEnter={onMouseEnterHandler}\n              onMouseLeave={onMouseLeaveHandler}\n              onMouseUp={onMouseUpHandler}\n              onMouseDown={onMouseDownHandler}\n            >\n              {stringToBoolean(hasVoiceActionButton) && isVoiceActive ? (\n                <Equalizer />\n              ) : (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem aria-hidden state=\"default\" name={'agora-line-mic-on'} />\n                  <IconItem aria-hidden state=\"hover\" name={'agora-solid-mic-on'} />\n                  <IconItem aria-hidden state=\"active\" name={'agora-line-mic-on'} />\n                </IconSet>\n              )}\n            </Button>\n          )}\n          <Button\n            ref={searchButtonRef}\n            className=\"magnifier-icon\"\n            appearance=\"solid\"\n            iconOnly\n            hasIcon\n            leadingIcon=\"agora-line-search\"\n            leadingIconHover=\"agora-solid-search\"\n            aria-label={searchActionAltText}\n            onClick={onSearchButtonClick}\n            disabled={(currentTarget?.toString()?.length ?? 0) <= MIN_SEARCH_LENGTH}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { InputSearchBar };\n","import { BrandProps } from '@/components/header/brand/brand';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { CustomSearch, CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { DefaultSearch, DefaultSearchProps } from '@/components/header/general-bar/search/default-search';\nimport { Search, SearchProps } from '@/components/header/general-bar/search/search';\nimport { SearchInputContainer, SearchInputContainerProps } from '@/components/header/general-bar/search/search-input-container';\nimport { SearchRelatedLink, SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinks, SearchRelatedLinksProps } from '@/components/header/general-bar/search/search-related-links';\nimport { SearchRelatedLinksTitle, SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitle, SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { InputSearchBar, InputSearchBarProps } from '@/components/input-search-bar';\nimport React, { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const hasSearchProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    const searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n\n    return !!searchPropsElement;\n  }\n\n  return false;\n};\n\nexport const getSearchButtonLabel = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  return searchPropsElement?.props.label ?? '';\n};\n\nexport const hasDefaultSearchProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement && isValidElement<DefaultSearchProps>(searchPropsElement?.props.children)) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n\n    return !!defaultSearchPropsElement;\n  }\n\n  return false;\n};\n\nexport const getParsedDefaultSearchTitle = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): SearchTitleProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchTitleElem: ReactElement<SearchTitleProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchTitleElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchTitleProps>(child) && (child as ReactElement).type === SearchTitle;\n    }) as ReactElement<SearchTitleProps> | null;\n  }\n\n  return defaultSearchTitleElem?.props as ReactElement<SearchTitleProps> | null;\n};\n\nexport const getParsedDefaultSearchInputBar = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): InputSearchBarProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchInputSearchBarElement: ReactElement<SearchInputContainerProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchInputSearchBarElement = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchInputContainerProps>(child) && (child as ReactElement).type === SearchInputContainer;\n    }) as ReactElement<SearchInputContainerProps> | null;\n  }\n\n  let inputSearchBarElement: ReactElement<InputSearchBarProps> | null = null;\n\n  if (defaultSearchInputSearchBarElement) {\n    inputSearchBarElement = Children.toArray(defaultSearchInputSearchBarElement.props.children).find((child) => {\n      return isValidElement<InputSearchBarProps>(child) && (child as ReactElement).type === InputSearchBar;\n    }) as ReactElement<InputSearchBarProps>;\n  }\n\n  return inputSearchBarElement?.props ?? null;\n};\n\nexport const getParsedCustomSearchInputBar = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): ReactNode => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchInputSearchBarElement: ReactElement<SearchInputContainerProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchInputSearchBarElement = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchInputContainerProps>(child) && (child as ReactElement).type === SearchInputContainer;\n    }) as ReactElement<SearchInputContainerProps> | null;\n  }\n\n  return defaultSearchInputSearchBarElement?.props.children as ReactElement<SearchInputContainerProps> | null;\n};\n\nexport const getParsedDefaultSearchRelatedLinksTitle = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): SearchRelatedLinksTitleProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchRelatedLinksElem: ReactElement<SearchRelatedLinksProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchRelatedLinksElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksProps>(child) && (child as ReactElement).type === SearchRelatedLinks;\n    }) as ReactElement<SearchRelatedLinksProps> | null;\n  }\n\n  let defaultSearchRelatedLinksTitleElem: ReactElement<SearchRelatedLinksTitleProps> | null = null;\n  if (defaultSearchRelatedLinksElem) {\n    defaultSearchRelatedLinksTitleElem = Children.toArray(defaultSearchRelatedLinksElem.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksTitleProps>(child) && (child as ReactElement).type === SearchRelatedLinksTitle;\n    }) as ReactElement<SearchRelatedLinksTitleProps> | null;\n  }\n\n  return defaultSearchRelatedLinksTitleElem?.props as ReactElement<SearchRelatedLinksTitleProps> | null;\n};\n\nexport const getParsedDefaultSearchRelatedLinks = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): SearchRelatedLinkProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchRelatedLinksElem: ReactElement<SearchRelatedLinksProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchRelatedLinksElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksProps>(child) && (child as ReactElement).type === SearchRelatedLinks;\n    }) as ReactElement<SearchRelatedLinksProps> | null;\n  }\n\n  if (defaultSearchRelatedLinksElem) {\n    return Children.toArray(defaultSearchRelatedLinksElem.props.children)\n      .map((child) => {\n        if (isValidElement<SearchRelatedLinkProps>(child) && (child as ReactElement).type === SearchRelatedLink) {\n          return child.props;\n        }\n\n        return null;\n      })\n      .filter((c) => !!c);\n  }\n\n  return [];\n};\n\nexport const hasCustomSearchProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let customSearchPropsElement: ReactElement<CustomSearchProps> | null = null;\n  if (searchPropsElement && isValidElement<CustomSearchProps>(searchPropsElement.props.children)) {\n    customSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<CustomSearchProps>(child) && (child as ReactElement).type === CustomSearch;\n    }) as ReactElement<CustomSearchProps> | null;\n  }\n\n  return !!customSearchPropsElement;\n};\n\nexport const getParsedCustomSearchProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): CustomSearchProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let customSearchProps: ReactElement<CustomSearchProps> | null = null;\n  if (searchPropsElement) {\n    customSearchProps = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<CustomSearchProps>(child) && (child as ReactElement).type === CustomSearch;\n    }) as ReactElement<CustomSearchProps> | null;\n  }\n\n  return customSearchProps?.props as ReactElement<CustomSearchProps> | null;\n};\n","import { ButtonProps } from '@/components/button';\nimport React, { FC, ReactElement } from 'react';\nimport { UnauthenticatedLinkProps } from './unauthenticated-link';\n\nexport interface UnauthenticatedProps extends ButtonProps {\n  label?: string;\n  children: ReactElement<UnauthenticatedLinkProps> | ReactElement<UnauthenticatedLinkProps>[];\n}\nexport const Unauthenticated: FC<UnauthenticatedProps> = () => <></>;\n","import { BooleanProp } from '@/models';\nimport React, { ComponentProps, FC, ReactElement } from 'react';\n\nexport interface UnauthenticatedLinkProps extends ComponentProps<'div'> {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children\n   */\n  children: ReactElement<HTMLAnchorElement>;\n}\nexport const UnauthenticatedLink: FC<UnauthenticatedLinkProps> = () => <></>;\n","import { BrandProps } from '@/components/header/brand/brand';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Unauthenticated, UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLink, UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedUnauthenticatedProps = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): UnauthenticatedProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let unAuthenticatedReactElement: ReactElement<UnauthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    unAuthenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<UnauthenticatedProps>(child) && (child as ReactElement).type === Unauthenticated;\n    }) as ReactElement<UnauthenticatedProps> | null;\n  }\n\n  return unAuthenticatedReactElement ? unAuthenticatedReactElement.props : null;\n};\n\nexport const getParsedUnauthenticatedLinks = (\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[]\n): UnauthenticatedLinkProps[] => {\n  const unauthenticatedProps = getParsedUnauthenticatedProps(children);\n\n  if (unauthenticatedProps?.children) {\n    return Children.toArray(unauthenticatedProps.children)\n      .map((child) => {\n        if (isValidElement<UnauthenticatedLinkProps>(child) && (child as ReactElement).type === UnauthenticatedLink) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [];\n};\n","import { AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooterActionProps } from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { HeaderProps } from '@/components/header/header';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { InputSearchBarProps } from '@/components/input-search-bar';\nimport { stringToBoolean } from '@/utils';\nimport { ReactElement, ReactNode, useMemo } from 'react';\nimport { HeaderDataContextProps } from './header-data-context';\nimport {\n  getParseAreasAriaLabel,\n  getParsedActiveAreaProps,\n  getParsedAvailableAreaProps,\n  getParsedOnAreaChange,\n  hasVisibleAreasProps\n} from './utils/areas-utils';\nimport {\n  getParsedAuthenticatedBodyLinkProps,\n  getParsedAuthenticatedFooterActionProps,\n  getParsedAuthenticatedHeaderProps,\n  getParsedAuthenticatedProps\n} from './utils/authenticated-utils';\nimport { getParsedInstitutionalPhrase, getParsedLogo } from './utils/brand-utils';\nimport { getParsedGeneralBarAriaLabel } from './utils/general-utils';\nimport {\n  getParsedAvailableLanguageProps,\n  getParsedCheckedLanguageProps,\n  getParsedLanguagesAriaLabel,\n  getParsedOnLanguageChange,\n  hasLanguagesProps\n} from './utils/languages-utils';\nimport {\n  countParsedNavigationItems,\n  getParsedModalAriaLabel,\n  getParsedModalCloseLabel,\n  getParsedModalMenuLabel,\n  getParsedNavigationBarId,\n  getParsedNavigationItems,\n  getParsedResponsiveMenuAriaLabel,\n  getParsedResponsiveMenuBackToRootLabel,\n  getParsedResponsiveMenuLabel\n} from './utils/navigation-utils';\nimport {\n  getParsedCustomSearchInputBar,\n  getParsedCustomSearchProps,\n  getParsedDefaultSearchInputBar,\n  getParsedDefaultSearchRelatedLinks,\n  getParsedDefaultSearchRelatedLinksTitle,\n  getParsedDefaultSearchTitle,\n  getSearchButtonLabel,\n  hasCustomSearchProps,\n  hasDefaultSearchProps,\n  hasSearchProps\n} from './utils/search-utils';\nimport { getParsedUnauthenticatedLinks, getParsedUnauthenticatedProps } from './utils/unauthenticated-utils';\n\nexport const useHeaderDataController = (props: HeaderProps): HeaderDataContextProps => {\n  const { darkMode, maxNavigationItems = 5, children } = props;\n\n  const getGeneralBarAriaLabel = (): string => {\n    return getParsedGeneralBarAriaLabel(children);\n  };\n\n  const getInstitutionalPhrase = (): ReactNode => {\n    return getParsedInstitutionalPhrase(children);\n  };\n\n  const getLogoImage = (): ReactNode => {\n    return getParsedLogo(children);\n  };\n\n  const hasVisibleAreas = (): boolean => {\n    return hasVisibleAreasProps(children);\n  };\n\n  const getAreasAriaLabel = (): string => {\n    return getParseAreasAriaLabel(children);\n  };\n\n  const getAreas = (): InternalAreaProps[] => {\n    return getParsedAvailableAreaProps(children);\n  };\n\n  const getActiveArea = (): InternalAreaProps | undefined => {\n    return getParsedActiveAreaProps(children);\n  };\n\n  const onAreaChange = (area: string) => {\n    const handler = getParsedOnAreaChange(children);\n    return handler?.(area);\n  };\n\n  const hasLanguages = (): boolean => {\n    return hasLanguagesProps(children);\n  };\n\n  const getLanguagesAriaLabel = () => {\n    return getParsedLanguagesAriaLabel(children);\n  };\n\n  const onLanguageChange = (lang: string) => {\n    const handler = getParsedOnLanguageChange(children);\n    return handler?.(lang);\n  };\n\n  const getCheckedLanguage = (): LanguageProps[] => {\n    return getParsedCheckedLanguageProps(children);\n  };\n\n  const getLanguages = (): LanguageProps[] => {\n    return getParsedAvailableLanguageProps(children);\n  };\n\n  const getAuthenticated = (): AuthenticatedProps | null => {\n    return getParsedAuthenticatedProps(children);\n  };\n\n  const getAuthenticatedHeader = (): AuthenticatedHeaderProps | null => {\n    return getParsedAuthenticatedHeaderProps(children);\n  };\n\n  const getAuthenticatedBodyLinks = (): AuthenticatedBodyLinkProps[] => {\n    return getParsedAuthenticatedBodyLinkProps(children);\n  };\n\n  const getAuthenticatedFooterActions = (): AuthenticatedFooterActionProps[] => {\n    return getParsedAuthenticatedFooterActionProps(children);\n  };\n\n  const getUnauthenticated = (): UnauthenticatedProps | null => {\n    return getParsedUnauthenticatedProps(children);\n  };\n\n  const getUnauthenticatedLinks = (): UnauthenticatedLinkProps[] => {\n    return getParsedUnauthenticatedLinks(children);\n  };\n\n  const hasSearch = (): boolean => {\n    return hasSearchProps(children);\n  };\n\n  const getSearchLabel = (): string => {\n    return getSearchButtonLabel(children);\n  };\n\n  const hasDefaultSearch = (): boolean => {\n    return hasDefaultSearchProps(children);\n  };\n\n  const getDefaultSearchTitle = (): SearchTitleProps | null => {\n    return getParsedDefaultSearchTitle(children);\n  };\n\n  const getDefaultSearchInputBar = (): InputSearchBarProps | null => {\n    return getParsedDefaultSearchInputBar(children);\n  };\n\n  const getCustomSearchInputBar = (): ReactNode => {\n    return getParsedCustomSearchInputBar(children);\n  };\n\n  const getDefaultSearchRelatedLinksTitle = (): SearchRelatedLinksTitleProps | null => {\n    return getParsedDefaultSearchRelatedLinksTitle(children);\n  };\n\n  const getDefaultSearchRelatedLinks = (): SearchRelatedLinkProps[] => {\n    return getParsedDefaultSearchRelatedLinks(children);\n  };\n\n  const hasCustomSearch = (): boolean => {\n    return hasCustomSearchProps(children);\n  };\n\n  const getCustomSearch = (): CustomSearchProps | null => {\n    return getParsedCustomSearchProps(children);\n  };\n\n  const countNavigationItems = (): number => {\n    return countParsedNavigationItems(children);\n  };\n\n  const getNavigationId = (): string => {\n    return getParsedNavigationBarId(children);\n  };\n\n  //#region RESPONSIVE\n  const getResponsiveMenuLabel = () => {\n    return getParsedResponsiveMenuLabel(children);\n  };\n  const getResponsiveMenuAriaLabel = () => {\n    return getParsedResponsiveMenuAriaLabel(children);\n  };\n  const getResponsiveMenuBackToRootLabel = () => {\n    return getParsedResponsiveMenuBackToRootLabel(children);\n  };\n  //#endregion RESPONSIVE\n\n  //#region MODAL\n\n  const getModalMenuLabel = () => {\n    return getParsedModalMenuLabel(children);\n  };\n  const getModalAriaLabel = () => {\n    return getParsedModalAriaLabel(children);\n  };\n  const getModalCloseLabel = () => {\n    return getParsedModalCloseLabel(children);\n  };\n\n  //#endregion MODAL\n\n  const getNavigationItems = (): ReactElement<NavigationRootProps | NavigationLinkProps>[] => {\n    return getParsedNavigationItems(children);\n  };\n\n  return useMemo(() => {\n    return {\n      getGeneralBarAriaLabel,\n\n      getInstitutionalPhrase,\n      getLogoImage,\n\n      hasVisibleAreas,\n      getAreasAriaLabel,\n      getAreas,\n      getActiveArea,\n      onAreaChange,\n\n      hasLanguages,\n      getLanguagesAriaLabel,\n      getCheckedLanguage,\n      getLanguages,\n      onLanguageChange,\n\n      getAuthenticated,\n      getAuthenticatedHeader,\n      getAuthenticatedBodyLinks,\n      getAuthenticatedFooterActions,\n\n      getUnauthenticated,\n      getUnauthenticatedLinks,\n\n      hasSearch,\n      getSearchLabel,\n      hasDefaultSearch,\n      getDefaultSearchTitle,\n      getDefaultSearchInputBar,\n      getCustomSearchInputBar,\n      getDefaultSearchRelatedLinksTitle,\n      getDefaultSearchRelatedLinks,\n\n      hasCustomSearch,\n      getCustomSearch,\n\n      countNavigationItems,\n      maxNavigationItems,\n\n      getNavigationId,\n      getNavigationItems,\n      getResponsiveMenuLabel,\n      getResponsiveMenuAriaLabel,\n      getResponsiveMenuBackToRootLabel,\n      getModalMenuLabel,\n      getModalAriaLabel,\n      getModalCloseLabel,\n\n      darkMode: stringToBoolean(darkMode)\n    };\n  }, [props]);\n};\n","export enum MenuTypeEnum {\n  Header = 'Header',\n  Areas = 'Areas',\n  Search = 'Search',\n  Languages = 'Languages',\n  Authenticated = 'Authenticated',\n  Drawer = 'Drawer',\n  Unauthenticated = 'Unauthenticated',\n  Link = 'Link',\n  RootLink = 'RootLink',\n  MenuBurger = 'MenuBurger',\n  Modal = 'Modal',\n  NavigationList = 'NavigationList',\n  NavigationBurgerLayout = 'NavigationBurgerLayout'\n}\n","import { HeaderElement } from '@/components/header/header';\nimport { HeaderMenuContextProps } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { ForwardedRef, useImperativeHandle } from 'react';\n\nexport const useHeaderExternalController = (ref: ForwardedRef<HeaderElement>, headerMenuContext: HeaderMenuContextProps) => {\n  //  AREAS\n  const focusActiveArea = () => {\n    const menuRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Areas);\n\n    if (menuRef?.current) {\n      const activeAreaBtn = (menuRef.current as HTMLElement).querySelector('.area.selected');\n      if (activeAreaBtn) {\n        (activeAreaBtn as HTMLElement).focus();\n      }\n    }\n  };\n\n  const setActiveArea = (areaValue: string) => {\n    const menuRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Areas);\n\n    if (menuRef?.current) {\n      const areaButtons = (menuRef.current as HTMLElement).querySelectorAll('.area');\n\n      areaButtons.forEach((elem) => {\n        const btn = elem as HTMLButtonElement;\n\n        if (btn.getAttribute('data-value') === areaValue) {\n          btn.focus();\n          btn.click();\n        }\n      });\n    }\n  };\n\n  //  LANGUAGES\n  const focusLanguages = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Languages);\n  };\n\n  const openLanguages = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Languages);\n  };\n\n  //  SEARCH\n  const focusSearch = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Search);\n  };\n\n  const openSearch = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Search);\n  };\n\n  //  UNAUTHENTICATED\n  const focusUnauthenticated = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Unauthenticated);\n  };\n\n  const openUnauthenticated = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Unauthenticated);\n  };\n\n  //  AUTHENTICATED\n  const focusAuthenticated = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Authenticated);\n  };\n\n  const openAuthenticated = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Authenticated);\n  };\n\n  //  MENU BURGER\n  const focusBurgerMenu = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.MenuBurger);\n  };\n\n  const openBurgerMenu = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.MenuBurger);\n  };\n\n  //  MODAL MENU\n  const focusModalMenu = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Modal);\n  };\n\n  const openModalMenu = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Modal);\n  };\n\n  //  NAVIGATION MENU OPTION\n  const focusNavigationMenuOption = (index: number) => {\n    const navigationPanelsKeys: string[] = Array.from(headerMenuContext.menuRefMap.keys()).filter(\n      (k: string) => k.indexOf(MenuTypeEnum.NavigationList) >= 0\n    );\n\n    const key = navigationPanelsKeys[index];\n    headerMenuContext.focusMenu(key);\n  };\n\n  const openNavigationMenuOption = (index: number) => {\n    const navigationPanelsKeys: string[] = Array.from(headerMenuContext.menuRefMap.keys()).filter(\n      (k: string) => k.indexOf(MenuTypeEnum.NavigationList) >= 0\n    );\n\n    const key = navigationPanelsKeys[index];\n    headerMenuContext.expandMenu(key);\n  };\n\n  //  GENERICS\n  const closeAll = () => {\n    headerMenuContext.collapseAllMenus();\n  };\n\n  useImperativeHandle(ref, () => {\n    return {\n      focusActiveArea,\n      setActiveArea,\n      focusLanguages,\n      openLanguages,\n      focusSearch,\n      openSearch,\n      focusUnauthenticated,\n      openUnauthenticated,\n      focusAuthenticated,\n      openAuthenticated,\n      focusBurgerMenu,\n      openBurgerMenu,\n      focusModalMenu,\n      openModalMenu,\n      focusNavigationMenuOption,\n      openNavigationMenuOption,\n\n      closeAll\n    } as HeaderElement;\n  }, []);\n};\n","import { DrawerElement } from '@/components/drawer';\nimport { InternalNavigationBurgerPanelElement } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { createContext, RefObject, useContext } from 'react';\nimport { MenuTypeEnum } from './menu-type.enum';\n\nexport type HeaderMenuContextRef =\n  | PanelMenuElement\n  | HTMLDivElement\n  | DrawerElement\n  | ModalMenuElement\n  | InternalNavigationBurgerPanelElement\n  | null;\n\nexport interface HeaderMenuContextProps {\n  menuRefMap: Map<MenuTypeEnum | string, RefObject<HeaderMenuContextRef>>;\n\n  collapseAllMenus: () => void;\n  collapseMenu: (id: MenuTypeEnum | string, focusController: boolean) => void;\n  expandMenu: (id: MenuTypeEnum | string) => void;\n  focusMenu: (id: MenuTypeEnum | string) => void;\n  hasExpandedMenu: () => boolean;\n  backSubmenu: (id: MenuTypeEnum | string) => void;\n  openSubmenu: (id: MenuTypeEnum | string) => void;\n  hasOpenSubmenu: () => boolean;\n  isScrolling: () => boolean;\n}\n\nexport const HeaderMenuContext = createContext<HeaderMenuContextProps>({} as HeaderMenuContextProps);\n\nexport const useHeaderMenuContext = (): HeaderMenuContextProps => {\n  return useContext(HeaderMenuContext);\n};\n","import { useEffect, useRef, useState } from 'react';\n\nconst useScrolling = () => {\n  const [scrolling, setScrolling] = useState(false);\n\n  const scrollingTimerRef = useRef<NodeJS.Timeout | null>(null);\n\n  useEffect(() => {\n    const evaluateScrollingValue = () => {\n      setScrolling(window.scrollY > 0);\n    };\n\n    const listener = () => {\n      if (scrollingTimerRef.current !== null) {\n        return;\n      }\n\n      scrollingTimerRef.current = setTimeout(() => {\n        scrollingTimerRef.current = null;\n        evaluateScrollingValue();\n      }, 100);\n    };\n\n    evaluateScrollingValue();\n\n    window.addEventListener('scroll', listener);\n\n    return () => {\n      window.removeEventListener('scroll', listener);\n    };\n  }, []);\n\n  return { scrolling };\n};\n\nexport { useScrolling };\n","import { DrawerElement } from '@/components/drawer';\nimport { InternalNavigationBurgerPanelElement } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel';\nimport { useScrolling } from '@/components/header/internals/shared/hooks/use-scrolling';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { RefObject, useRef, useState } from 'react';\nimport { HeaderMenuContextProps } from './header-menu-context';\nimport { MenuTypeEnum } from './menu-type.enum';\n\nexport const useHeaderMenuController = (): HeaderMenuContextProps => {\n  const menuRefMap = useRef<\n    Map<\n      MenuTypeEnum | string,\n      RefObject<PanelMenuElement | HTMLDivElement | DrawerElement | ModalMenuElement | InternalNavigationBurgerPanelElement>\n    >\n  >(new Map());\n  const { scrolling } = useScrolling();\n  const [expandedMenu, setExpandedMenu] = useState(false);\n  const [openedSubmenu, setOpenedSubmenu] = useState(false);\n\n  const collapseAllMenus = (): void => {\n    menuRefMap.current.forEach((value) => {\n      (value.current as InternalNavigationBurgerPanelElement)?.close?.();\n      (value.current as PanelMenuElement)?.collapse?.(true);\n      (value.current as ModalMenuElement)?.close?.();\n    });\n\n    setExpandedMenu(false);\n    setOpenedSubmenu(false);\n  };\n\n  const collapseMenu = (id: MenuTypeEnum | string, focusController: boolean): void => {\n    menuRefMap.current.forEach((value) => {\n      if (!value.current) {\n        return;\n      }\n      (value.current as InternalNavigationBurgerPanelElement).close?.();\n      (value.current as PanelMenuElement).collapse?.(true);\n      (value.current as ModalMenuElement).close?.();\n    });\n\n    if (focusController) {\n      menuRefMap.current.get(id)?.current?.focus();\n    }\n\n    setExpandedMenu(false);\n    setOpenedSubmenu(false);\n  };\n\n  const expandMenu = (id: MenuTypeEnum | string): void => {\n    menuRefMap.current.forEach((value) => {\n      if (!value.current) {\n        return;\n      }\n      (value.current as InternalNavigationBurgerPanelElement).close?.();\n      (value.current as PanelMenuElement).collapse?.(false);\n      (value.current as ModalMenuElement).close?.();\n    });\n\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as PanelMenuElement).expand?.();\n      (ref.current as ModalMenuElement).open?.();\n    }\n\n    setExpandedMenu(true);\n  };\n\n  const focusMenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as PanelMenuElement).focus?.();\n      (ref.current as ModalMenuElement).focus?.();\n    }\n  };\n\n  const backSubmenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as InternalNavigationBurgerPanelElement).close?.();\n    }\n\n    setOpenedSubmenu(false);\n  };\n\n  const openSubmenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as InternalNavigationBurgerPanelElement).open?.();\n    }\n\n    setOpenedSubmenu(true);\n  };\n\n  const hasExpandedMenu = () => {\n    return expandedMenu;\n  };\n\n  const hasOpenSubmenu = () => {\n    return openedSubmenu;\n  };\n\n  const isScrolling = () => {\n    return scrolling;\n  };\n\n  return {\n    collapseAllMenus,\n    collapseMenu,\n    expandMenu,\n    focusMenu,\n    hasExpandedMenu,\n    backSubmenu,\n    openSubmenu,\n    hasOpenSubmenu,\n    isScrolling,\n\n    menuRefMap: menuRefMap.current\n  } as HeaderMenuContextProps;\n};\n","import { LinkWrapper, LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, ComponentProps, FC, isValidElement, useState } from 'react';\n\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport './custom-header-link.scss';\n\nexport interface CustomHeaderLinkProps extends LinkWrapperProps {\n  hasIcon?: BooleanProp;\n  iconOnly?: BooleanProp;\n  leadingIcon?: string;\n  leadingIconHover?: string;\n  trailingIcon?: string;\n  trailingIconHover?: string;\n}\n\ntype InnerAnchorType = ComponentProps<'a'> & { [dataAttribute: `data-${string}`]: string };\n\nconst CustomHeaderLink: FC<CustomHeaderLinkProps> = ({\n  ref = null,\n  variant = 'neutral',\n  hasIcon,\n  iconOnly,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  className,\n  children,\n  fullWidth = true,\n  role,\n  'aria-haspopup': ariaHasPopup,\n  'data-autofocus': dataAutoFocus,\n  tabIndex,\n  ...props\n}) => {\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const linkClassNames = classNames('custom-header-link-wrapper', className);\n\n  const handleClick = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n  };\n\n  const handleMouseEnter = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('hover');\n    }\n  };\n\n  const handleMouseDown = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('active');\n    }\n  };\n\n  const handleMouseUpOrLeave = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n  };\n\n  return (\n    <LinkWrapper {...props} ref={ref} fullWidth={fullWidth} variant={variant} appearance=\"link\" className={linkClassNames}>\n      {Children.toArray(children).map((child) => {\n        if (isValidElement<InnerAnchorType>(child)) {\n          const elemClassNames = classNames(\n            { 'link-with-icon': stringToBoolean(hasIcon) || stringToBoolean(iconOnly) },\n            { 'icon-only': stringToBoolean(iconOnly) }\n          );\n\n          return cloneElement<InnerAnchorType>(\n            child,\n            {\n              'className': elemClassNames,\n              role,\n              'aria-haspopup': ariaHasPopup,\n              'data-autofocus': dataAutoFocus,\n              tabIndex,\n              'onClick': handleClick,\n              'onMouseEnter': handleMouseEnter,\n              'onMouseLeave': handleMouseUpOrLeave,\n              'onMouseDown': handleMouseDown,\n              'onMouseUp': handleMouseUpOrLeave\n            },\n            <>\n              {hasIcon && (leadingIcon || leadingIconHover) && (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} />\n                  <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} />\n                  <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} />\n                </IconSet>\n              )}\n\n              {!iconOnly && child.props.children && <span className=\"children-wrapper\">{child.props.children}</span>}\n\n              {hasIcon && (trailingIcon || trailingIconHover) && (\n                <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n                  <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} />\n                  <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} />\n                  <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} />\n                </IconSet>\n              )}\n            </>\n          );\n        }\n      })}\n    </LinkWrapper>\n  );\n};\n\nexport { CustomHeaderLink };\n","import { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-body.scss';\n\nexport const InternalAuthenticatedDrawerBody: FC = () => {\n  const generatedId = useId();\n  const headerDataContext = useHeaderDataContext();\n  const bodyLinkProps = headerDataContext.getAuthenticatedBodyLinks();\n\n  return (\n    <div className=\"authenticated-body\">\n      <nav>\n        <ul>\n          {bodyLinkProps.map((link: AuthenticatedBodyLinkProps, index: number) => {\n            return (\n              <li key={`${generatedId}-${index}`}>\n                <CustomHeaderLink {...link} />\n              </li>\n            );\n          })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-footer.scss';\n\nexport const InternalAuthenticatedDrawerFooter: FC = () => {\n  const generatedId = useId();\n\n  const headerDataContext = useHeaderDataContext();\n\n  const footerActions = headerDataContext.getAuthenticatedFooterActions();\n\n  if (footerActions.length <= 0) {\n    return null;\n  }\n\n  return (\n    <div className=\"authenticated-footer\">\n      <ul>\n        {footerActions.map((action, index) => {\n          const buttonClassNames = classNames(action.className, 'footer-action');\n\n          return (\n            <li key={`${generatedId}-${index}`}>\n              <Button {...action} className={buttonClassNames} appearance=\"link\" variant=\"neutral\" fullWidth />\n            </li>\n          );\n        })}\n      </ul>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { Icon } from '@/components/icon';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-header.scss';\n\nexport const InternalAuthenticatedDrawerHeader: FC = () => {\n  const generatedId = useId();\n  const headerMenuContext = useHeaderMenuContext();\n  const headerDataContext = useHeaderDataContext();\n  const headerProps = headerDataContext.getAuthenticatedHeader();\n\n  const handleClick = () => {\n    headerMenuContext.collapseMenu(MenuTypeEnum.Authenticated, true);\n  };\n\n  return (\n    <div className=\"authenticated-header\">\n      <div id={generatedId} className=\"name\">\n        {headerProps?.children}\n      </div>\n      <button aria-label={headerProps?.closeAriaLabel} aria-describedby={generatedId} className=\"close\" onClick={handleClick}>\n        <Icon name=\"agora-line-chevron-right\" aria-hidden />\n      </button>\n    </div>\n  );\n};\n","import { Drawer, DrawerElement } from '@/components/drawer';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport React, { createRef, FC } from 'react';\nimport { InternalAuthenticatedDrawerBody } from './internal-authenticated-drawer-body';\nimport { InternalAuthenticatedDrawerFooter } from './internal-authenticated-drawer-footer';\nimport { InternalAuthenticatedDrawerHeader } from './internal-authenticated-drawer-header';\n\nimport './Internal-authenticated-drawer.scss';\n\nexport const InternalAuthenticatedDrawer: FC = () => {\n  const headerMenuContext = useHeaderMenuContext();\n  const headerDataContext = useHeaderDataContext();\n  const authenticatedProps = headerDataContext.getAuthenticated();\n\n  const drawerAriaLabel = authenticatedProps ? authenticatedProps['aria-label'] : '';\n\n  const ref = createRef<DrawerElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Drawer, ref);\n\n  if (!authenticatedProps) {\n    //  NOT AUTHENTICATED... SHOULD NOT PUT AUTHENTICATED DRAWER ON PAGE\n    return '';\n  }\n\n  return (\n    <Drawer ref={ref} position=\"right\" dismissOnEscape={false} dismissOnBackdropClick={false} aria-label={drawerAriaLabel}>\n      <InternalAuthenticatedDrawerHeader />\n      <InternalAuthenticatedDrawerBody />\n      <InternalAuthenticatedDrawerFooter />\n    </Drawer>\n  );\n};\n","import { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  FC,\n  isValidElement,\n  ReactElement,\n  MouseEvent as ReactMouseEvent,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { LayoutProps } from './layout.interface';\n\nimport { DrawerElement } from '@/components/drawer';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { CustomHeaderLink, CustomHeaderLinkProps } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './panel-menu.scss';\n\nexport interface PanelMenuElement extends HTMLDivElement {\n  /**\n   *  Expand the panel menu.\n   */\n  expand: () => void;\n  /**\n   *  Collapse the panel menu.\n   */\n  collapse: (isToggling?: boolean) => void;\n  /**\n   *  Focus the panel menu control.\n   */\n  focus: () => void;\n  /**\n   *  Current value of the expanded state of the panel menu.\n   */\n  isExpanded: boolean;\n}\n\nexport interface PanelMenuProps extends ComponentProps<'div'> {\n  darkMode?: boolean;\n  children: ReactElement<ButtonProps | LayoutProps> | ReactElement<ButtonProps | LayoutProps>[];\n  iconsCollapsed?: { leadingIcon?: string; leadingIconHover?: string; trailingIcon?: string; trailingIconHover?: string };\n  iconsExpanded?: { leadingIcon?: string; leadingIconHover?: string; trailingIcon?: string; trailingIconHover?: string };\n  isDrawerPanel?: boolean;\n}\n\nconst PanelMenu: FC<PanelMenuProps> = ({ ref = null, id, isDrawerPanel = false, className, children, iconsCollapsed, iconsExpanded }) => {\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n\n  const isDesktop = width >= xlScreen;\n\n  const panelMenuId = id as string;\n\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const parentHeaderRef = headerMenuContext.menuRefMap.get('Header');\n\n  const [panelContentMaxHeight, setPanelContentMaxHeight] = useState<string>('unset');\n\n  const [isExpanded, setIsExpanded] = useState(false);\n\n  const buttonChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<ButtonProps>(child) && (child as ReactElement).type === Button;\n  }) as ReactElement<ButtonProps>;\n\n  const linkWrapperChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<CustomHeaderLinkProps>(child) && (child as ReactElement).type === CustomHeaderLink;\n  }) as ReactElement<CustomHeaderLinkProps>;\n\n  const layoutChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<LayoutProps>(child) && (child as ReactElement).type !== Button;\n  }) as ReactElement<LayoutProps>;\n\n  const hasButton = !!buttonChildComponent;\n\n  const hasLinkWrapper = !!linkWrapperChildComponent;\n\n  const hasPanel = !!layoutChildComponent;\n\n  const innerPanelRef = useRef<HTMLDivElement>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const linkWrapperRef = useRef<HTMLSpanElement>(null);\n  const drawerButtonRef = useRef<HTMLButtonElement>(null);\n  const panelContentRef = useRef<HTMLDivElement>(null);\n\n  const expand = () => {\n    if (hasPanel && !isExpanded) {\n      setIsExpanded(true);\n\n      asyncTrigger(() => {\n        document.body.classList.add('overflow-hidden');\n\n        const focusableElements =\n          panelContentRef.current?.querySelectorAll(\n            'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n          ) || [];\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        firstElement?.focus();\n      });\n    } else if (isDrawerPanel) {\n      const drawerRef = headerMenuContext.menuRefMap.get('Drawer');\n\n      if (drawerRef) {\n        const elem = drawerRef.current as DrawerElement;\n        setIsExpanded(true);\n        elem.open();\n      }\n    }\n  };\n\n  const collapse = (removeOverflow = true) => {\n    if (isDrawerPanel && isExpanded) {\n      const drawerRef = headerMenuContext.menuRefMap.get('Drawer');\n\n      if (drawerRef) {\n        const elem = drawerRef.current as DrawerElement;\n        elem.close();\n        setIsExpanded(false);\n      }\n    } else if (hasPanel && isExpanded) {\n      setIsExpanded(false);\n    }\n\n    if (removeOverflow) {\n      document.body.classList.remove('overflow-hidden');\n    }\n  };\n\n  const focus = () => {\n    if (hasButton && !isDrawerPanel) {\n      buttonRef.current?.focus();\n    }\n\n    if (hasButton && isDrawerPanel) {\n      drawerButtonRef.current?.focus();\n    }\n\n    if (hasLinkWrapper && linkWrapperRef.current) {\n      (linkWrapperRef.current as HTMLElement).querySelector('a')?.focus();\n    }\n  };\n\n  useExpandedRef<PanelMenuElement>(\n    ref as React.Ref<PanelMenuElement>,\n    innerPanelRef,\n    {\n      isExpanded,\n      expand,\n      collapse,\n      focus\n    } as PanelMenuElement,\n    [innerPanelRef, isExpanded, expand, collapse]\n  );\n\n  const handleButtonClick = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (isExpanded) {\n      headerMenuContext.collapseMenu(panelMenuId, true);\n    } else {\n      headerMenuContext.expandMenu(panelMenuId);\n    }\n    buttonChildComponent.props.onClick?.(evt);\n  };\n\n  const panelClassNames = classNames('panel-menu', className, { 'dark-mode': headerContext.darkMode });\n\n  const panelButtonClassNames = classNames(\n    'panel-menu-button',\n    { 'has-panel': hasPanel },\n    { expanded: isExpanded, collapsed: !isExpanded },\n    buttonChildComponent?.props?.className\n  );\n\n  const panelLinkWrapperClassNames = classNames('panel-menu-link-wrapper', linkWrapperChildComponent?.props?.className);\n\n  const panelDrawerButtonClassNames = classNames('panel-drawer-button');\n\n  const panelContentClassNames = classNames(\n    'panel-menu-content',\n    { expanded: isExpanded, collapsed: !isExpanded },\n    { 'dark-mode': headerContext.darkMode }\n  );\n\n  //  CALCULATE SCROLL HEIGHT OF PANEL\n  useEffect(() => {\n    const calcMaxHeight = (headerParentElem: HTMLElement) => {\n      const rectDimensions = headerParentElem.getBoundingClientRect();\n\n      const headerHeight = rectDimensions.height || 0;\n\n      const viewportHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n\n      const panelMaxHeight = viewportHeight - headerHeight;\n\n      if (isDesktop) {\n        setPanelContentMaxHeight(`${panelMaxHeight}px`);\n      } else {\n        const mobileNavHeight = (innerPanelRef?.current as HTMLElement).getBoundingClientRect().height;\n        setPanelContentMaxHeight(`calc(100vh - ${mobileNavHeight}px`);\n      }\n    };\n\n    const onResize = () => {\n      if (parentHeaderRef && parentHeaderRef.current) {\n        calcMaxHeight(parentHeaderRef.current);\n      }\n    };\n\n    window.addEventListener('resize', onResize);\n\n    onResize();\n\n    return () => {\n      window.removeEventListener('resize', onResize);\n    };\n  }, [parentHeaderRef?.current, isDesktop]);\n\n  //  DISMISS ESCAPE\n  useEffect(() => {\n    const onKeyDown = (evt: KeyboardEvent) => {\n      if (evt.code === 'Escape' && isExpanded) {\n        headerMenuContext.collapseMenu(panelMenuId, true);\n      }\n    };\n\n    if (hasPanel || isDrawerPanel) {\n      window.document.addEventListener('keydown', onKeyDown);\n    }\n\n    return () => {\n      window.document.removeEventListener('keydown', onKeyDown);\n    };\n  }, [hasPanel, isDrawerPanel, isExpanded, headerMenuContext.hasOpenSubmenu()]);\n\n  //  DISMISS CLICK BACKDROP\n  useEffect(() => {\n    const onClick = (evt: MouseEvent) => {\n      if (!isExpanded) {\n        return;\n      }\n\n      const containerElement = innerPanelRef.current;\n\n      const target = evt.target as HTMLElement;\n\n      if (containerElement && (target.classList.contains('panel-menu-backdrop') || target.classList.contains('agora-dialog-backdrop'))) {\n        headerMenuContext.collapseMenu(panelMenuId, true);\n      }\n    };\n\n    if (hasPanel || isDrawerPanel) {\n      window.document.addEventListener('click', onClick);\n    }\n\n    return () => {\n      window.document.removeEventListener('click', onClick);\n    };\n  }, [hasPanel, isDrawerPanel, isExpanded]);\n\n  //  KEYBOARD TRAP\n  useEffect(() => {\n    const handleKeyDown = (evt: KeyboardEvent) => {\n      if (!isExpanded || !panelContentRef.current) {\n        return;\n      }\n\n      if (evt.key === 'Tab') {\n        const focusableElements = panelContentRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    };\n\n    if (hasPanel) {\n      document?.addEventListener('keydown', handleKeyDown);\n    }\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [isExpanded]);\n\n  const memoLeadingIcon = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.leadingIcon ?? '') : (iconsCollapsed?.leadingIcon ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoLeadingIconHover = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.leadingIconHover ?? '') : (iconsCollapsed?.leadingIconHover ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoTrailingIcon = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.trailingIcon ?? '') : (iconsCollapsed?.trailingIcon ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoTrailingIconHover = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.trailingIconHover ?? '') : (iconsCollapsed?.trailingIconHover ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  return (\n    <div ref={innerPanelRef} className={panelClassNames}>\n      {hasLinkWrapper && (\n        <CustomHeaderLink\n          {...linkWrapperChildComponent.props}\n          darkMode={headerContext.darkMode}\n          ref={linkWrapperRef}\n          className={panelLinkWrapperClassNames}\n        />\n      )}\n\n      {hasButton && !isDrawerPanel && (\n        <Button\n          {...buttonChildComponent.props}\n          ref={buttonRef}\n          className={panelButtonClassNames}\n          onClick={handleButtonClick}\n          appearance=\"link\"\n          variant=\"neutral\"\n          darkMode={headerContext.darkMode}\n          {...(hasPanel && { 'aria-controls': `panel-content-${panelMenuId}`, 'aria-expanded': isExpanded })}\n          hasIcon={stringToBoolean(buttonChildComponent.props.hasIcon)}\n          {...(hasPanel && stringToBoolean(buttonChildComponent.props.hasIcon) && memoLeadingIcon && memoLeadingIconHover\n            ? { leadingIcon: memoLeadingIcon, leadingIconHover: memoLeadingIconHover }\n            : {})}\n          {...(hasPanel && stringToBoolean(buttonChildComponent.props.hasIcon) && memoTrailingIcon && memoTrailingIconHover\n            ? { trailingIcon: memoTrailingIcon, trailingIconHover: memoTrailingIconHover }\n            : {})}\n        >\n          {buttonChildComponent.props.children}\n        </Button>\n      )}\n\n      {hasButton && isDrawerPanel && (\n        <Button\n          {...buttonChildComponent.props}\n          aria-expanded={isExpanded}\n          ref={drawerButtonRef}\n          darkMode={headerContext.darkMode}\n          className={panelDrawerButtonClassNames}\n          onClick={handleButtonClick}\n        >\n          {buttonChildComponent.props.children}\n        </Button>\n      )}\n\n      {hasPanel && !isDrawerPanel && (\n        <div className={panelContentClassNames}>\n          <div\n            className=\"panel-menu-content-children\"\n            ref={panelContentRef}\n            id={`panel-content-${panelMenuId}`}\n            style={{ maxHeight: panelContentMaxHeight }}\n          >\n            {layoutChildComponent}\n          </div>\n          <div className=\"panel-menu-backdrop\" />\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { PanelMenu };\n","import React, { FC } from 'react';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface RelatedNavigationLinkProps extends NavigationLinkProps {}\n\nexport const RelatedNavigationLink: FC<RelatedNavigationLinkProps> = () => <></>;\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport { asyncTrigger, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, useEffect, useId, useRef, useState } from 'react';\n\nimport './internal-navigation-burger-panel.scss';\n\nexport interface InternalNavigationBurgerPanelElement extends HTMLDivElement {\n  /**\n   *  Open the submenu.\n   */\n  open: () => void;\n  /**\n   *  Close the submenu.\n   */\n  close: () => void;\n  /**\n   *  Current value of the opened state of the burger links layout.\n   */\n  isOpened: boolean;\n}\n\nexport interface InternalNavigationBurgerPanelProps extends ComponentProps<'div'> {\n  id: string;\n  title: string;\n  linksAriaLabel: string;\n  relatedLinksAriaLabel: string;\n  buttonProps?: ButtonProps;\n}\n\nconst InternalNavigationBurgerPanel: FC<InternalNavigationBurgerPanelProps> = ({\n  ref = null,\n  id,\n  linksAriaLabel,\n  relatedLinksAriaLabel,\n  title,\n  buttonProps,\n  children\n}) => {\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const backLabel = headerContext.getResponsiveMenuBackToRootLabel();\n  const generatedId = useId();\n\n  const [isOpened, setIsOpened] = useState(false);\n\n  const links = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const highlightedLinks = Children.toArray(children).filter((child) => {\n    return isValidElement<RelatedNavigationLinkProps>(child) && (child as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  const burgerMenuItem = useRef<HTMLButtonElement>(null);\n  const burgerPanelRef = useRef<HTMLDivElement>(null);\n\n  const open = () => {\n    if (!isOpened) {\n      setIsOpened(true);\n      asyncTrigger(() => {\n        const focusableElements = burgerPanelRef.current?.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements?.[0] as HTMLElement;\n        firstElement?.focus();\n      });\n    }\n  };\n\n  const close = () => {\n    if (isOpened) {\n      setIsOpened(false);\n      const burgerRef = headerMenuContext.menuRefMap.get('Header');\n      asyncTrigger(() => {\n        const focusableElements = burgerRef?.current?.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements?.[1] as HTMLElement;\n        firstElement?.focus();\n      });\n    }\n  };\n\n  useExpandedRef<InternalNavigationBurgerPanelElement>(\n    ref as React.Ref<InternalNavigationBurgerPanelElement>,\n    burgerPanelRef,\n    {\n      isOpened,\n      open,\n      close\n    } as InternalNavigationBurgerPanelElement,\n    [burgerPanelRef, isOpened, open, close]\n  );\n\n  const handleClickBack = () => {\n    headerMenuContext.backSubmenu(id);\n    burgerMenuItem.current?.focus();\n  };\n\n  const handleClickButton = () => {\n    headerMenuContext.openSubmenu(id);\n  };\n\n  //  KEYBOARD TRAP\n  useEffect(() => {\n    const handleKeyDown = (evt: KeyboardEvent) => {\n      if (!isOpened || !burgerPanelRef.current) {\n        return;\n      }\n\n      if (evt.code === 'Tab') {\n        const focusableElements = burgerPanelRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    };\n\n    document?.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [isOpened]);\n\n  const navigationBurgerLinksLayoutClassNames = classNames('navigation-burger-panel', { hidden: !isOpened, flex: isOpened });\n\n  return (\n    <>\n      <Button\n        {...buttonProps}\n        ref={burgerMenuItem}\n        className=\"burger-menu-item-btn\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        hasIcon\n        fullWidth\n        trailingIcon=\"agora-line-chevron-right\"\n        trailingIconHover=\"agora-solid-chevron-right\"\n        onClick={handleClickButton}\n        aria-haspopup=\"listbox\"\n        aria-controls={id}\n        aria-expanded={isOpened}\n      >\n        {title}\n      </Button>\n\n      <div ref={burgerPanelRef} className={navigationBurgerLinksLayoutClassNames} id={id}>\n        <div className=\"w-full flex flex-col\">\n          {backLabel && (\n            <div className=\"container mx-auto\">\n              <Button\n                className=\"burger-back-btn\"\n                appearance=\"link\"\n                variant=\"neutral\"\n                darkMode={headerContext.darkMode}\n                hasIcon\n                leadingIcon=\"agora-line-arrow-left-anchor\"\n                leadingIconHover=\"agora-line-arrow-left-anchor\"\n                onClick={handleClickBack}\n              >\n                {backLabel}\n              </Button>\n            </div>\n          )}\n        </div>\n        <div className=\"w-full flex flex-col\">\n          {title && <div className=\"container mx-auto title\">{title}</div>}\n          {links.length > 0 && (\n            <div className=\"container mx-auto xs:pb-0 md:pb-32 xl:pb-32\">\n              <ul className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-16\" aria-label={linksAriaLabel}>\n                {links.map((link, index) => {\n                  const key = `${generatedId}-links-${index}`;\n                  return (\n                    <li className=\"link-wrapper xs:col-span-4 md:col-span-4 xl:col-span-6\" key={key}>\n                      <CustomHeaderLink {...link.props} variant=\"primary\" />\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          )}\n        </div>\n        {highlightedLinks.length > 0 && (\n          <div className=\"w-full flex flex-col flex-1 highlighted-links\">\n            <div className=\"highlighted-links-container\">\n              <ul className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-16\" aria-label={relatedLinksAriaLabel}>\n                {highlightedLinks.map((link, index) => {\n                  const key = `${generatedId}-highlighted-links-${index}`;\n\n                  return (\n                    <li className=\"link-wrapper xs:col-span-4 md:col-span-4 xl:col-span-6\" key={key}>\n                      <CustomHeaderLink {...link.props} variant=\"neutral\" />\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport { InternalNavigationBurgerPanel };\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { createRef, FC, isValidElement, KeyboardEvent, MouseEvent, ReactElement, useId, useRef, useState } from 'react';\nimport { useHeaderMenuContext } from '../../context/menu-context/header-menu-context';\nimport { InternalAreaProps } from '../../general-bar/areas/internal-area';\nimport { CustomHeaderLink } from '../../shared/custom-header-link/custom-header-link';\nimport { InternalNavigationBurgerPanel, InternalNavigationBurgerPanelElement } from './internal-navigation-burger-panel';\n\nimport './internal-navigation-burger-layout.scss';\n\nexport const InternalNavigationBurgerLayout: FC<LayoutProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const areas = headerDataContext.getAreas();\n  const currentArea = areas.find((area) => area.active);\n  const otherAreas = areas.filter((area) => !area.active);\n  const generatedId = useId();\n\n  const menubarRef = useRef<HTMLUListElement>(null);\n  const [focusIndex, setFocusIndex] = useState(0);\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLElement>) => {\n    const { code } = evt;\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      let nextIndex = null;\n      if (code === 'ArrowUp') {\n        nextIndex = focusIndex > 0 ? focusIndex - 1 : availableMenuItems.length - 1;\n      }\n\n      if (code === 'ArrowDown') {\n        nextIndex = focusIndex === availableMenuItems.length - 1 ? 0 : focusIndex + 1;\n      }\n\n      if (nextIndex !== null) {\n        const nextElem = availableMenuItems[nextIndex] as HTMLElement;\n\n        if (nextElem.getAttribute('data-menuitem') === 'button') {\n          nextElem.focus();\n        } else {\n          const anchor = nextElem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(nextIndex);\n      }\n    }\n  };\n\n  const handleAreaClick = (evt: MouseEvent<HTMLButtonElement>, area: InternalAreaProps) => {\n    headerDataContext.onAreaChange?.(area.value);\n\n    area.onClick?.(evt);\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      if (availableMenuItems.length > 0) {\n        const elem = availableMenuItems[0] as HTMLElement;\n\n        if (elem.getAttribute('data-menuitem') === 'button') {\n          elem.focus();\n        } else {\n          const anchor = elem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(0);\n      }\n    }\n  };\n\n  return (\n    <div className=\"navigation-burger-layout\">\n      {currentArea && (\n        <div id=\"navigation-burger-current-area\" className=\"current-area\">\n          {currentArea.label}\n        </div>\n      )}\n\n      <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\" aria-labelledby=\"navigation-burger-current-area\">\n        <ul ref={menubarRef}>\n          {headerDataContext.getNavigationItems().map((item, index) => {\n            const id = `${MenuTypeEnum.NavigationBurgerLayout}-${index}`;\n\n            const ref = createRef<InternalNavigationBurgerPanelElement>();\n            headerMenuContext.menuRefMap.set(id, ref);\n\n            if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n              return (\n                <li key={id}>\n                  <InternalNavigationBurgerPanel\n                    ref={ref}\n                    id={id}\n                    title={item.props.label?.toString()}\n                    linksAriaLabel={item.props.linksAriaLabel ?? ''}\n                    relatedLinksAriaLabel={item.props.relatedLinksAriaLabel ?? ''}\n                    buttonProps={\n                      {\n                        'tabIndex': focusIndex === index ? 0 : -1,\n                        'onKeyDown': handleKeyDown,\n                        'data-menuitem': 'button'\n                      } as ButtonProps\n                    }\n                  >\n                    {item.props.children}\n                  </InternalNavigationBurgerPanel>\n                </li>\n              );\n            }\n\n            if (isValidElement<NavigationLinkProps>(item) && (item as ReactElement).type === NavigationLink) {\n              const linkClassNames = classNames('burger-menu-item-link', item.props.className);\n\n              return (\n                <li key={id}>\n                  <CustomHeaderLink\n                    {...item.props}\n                    data-menuitem=\"link-wrapper\"\n                    className={linkClassNames}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  />\n                </li>\n              );\n            }\n          })}\n        </ul>\n      </nav>\n\n      {headerDataContext.hasVisibleAreas() && otherAreas?.length > 0 && otherAreas && (\n        <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12 py-16\" aria-label={headerDataContext.getAreasAriaLabel()}>\n          <ul className=\"flex flex-col gap-8\">\n            {otherAreas.map((area, index) => {\n              const id = `${generatedId}-${index}`;\n              return (\n                <li key={id}>\n                  <Button\n                    className=\"burger-areas-menu-item-btn\"\n                    appearance=\"link\"\n                    variant=\"neutral\"\n                    fullWidth\n                    onClick={(evt: MouseEvent<HTMLButtonElement>) => {\n                      handleAreaClick(evt, area);\n                    }}\n                  >\n                    {area.label}\n                  </Button>\n                </li>\n              );\n            })}\n          </ul>\n        </nav>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { useWindowSize } from '@/hooks';\nimport React, { createRef, FC } from 'react';\nimport { InternalNavigationBurgerLayout } from './internal-navigation-burger-layout';\n\nimport './internal-navigation-burger.scss';\n\nexport const InternalNavigationBurger: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.MenuBurger, ref);\n\n  const { width } = useWindowSize();\n  const isMobile = width < 768;\n\n  const navigationId = headerDataContext.getNavigationId();\n  const menuLabel = headerDataContext.getResponsiveMenuLabel();\n  const menuAriaLabel = headerDataContext.getResponsiveMenuAriaLabel();\n\n  return (\n    <nav aria-label={menuAriaLabel} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        <li>\n          <PanelMenu\n            id={MenuTypeEnum.MenuBurger}\n            ref={ref}\n            className=\"navigation-burger-panel-menu\"\n            iconsCollapsed={{ leadingIcon: 'agora-line-menu', leadingIconHover: 'agora-solid-menu' }}\n            iconsExpanded={{ leadingIcon: 'agora-line-x', leadingIconHover: 'agora-solid-x' }}\n          >\n            <Button\n              className=\"!px-0 !py-[14px]\"\n              hasIcon\n              {...(isMobile ? { 'aria-label': menuLabel?.toString() } : {})}\n              {...(isMobile ? { iconOnly: true } : { iconOnly: false })}\n            >\n              {menuLabel}\n            </Button>\n            <InternalNavigationBurgerLayout />\n          </PanelMenu>\n        </li>\n      </ul>\n    </nav>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nimport './internal-institutional.scss';\n\nexport interface InternalInstitutionalProps extends ComponentProps<'div'> {}\n\nexport const InternalInstitutional: FC<InternalInstitutionalProps> = ({ className }) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const containerClassNames = classNames('institutional-phrase-container', { 'dark-mode': headerDataContext.darkMode }, className);\n\n  return (\n    <div className={containerClassNames}>\n      <div className=\"institutional\">{headerDataContext.getInstitutionalPhrase()}</div>\n    </div>\n  );\n};\n","import { AreaProps } from '@/components/header/general-bar/areas/area';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\n\nimport './internal-area.scss';\n\nexport interface InternalAreaProps extends AreaProps {}\n\nexport const InternalArea: FC<InternalAreaProps> = ({ active = false, value, label, onClick, ...props }) => {\n  const areasClassNames = classNames('area', { selected: active });\n\n  return (\n    <button {...props} className={areasClassNames} onClick={onClick} data-value={value}>\n      {label}\n    </button>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, useRef } from 'react';\nimport { InternalArea, InternalAreaProps } from './internal-area';\n\nimport './internal-areas.scss';\n\nexport interface InnerComponentProps extends ComponentProps<'div'> {}\n\nexport const InternalAreas: FC<InnerComponentProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = useRef<HTMLDivElement>(null);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Areas, ref);\n\n  const visibleAreas = headerDataContext.hasVisibleAreas();\n\n  const areasClassNames = classNames('areas', { 'dark-mode': headerDataContext.darkMode }, { 'sr-only': !visibleAreas });\n\n  const handleAreaClick = (evt: MouseEvent<HTMLButtonElement>, area: InternalAreaProps) => {\n    if (!visibleAreas) {\n      return;\n    }\n\n    headerMenuContext.collapseAllMenus();\n\n    headerDataContext.onAreaChange?.(area.value);\n\n    area.onClick?.(evt);\n  };\n\n  const handleKeyDownCapture = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const { code } = evt;\n\n    if (!visibleAreas || !ref.current || (code !== 'ArrowLeft' && code !== 'ArrowRight')) {\n      return;\n    }\n\n    const availableAreas = Array.from(ref.current.querySelectorAll('.area'));\n    const activeIndex = availableAreas.findIndex((el) => el.classList.contains('selected'));\n\n    let nextElem;\n    if (code === 'ArrowLeft') {\n      nextElem = availableAreas[activeIndex > 0 ? activeIndex - 1 : availableAreas.length - 1] as HTMLElement;\n      nextElem.click();\n      nextElem.focus();\n    }\n\n    if (code === 'ArrowRight') {\n      nextElem = availableAreas[activeIndex === availableAreas.length - 1 ? 0 : activeIndex + 1] as HTMLElement;\n      nextElem.click();\n      nextElem.focus();\n    }\n  };\n\n  const areas = headerDataContext.getAreas() ?? [];\n\n  if (areas.length === 0) return null;\n\n  return (\n    <div className={areasClassNames} ref={ref} aria-label={headerDataContext.getAreasAriaLabel()} role=\"tablist\">\n      {areas.map((area: InternalAreaProps) => {\n        return (\n          <InternalArea\n            {...area}\n            key={area.value}\n            role=\"tab\"\n            aria-controls=\"tabpanel-active\"\n            aria-selected={area.active}\n            id={area.value}\n            tabIndex={visibleAreas && area.active ? 0 : -1}\n            onClick={(evt: MouseEvent<HTMLButtonElement>) => {\n              handleAreaClick(evt, area);\n            }}\n            onKeyDownCapture={handleKeyDownCapture}\n          />\n        );\n      })}\n    </div>\n  );\n};\n","import { AvatarProps } from '@/components/avatar';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { AuthenticatedBodyProps } from '@/components/header/general-bar/authenticated/authenticated-body';\nimport { AuthenticatedFooterProps } from '@/components/header/general-bar/authenticated/authenticated-footer';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { ComponentProps, createRef, FC, ReactElement } from 'react';\n\nimport './internal-authenticated.scss';\n\ninterface InternalAuthenticatedProps extends Omit<ComponentProps<'div'>, 'children'> {\n  children?:\n    | null\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>[];\n}\n\nexport const InternalAuthenticated: FC<InternalAuthenticatedProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Authenticated, ref);\n\n  const authenticatedProps = headerDataContext.getAuthenticated() as AvatarProps;\n\n  return (\n    <PanelMenu id={MenuTypeEnum.Authenticated} className=\"authenticated-panel-menu\" ref={ref} isDrawerPanel>\n      <Button title={authenticatedProps.information?.toString()} aria-haspopup=\"dialog\">\n        {authenticatedProps.avatarType === 'initials' && authenticatedProps.srcPath}\n        {authenticatedProps.avatarType !== 'initials' && <Icon aria-hidden name={authenticatedProps.srcPath} />}\n      </Button>\n    </PanelMenu>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\n\nimport { Button } from '@/components/button';\nimport './internal-language.scss';\n\nexport interface InternalLanguageProps extends ComponentProps<'button'> {\n  icon?: string;\n  checked: boolean;\n  label: string;\n}\n\nexport const InternalLanguage: FC<InternalLanguageProps> = ({ icon, checked, label, onClick }) => {\n  return (\n    <Button\n      role=\"checkbox\"\n      aria-checked={checked}\n      appearance=\"link\"\n      variant=\"neutral\"\n      className=\"language-wrapper\"\n      onClick={onClick}\n      {...(icon || checked ? { hasIcon: true } : {})}\n      {...(icon ? { leadingIcon: icon, leadingIconHover: icon } : {})}\n      {...(checked ? { trailingIcon: 'agora-line-check', trailingIconHover: 'agora-solid-check' } : {})}\n    >\n      {label}\n    </Button>\n  );\n};\n","import { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { FC } from 'react';\nimport { InternalLanguage } from './internal-language';\n\nimport './internal-languages-layout.scss';\n\nexport const InternalLanguagesLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const handleChange = (lang: string) => {\n    const languagesRef = headerMenuContext.menuRefMap.get('Languages');\n\n    if (languagesRef) {\n      headerDataContext.onLanguageChange?.(lang);\n\n      const elem = languagesRef.current as PanelMenuElement;\n      elem?.collapse();\n      elem?.focus();\n    }\n  };\n\n  return (\n    <div {...props} className=\"languages-layout\" aria-label={headerDataContext.getLanguagesAriaLabel()} role=\"list\">\n      {headerDataContext.getLanguages().map((lang: LanguageProps, index: number) => {\n        return (\n          <div className=\"language-grid-cell\" key={`${props.id}-${index}`} role=\"listitem\">\n            <InternalLanguage checked={!!lang.checked} label={lang.label} icon={lang.icon} onClick={() => handleChange(lang.value)} />\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport React, { createRef, FC, ReactNode } from 'react';\nimport { InternalLanguagesLayout } from './internal-languages-layout';\n\nimport './internal-languages.scss';\n\nexport const InternalLanguages: FC = () => {\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const checkedLanguage = headerContext.getCheckedLanguage().length > 0 ? headerContext.getCheckedLanguage()[0] : null;\n\n  let buttonChildren: ReactNode = '';\n\n  if (checkedLanguage && (isMobile || (isTablet && headerMenuContext.isScrolling()))) {\n    buttonChildren = <abbr aria-label={checkedLanguage.label}>{checkedLanguage.abbr}</abbr>;\n  } else if (checkedLanguage && !isMobile) {\n    buttonChildren = checkedLanguage.label;\n  } else {\n    buttonChildren = <span>{' - '}</span>;\n  }\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Languages, ref);\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Languages}\n      ref={ref}\n      className=\"languages-panel-menu\"\n      iconsCollapsed={{ trailingIcon: 'agora-line-chevron-down', trailingIconHover: 'agora-line-chevron-down' }}\n      iconsExpanded={{ trailingIcon: 'agora-line-chevron-up', trailingIconHover: 'agora-line-chevron-up' }}\n    >\n      <Button className=\"!px-0 !py-[14px]\" hasIcon aria-haspopup=\"listbox\">\n        {buttonChildren}\n      </Button>\n      <InternalLanguagesLayout />\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC } from 'react';\n\nimport './internal-custom-search-layout.scss';\n\nexport const InternalCustomSearchLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const content = headerDataContext.getCustomSearch()?.children;\n\n  return (\n    <div {...props} className=\"custom-search-layout\">\n      {content}\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { InputSearchBar } from '@/components/input-search-bar';\nimport { List } from '@/components/list';\nimport React, { FC } from 'react';\n\nimport './internal-search-layout.scss';\n\nexport const InternalSearchLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const searchTitle = headerDataContext.getDefaultSearchTitle();\n\n  const defaultInputSearchBarProps = headerDataContext.getDefaultSearchInputBar();\n\n  const customInputSearchBarProps = headerDataContext.getCustomSearchInputBar();\n\n  const relatedLinksTitle = headerDataContext.getDefaultSearchRelatedLinksTitle();\n\n  const relatedLinks = headerDataContext.getDefaultSearchRelatedLinks();\n\n  return (\n    <div {...props} className=\"search-layout\">\n      {searchTitle && <div className=\"search-title\">{searchTitle?.children}</div>}\n\n      {defaultInputSearchBarProps && (\n        <div className=\"search-input-bar-container\">\n          <InputSearchBar {...defaultInputSearchBarProps} darkMode={headerDataContext.darkMode} />\n        </div>\n      )}\n\n      {!defaultInputSearchBarProps && customInputSearchBarProps && (\n        <div className=\"search-input-bar-container custom-input\">{customInputSearchBarProps}</div>\n      )}\n\n      {relatedLinksTitle && relatedLinks && (\n        <div className=\"search-related-links-container\">\n          <div className=\"search-related-links-container-wrapper\">\n            {relatedLinksTitle?.children && <div className=\"search-list-title\">{relatedLinksTitle?.children}</div>}\n            <List className=\"search-list\">\n              {relatedLinks.map((linkProps, index) => {\n                const key = `${props.id}-${index}`;\n\n                return (\n                  <li key={key}>\n                    <CustomHeaderLink {...linkProps} variant=\"neutral\" appearance=\"link\" />\n                  </li>\n                );\n              })}\n            </List>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport classNames from 'classnames';\nimport React, { ComponentProps, createRef, FC } from 'react';\nimport { InternalCustomSearchLayout } from './internal-custom-search-layout';\nimport { InternalSearchLayout } from './internal-search-layout';\n\nimport './internal-search.scss';\n\nexport interface InternalSearchProps extends ComponentProps<'div'> {}\n\nexport const InternalSearch: FC<InternalSearchProps> = ({ className }) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Search, ref);\n\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n\n  const panelClassNames = classNames('search-panel-menu', className);\n\n  const hideLabels = isMobile || (isTablet && headerMenuContext.isScrolling());\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Search}\n      ref={ref}\n      className={panelClassNames}\n      iconsCollapsed={{ leadingIcon: 'agora-line-search', leadingIconHover: 'agora-solid-search' }}\n      iconsExpanded={{ leadingIcon: 'agora-line-x', leadingIconHover: 'agora-solid-x' }}\n    >\n      <Button className=\"!px-0 !py-[14px]\" hasIcon iconOnly={hideLabels} aria-haspopup=\"dialog\">\n        {headerDataContext.getSearchLabel()}\n      </Button>\n\n      <>\n        {headerDataContext.hasCustomSearch() && <InternalCustomSearchLayout />}\n        {headerDataContext.hasDefaultSearch() && <InternalSearchLayout />}\n      </>\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC, useId } from 'react';\n\nimport './internal-unauthenticated-layout.scss';\n\nexport const InternalUnauthenticatedLayout: FC<LayoutProps> = () => {\n  const generatedId = useId();\n  const headerDataContext = useHeaderDataContext();\n  const links = headerDataContext.getUnauthenticatedLinks();\n\n  return (\n    <div className=\"unauthenticated-layout\">\n      {links.map((l, index: number) => {\n        const key = `${generatedId}-${index}`;\n        return <CustomHeaderLink {...l} fullWidth={false} key={key} />;\n      })}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport React, { createRef, FC } from 'react';\nimport { InternalUnauthenticatedLayout } from './internal-unauthenticated-layout';\n\nimport './internal-unauthenticated.scss';\n\nexport const InternalUnauthenticated: FC = () => {\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Unauthenticated, ref);\n\n  const links = headerDataContext.getUnauthenticatedLinks();\n  const unauthenticatedButtonProps = headerDataContext.getUnauthenticated();\n\n  if (links.length < 1 || !unauthenticatedButtonProps) {\n    return null;\n  }\n\n  const isSingleAuth = links.length === 1;\n\n  let panelChildren = null;\n  let panelIconProps = null;\n  const hideLabels = isMobile || (isTablet && headerMenuContext.isScrolling());\n\n  if (isSingleAuth) {\n    const link = links[0];\n    panelChildren = <CustomHeaderLink {...link} iconOnly={hideLabels || stringToBoolean(link.iconOnly)} />;\n  } else {\n    panelIconProps = {\n      iconsCollapsed: {\n        leadingIcon: unauthenticatedButtonProps.leadingIcon,\n        leadingIconHover: unauthenticatedButtonProps.leadingIconHover,\n        trailingIcon: unauthenticatedButtonProps.trailingIcon,\n        trailingIconHover: unauthenticatedButtonProps.trailingIconHover\n      },\n      iconsExpanded: {\n        leadingIcon: unauthenticatedButtonProps.leadingIcon ? 'agora-line-x' : '',\n        leadingIconHover: unauthenticatedButtonProps.leadingIconHover ? 'agora-line-x' : '',\n        trailingIcon: unauthenticatedButtonProps.trailingIcon ? 'agora-line-x' : '',\n        trailingIconHover: unauthenticatedButtonProps.trailingIconHover ? 'agora-line-x' : ''\n      }\n    };\n\n    const getIconOnlyValue = () => {\n      if (hideLabels) {\n        return { iconOnly: true };\n      } else {\n        return { iconOnly: unauthenticatedButtonProps.iconOnly ?? false };\n      }\n    };\n\n    panelChildren = [\n      <Button\n        {...unauthenticatedButtonProps}\n        key={'multiple-unauthenticated-button'}\n        hasIcon\n        {...getIconOnlyValue()}\n        aria-haspopup=\"listbox\"\n      >\n        {unauthenticatedButtonProps.label ?? ''}\n      </Button>,\n      <InternalUnauthenticatedLayout key={'multiple-unauthenticated-panel'} />\n    ];\n  }\n\n  return (\n    <PanelMenu id={MenuTypeEnum.Unauthenticated} ref={ref} className=\"unauthenticated-panel-menu\" {...panelIconProps}>\n      {panelChildren}\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { InternalNavigationBurger } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger';\nimport { InternalInstitutional } from '@/components/header/internals/shared/institutional/internal-institutional';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { InternalAreas } from './areas/internal-areas';\nimport { InternalAuthenticated } from './authenticated/internal-authenticated';\nimport { InternalLanguages } from './languages/internal-languages';\nimport { InternalSearch } from './search/internal-search';\nimport { InternalUnauthenticated } from './unauthenticated/internal-unauthenticated';\n\nimport './internal-general-bar.scss';\n\nexport const InternalGeneralBar: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const generalBarClassNames = classNames('general-bar', { 'dark-mode': headerDataContext.darkMode });\n\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isDesktop = width >= xlScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n  const isMobile = width < mdScreen;\n\n  return (\n    <div className={generalBarClassNames}>\n      <nav className=\"panels-menu\" aria-label={headerDataContext.getGeneralBarAriaLabel()}>\n        <ul>\n          {headerDataContext.hasLanguages() && (\n            <li>\n              <InternalLanguages />\n            </li>\n          )}\n\n          {headerDataContext.hasSearch() && (\n            <li>\n              <InternalSearch />\n            </li>\n          )}\n\n          {!!headerDataContext.getAuthenticated() && (\n            <li>\n              <InternalAuthenticated />\n            </li>\n          )}\n\n          {!!headerDataContext.getUnauthenticated() && (\n            <li>\n              <InternalUnauthenticated />\n            </li>\n          )}\n        </ul>\n      </nav>\n\n      <div>\n        {isDesktop && <InternalAreas />}\n\n        {isDesktop && !headerDataContext.hasVisibleAreas() && <InternalInstitutional />}\n\n        {isMobile && <InternalInstitutional className=\"sr-only\" />}\n\n        {isTablet && headerMenuContext.isScrolling() && <InternalInstitutional className=\"sr-only\" />}\n\n        {!isDesktop && !!headerDataContext.countNavigationItems() && <InternalNavigationBurger />}\n      </div>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nimport './internal-logo.scss';\n\nexport interface InternalLogoProps extends ComponentProps<'div'> {}\n\nexport const InternalLogo: FC<InternalLogoProps> = ({ className }) => {\n  const headerContext = useHeaderDataContext();\n\n  const logoClassNames = classNames('logo', className);\n\n  return <div className={logoClassNames}>{headerContext.getLogoImage()}</div>;\n};\n","import { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport classNames from 'classnames';\nimport React, { Children, FC, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport './internal-navigation-link-layout.scss';\n\nexport interface InternalNavigationLinksLayoutProps extends Omit<LayoutProps, 'title'> {\n  title: ReactNode;\n  linksAriaLabel?: string;\n  relatedLinksAriaLabel?: string;\n  children:\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps>\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps>[];\n}\n\nexport const InternalNavigationLinksLayout: FC<InternalNavigationLinksLayoutProps> = ({\n  title,\n  linksAriaLabel,\n  relatedLinksAriaLabel,\n  children\n}) => {\n  const generatedId = useId();\n\n  const links = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const highlightedLinks = Children.toArray(children).filter((child) => {\n    return isValidElement<RelatedNavigationLinkProps>(child) && (child as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  const navigationLinksLayoutClassName = classNames('navigation-links-layout', highlightedLinks.length < 1 ? 'pb-32' : '');\n\n  return (\n    <div className={navigationLinksLayoutClassName}>\n      {title && <div className=\"title\">{title}</div>}\n\n      {links.length > 0 && (\n        <div className=\"links\" role=\"list\" aria-label={linksAriaLabel}>\n          {links.map((link, index) => {\n            const key = `${generatedId}-links-${index}`;\n\n            return (\n              <div className=\"link-wrapper\" key={key} role=\"listitem\">\n                <CustomHeaderLink {...link.props} variant=\"primary\" />\n              </div>\n            );\n          })}\n        </div>\n      )}\n\n      {highlightedLinks.length > 0 && (\n        <div className=\"highlighted-links-container\">\n          <div className=\"highlighted-links\" role=\"list\" aria-label={relatedLinksAriaLabel}>\n            {highlightedLinks.map((link, index) => {\n              const key = `${generatedId}-highlighted-links-${index}`;\n\n              return (\n                <div className=\"link-wrapper\" key={key} role=\"listitem\">\n                  <CustomHeaderLink {...link.props} />\n                </div>\n              );\n            })}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { createRef, FC, isValidElement, ReactElement } from 'react';\nimport { InternalNavigationLinksLayout } from './internal-navigation-link-layout';\n\nimport './internal-navigation-list.scss';\n\nexport const InternalNavigationList: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const list = headerDataContext.getNavigationItems();\n\n  const activeAreaSelector = headerDataContext.getActiveArea();\n  const navigationId = headerDataContext.getNavigationId();\n\n  return (\n    <nav className=\"internal-navigation-list\" aria-labelledby={activeAreaSelector?.value} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        {list.map((item, index) => {\n          const id = `${MenuTypeEnum.NavigationList}-${index}`;\n\n          const ref = createRef<PanelMenuElement>();\n          headerMenuContext.menuRefMap.set(id, ref);\n\n          if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n            return (\n              <li key={id}>\n                <PanelMenu\n                  id={id}\n                  ref={ref}\n                  className=\"internal-panel-navigation-list\"\n                  iconsCollapsed={{ trailingIcon: 'agora-line-chevron-down', trailingIconHover: 'agora-line-chevron-down' }}\n                  iconsExpanded={{ trailingIcon: 'agora-line-chevron-up', trailingIconHover: 'agora-line-chevron-up' }}\n                >\n                  <Button\n                    className=\"!px-0 !py-[14px] internal-panel-navigation-list-btn\"\n                    hasIcon\n                    aria-haspopup=\"true\"\n                    aria-expanded={ref.current?.isExpanded}\n                  >\n                    {item.props.label}\n                  </Button>\n                  <InternalNavigationLinksLayout\n                    linksAriaLabel={item.props.linksAriaLabel}\n                    relatedLinksAriaLabel={item.props.relatedLinksAriaLabel}\n                    title={item.props.label}\n                  >\n                    {item.props.children}\n                  </InternalNavigationLinksLayout>\n                </PanelMenu>\n              </li>\n            );\n          }\n\n          if (isValidElement<NavigationLinkProps>(item) && (item as ReactElement).type === NavigationLink) {\n            const linkClassNames = classNames('internal-panel-navigation-list-link', item.props.className);\n            return (\n              <li key={id} className=\"relative\">\n                <PanelMenu id={id} ref={ref}>\n                  <CustomHeaderLink {...item.props} className={linkClassNames} />\n                </PanelMenu>\n              </li>\n            );\n          }\n        })}\n      </ul>\n    </nav>\n  );\n};\n","import { DialogElement } from '@/components/dialog';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { CustomModalConfiguration } from './custom-modal-provider';\n\nexport interface CustomModalContextProps {\n  /**\n   * The visible dialog element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a modal is visible or not.\n   */\n  visibility?: boolean;\n  /**\n   * Shows a new modal with the configurations provided.\n   */\n  show: (children: ReactNode, config: CustomModalConfiguration) => void;\n  /**\n   * Hides the visible modal.\n   */\n  hide: () => void;\n}\n\nconst CustomModalContext = createContext<CustomModalContextProps>({} as CustomModalContextProps);\n\nconst useCustomModalContext = (): CustomModalContextProps => {\n  return useContext(CustomModalContext);\n};\n\nexport { CustomModalContext, useCustomModalContext };\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useCustomModalContext } from '@/components/header/internals/shared/custom-modal/custom-modal-context';\nimport { CustomModalConfiguration } from '@/components/header/internals/shared/custom-modal/custom-modal-provider';\nimport { useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, KeyboardEvent, ReactElement, ReactNode, Ref, RefObject, useRef } from 'react';\nimport './modal-menu.scss';\nimport { HeaderMenuContextRef } from '../../context/menu-context/header-menu-context';\n\nexport interface ModalMenuElement extends HTMLDivElement {\n  /**\n   *  Open the modal\n   */\n  open: () => void;\n  /**\n   *  close the modal\n   */\n  close: () => void;\n  /**\n   *  Focus the modal menu control.\n   */\n  focus: () => void;\n  /**\n   *  Current value of the expanded state of the panel menu.\n   */\n  isOpen: boolean;\n}\n\nexport interface ModalMenuProps extends Omit<ButtonProps, 'ref'> {\n  darkMode?: boolean;\n  modalAriaLabel?: string;\n  openLabel?: ReactNode;\n  closeLabel?: ReactNode;\n  children: ReactElement<HTMLDivElement> | ReactElement<HTMLDivElement>[];\n  ref?: RefObject<HeaderMenuContextRef>;\n}\n\nconst ModalMenu: FC<ModalMenuProps> = ({\n  ref = null,\n  className,\n  openLabel,\n  closeLabel,\n  modalAriaLabel,\n  darkMode = false,\n  children,\n  ...props\n}) => {\n  const headerContext = useHeaderDataContext();\n\n  const modalContext = useCustomModalContext();\n\n  const modalContentChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<ComponentProps<'div'>>(child) && (child as ReactElement).type !== Button;\n  }) as ReactElement<ComponentProps<'div'>>;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const focus = () => {\n    buttonRef.current?.focus();\n  };\n\n  const open = () => {\n    modalContext.show(modalContentChildComponent, {\n      closeButtonLabel: closeLabel?.toString(),\n      ariaLabel: modalAriaLabel,\n      onHide: focus\n    } as CustomModalConfiguration);\n  };\n\n  const close = () => {\n    modalContext.hide();\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n\n  useExpandedRef<ModalMenuElement>(\n    ref as Ref<ModalMenuElement>,\n    innerRef,\n    {\n      isOpen: modalContext.visibility,\n      open,\n      close,\n      focus\n    } as ModalMenuElement,\n    [innerRef, modalContext.visibility, open, close]\n  );\n\n  const handleButtonClick = () => {\n    open();\n  };\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      evt.stopPropagation();\n      open();\n    }\n  };\n\n  const modalMenuClassNames = classNames('modal-menu', className, { 'dark-mode': darkMode });\n\n  const menuButtonClassNames = classNames('modal-menu-button', { expanded: modalContext.visibility, collapsed: !modalContext.visibility });\n\n  return (\n    <div ref={innerRef} className={modalMenuClassNames}>\n      <Button\n        {...props}\n        ref={buttonRef}\n        className={menuButtonClassNames}\n        onClick={handleButtonClick}\n        onKeyDownCapture={handleKeyDown}\n        onKeyUpCapture={handleKeyUp}\n        appearance=\"link\"\n        variant=\"neutral\"\n        hasIcon\n        leadingIcon=\"agora-line-menu\"\n        leadingIconHover=\"agora-solid-menu\"\n        darkMode={headerContext.darkMode}\n      >\n        {openLabel}\n      </Button>\n    </div>\n  );\n};\n\nexport { ModalMenu };\n","import { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport React, { Children, FC, isValidElement, ReactElement, useId } from 'react';\n\nimport './internal-modal-content.scss';\n\nexport interface InternalModalContentProps {\n  item: ReactElement<NavigationRootProps | NavigationLinkProps>;\n}\n\nexport const InternalModalContent: FC<InternalModalContentProps> = ({ item }) => {\n  const generatedId = useId();\n\n  let contentTitle = '';\n  let linksAriaLabel = '';\n  let relatedLinksAriaLabel = '';\n  if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n    contentTitle = item.props.label;\n    linksAriaLabel = item.props.linksAriaLabel ?? '';\n    relatedLinksAriaLabel = item.props.relatedLinksAriaLabel ?? '';\n  }\n\n  const activeMenuItemLinks: ReactElement<NavigationLinkProps>[] = Children.toArray(item.props.children).filter((l) => {\n    return isValidElement<NavigationLinkProps>(l) && (l as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const activeMenuItemRelatedLinks: ReactElement<RelatedNavigationLinkProps>[] = Children.toArray(item.props.children).filter((l) => {\n    return isValidElement<RelatedNavigationLinkProps>(l) && (l as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  return (\n    <>\n      {activeMenuItemLinks.length > 0 && (\n        <>\n          <div className=\"main-content\">\n            <div className=\"content\">\n              <div className=\"links\">\n                <div className=\"links-title\">{contentTitle}</div>\n                <div className=\"links-list\" role=\"list\" aria-label={linksAriaLabel}>\n                  {activeMenuItemLinks.map((l, index) => {\n                    const key = `${generatedId}-link-${index}`;\n                    return (\n                      <div key={key} role=\"listitem\">\n                        <CustomHeaderLink {...l.props} variant=\"primary\" />\n                      </div>\n                    );\n                  })}\n                </div>\n              </div>\n            </div>\n          </div>\n          {activeMenuItemRelatedLinks.length > 0 && (\n            <div className=\"main-content full\">\n              <div className=\"content\">\n                <div className=\"related-links\">\n                  <div className=\"related-links-title\"></div>\n                  <div className=\"related-links-list\" role=\"list\" aria-label={relatedLinksAriaLabel}>\n                    {activeMenuItemRelatedLinks.map((l, index) => {\n                      const key = `${generatedId}-link-${index}`;\n                      return (\n                        <div key={key} role=\"listitem\">\n                          <CustomHeaderLink {...l.props} variant=\"neutral\" />\n                        </div>\n                      );\n                    })}\n                  </div>\n                </div>\n              </div>\n            </div>\n          )}\n        </>\n      )}\n    </>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { FC, isValidElement, KeyboardEvent, ReactElement, useEffect, useId, useRef, useState } from 'react';\n\nimport './internal-modal-navbar.scss';\n\nexport interface InternalModalNavbarProps {\n  onActiveChange: (activeIndex: number) => void;\n}\n\nexport const InternalModalNavbar: FC<InternalModalNavbarProps> = ({ onActiveChange }) => {\n  const generatedId = useId();\n\n  const menubarRef = useRef<HTMLUListElement>(null);\n\n  const headerDataContext = useHeaderDataContext();\n\n  const list = headerDataContext.getNavigationItems();\n\n  const [activeMenuItem, setActiveMenuItem] = useState(0);\n\n  useEffect(() => {\n    onActiveChange(activeMenuItem);\n  }, [activeMenuItem]);\n\n  const [focusIndex, setFocusIndex] = useState(0);\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLElement>) => {\n    const { code } = evt;\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      let nextIndex = null;\n      if (code === 'ArrowUp') {\n        nextIndex = focusIndex > 0 ? focusIndex - 1 : availableMenuItems.length - 1;\n      }\n\n      if (code === 'ArrowDown') {\n        nextIndex = focusIndex === availableMenuItems.length - 1 ? 0 : focusIndex + 1;\n      }\n\n      if (nextIndex !== null) {\n        const nextElem = availableMenuItems[nextIndex] as HTMLElement;\n\n        if (nextElem.getAttribute('data-menuitem') === 'button') {\n          nextElem.focus();\n        } else {\n          const anchor = nextElem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(nextIndex);\n      }\n    }\n  };\n\n  return (\n    <div className=\"navbar\">\n      {headerDataContext.getModalMenuLabel() && (\n        <div id=\"internal-modal-navbar-title\" className=\"navbar-title\">\n          {headerDataContext.getModalMenuLabel()}\n        </div>\n      )}\n      <nav className=\"navbar-links\" aria-labelledby=\"internal-modal-navbar-title\">\n        <ul ref={menubarRef} aria-labelledby=\"internal-modal-navbar-title\">\n          {list.map((l, index) => {\n            const key = `${generatedId}-${index}`;\n\n            const itemClassNames = classNames('internal-modal-menu-item', { selected: activeMenuItem === index });\n\n            const handleButtonClick = () => {\n              setActiveMenuItem(index);\n            };\n\n            const autoFocusProp = index === focusIndex;\n\n            if (isValidElement<NavigationRootProps>(l) && (l as ReactElement).type === NavigationRoot) {\n              return (\n                <li key={key}>\n                  <Button\n                    data-autofocus={autoFocusProp}\n                    fullWidth\n                    appearance=\"link\"\n                    variant=\"neutral\"\n                    data-menuitem=\"button\"\n                    className={itemClassNames}\n                    onClick={handleButtonClick}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  >\n                    {l.props.label}\n                  </Button>\n                </li>\n              );\n            }\n\n            if (isValidElement<NavigationLinkProps>(l) && (l as ReactElement).type === NavigationLink) {\n              return (\n                <li key={key}>\n                  <CustomHeaderLink\n                    {...l.props}\n                    data-menuitem=\"link-wrapper\"\n                    className={itemClassNames}\n                    data-autofocus={autoFocusProp}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  />\n                </li>\n              );\n            }\n          })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n","/* eslint-disable jsx-a11y/tabindex-no-positive */\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport classNames from 'classnames';\nimport { InternalModalContent } from './internal-modal-content';\nimport { InternalModalNavbar } from './internal-modal-navbar';\nimport './internal-navigation-modal-layout.scss';\n\nexport const InternalNavigationModalLayout: FC<LayoutProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const list = headerDataContext.getNavigationItems();\n\n  const [activeIndex, setActiveIndex] = useState(0);\n\n  const handleActiveChange = (newIndex: number) => {\n    setActiveIndex(newIndex);\n  };\n\n  const handleClick = () => {\n    const ref = headerMenuContext.menuRefMap.get('Modal');\n\n    if (ref?.current) {\n      (ref.current as ModalMenuElement).close();\n    }\n  };\n\n  const navigationModalLayoutClassNames = classNames('navigation-modal-layout', { 'dark-mode': headerDataContext.darkMode });\n\n  return (\n    <div className={navigationModalLayoutClassNames}>\n      <div className=\"menu\">\n        <div className=\"menu-content\">\n          <div className=\"content\">\n            <InternalModalNavbar onActiveChange={handleActiveChange} />\n          </div>\n        </div>\n      </div>\n      <div className=\"main\">\n        <div className=\"main-content\">\n          <div className=\"content\">\n            <div className=\"close-bar\">\n              <Button\n                tabIndex={1}\n                className=\"close-modal-button\"\n                hasIcon\n                trailingIcon=\"agora-line-x\"\n                trailingIconHover=\"agora-solid-x\"\n                variant=\"neutral\"\n                appearance=\"link\"\n                darkMode={headerDataContext.darkMode}\n                onClick={handleClick}\n              >\n                {headerDataContext.getModalCloseLabel()}\n              </Button>\n            </div>\n          </div>\n        </div>\n        <div className=\"scroll-container\">\n          <InternalModalContent item={list[activeIndex]} />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { HeaderMenuContextRef, useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { ModalMenu } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport React, { createRef, FC } from 'react';\nimport { InternalNavigationModalLayout } from './internal-navigation-modal-layout';\n\nexport const InternalNavigationModal: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<HeaderMenuContextRef>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Modal, ref);\n\n  const activeAreaSelector = headerDataContext.getActiveArea();\n  const navigationId = headerDataContext.getNavigationId();\n\n  return (\n    <nav className=\"internal-navigation-list\" aria-labelledby={activeAreaSelector?.value} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        <li>\n          <ModalMenu\n            ref={ref}\n            openLabel={headerDataContext.getModalMenuLabel()}\n            modalAriaLabel={headerDataContext.getModalAriaLabel()}\n            closeLabel={headerDataContext.getModalCloseLabel()}\n          >\n            <InternalNavigationModalLayout />\n          </ModalMenu>\n        </li>\n      </ul>\n    </nav>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { InternalInstitutional } from '@/components/header/internals/shared/institutional/internal-institutional';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { InternalLogo } from './logo/internal-logo';\nimport { InternalNavigationList } from './navigation-list/internal-navigation-list';\nimport { InternalNavigationModal } from './navigation-modal/internal-navigation-modal';\n\nimport './internal-navigation-bar.scss';\n\nexport const InternalNavigationBar: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isDesktop = width >= xlScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n\n  const navigationBarClassNames = classNames('navigation-bar');\n\n  const desktopInstitutionalClassNames = classNames(\n    { 'sr-only': headerMenuContext.isScrolling() },\n    { 'mt-16': !headerMenuContext.isScrolling() }\n  );\n\n  const activeArea = headerDataContext.getActiveArea();\n\n  const tabAccessibleProps = {\n    'role': 'tabpanel',\n    'tabIndex': 0,\n    'id': 'tabpanel-active',\n    'aria-labelledby': activeArea?.value\n  };\n\n  return (\n    <div className={navigationBarClassNames} {...(isDesktop ? tabAccessibleProps : {})}>\n      {isDesktop && headerDataContext.hasVisibleAreas() && <InternalInstitutional className={desktopInstitutionalClassNames} />}\n\n      <div className=\"navbar-container\">\n        <InternalLogo />\n        {isDesktop && headerDataContext.countNavigationItems() > 0 && (\n          <>\n            {headerDataContext.countNavigationItems() > headerDataContext.maxNavigationItems && <InternalNavigationModal />}\n            {headerDataContext.countNavigationItems() <= headerDataContext.maxNavigationItems && <InternalNavigationList />}\n          </>\n        )}\n      </div>\n\n      {isTablet && !headerMenuContext.isScrolling() && <InternalInstitutional />}\n    </div>\n  );\n};\n","import React, { FC, RefObject, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { useHeaderDataContext } from './context/data-context/header-data-context';\nimport { useHeaderMenuContext } from './context/menu-context/header-menu-context';\nimport { InternalGeneralBar } from './general-bar/internal-general-bar';\nimport { InternalNavigationBar } from './navigation-bar/internal-navigation-bar';\n\nimport { MenuTypeEnum } from './context/menu-context/menu-type.enum';\nimport './internal-header.scss';\n\nexport const InternalHeader: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Header, innerRef as RefObject<HTMLDivElement>);\n\n  const headerClassNames = classNames('agora-header', { 'scrolling shadow-bottom-low': headerMenuContext.isScrolling() });\n\n  const generalBarBGClassNames = classNames('general-bar-bg', {\n    'bg-neutral-100': !headerDataContext.darkMode,\n    'bg-primary-900': headerDataContext.darkMode\n  });\n\n  const navigationBarBGClassNames = classNames('navigation-bar-bg', {\n    'bg-white': !headerDataContext.darkMode,\n    'bg-primary-700': headerDataContext.darkMode\n  });\n\n  return (\n    <div className={headerClassNames} ref={innerRef}>\n      <div className={generalBarBGClassNames}>\n        <InternalGeneralBar />\n      </div>\n\n      <div className={navigationBarBGClassNames}>\n        <InternalNavigationBar />\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\n\nimport './custom-modal-dialog.scss';\n\nexport const CustomModalDialog: FC<ComponentProps<'div'>> = ({ children }) => {\n  return <div className=\"custom-modal-dialog\">{children}</div>;\n};\n","import { Dialog, DialogElement } from '@/components/dialog';\nimport React, { ComponentProps, FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { CustomModalContext, CustomModalContextProps } from './custom-modal-context';\nimport { CustomModalDialog } from './custom-modal-dialog';\n\nexport interface CustomModalConfiguration {\n  closeButtonLabel: string;\n  ariaLabel: string;\n  onShow?: () => void;\n  onHide?: () => void;\n}\n\nconst CustomModalProvider: FC<ComponentProps<'div'>> = ({ children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n\n  const [dialogConfigs, setDialogConfigs] = useState<CustomModalConfiguration>({\n    closeButtonLabel: '',\n    ariaLabel: ''\n  } as CustomModalConfiguration);\n\n  const show = useCallback(\n    (currentDialogChildren: ReactNode, configs: CustomModalConfiguration) => {\n      setDialogChildren(currentDialogChildren);\n      setDialogConfigs(configs);\n      dialogRef.current?.show();\n    },\n    [setDialogChildren, setDialogConfigs]\n  );\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const handleOnShow = () => {\n    dialogConfigs.onShow?.();\n  };\n\n  const handleOnHide = () => {\n    dialogConfigs.onHide?.();\n  };\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        show,\n        hide\n      }) as CustomModalContextProps,\n    [show, hide]\n  );\n\n  return (\n    <CustomModalContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen\n        dismissOnBackdropClick={false}\n        dismissOnEscape={true}\n        aria-label={dialogConfigs.ariaLabel}\n        onShow={handleOnShow}\n        onHide={handleOnHide}\n      >\n        <CustomModalDialog>{dialogChildren}</CustomModalDialog>\n      </Dialog>\n      {children}\n    </CustomModalContext>\n  );\n};\n\nexport { CustomModalProvider };\n","import { BooleanProp } from '@/models';\nimport React, { ComponentProps, FC, ReactElement, Ref, useEffect, useRef } from 'react';\nimport { BrandProps } from './brand/brand';\nimport { GeneralBarProps } from './general-bar/general-bar';\nimport { HeaderDataContext } from './internals/context/data-context/header-data-context';\nimport { useHeaderDataController } from './internals/context/data-context/header-data-controller';\nimport { useHeaderExternalController } from './internals/context/external-context/header-external-controller';\nimport { HeaderMenuContext } from './internals/context/menu-context/header-menu-context';\nimport { useHeaderMenuController } from './internals/context/menu-context/header-menu-controller';\nimport { InternalAuthenticatedDrawer } from './internals/general-bar/authenticated/Internal-authenticated-drawer';\nimport { InternalHeader } from './internals/internal-header';\nimport { CustomModalProvider } from './internals/shared/custom-modal/custom-modal-provider';\n\nexport interface HeaderElement extends ComponentProps<'div'> {\n  //  AREAS\n  focusActiveArea: () => void;\n  setActiveArea: (areaValue: string) => void;\n\n  //  LANGUAGES\n  focusLanguages: () => void;\n  openLanguages: () => void;\n\n  //  SEARCH\n  focusSearch: () => void;\n  openSearch: () => void;\n\n  //  UNAUTHENTICATED\n  focusUnauthenticated: () => void;\n  openUnauthenticated: () => void;\n\n  //  AUTHENTICATED\n  focusAuthenticated: () => void;\n  openAuthenticated: () => void;\n\n  //  MENU BURGER\n  focusBurgerMenu: () => void;\n  openBurgerMenu: () => void;\n\n  //  MODAL MENU\n  focusModalMenu: () => void;\n  openModalMenu: () => void;\n\n  //  NAVIGATION MENU OPTION\n  focusNavigationMenuOption: (index: number) => void;\n  openNavigationMenuOption: (index: number) => void;\n\n  //  GENERICS\n  closeAll: () => void;\n}\n\nexport interface HeaderProps {\n  ref: Ref<HeaderElement>;\n\n  darkMode?: BooleanProp;\n\n  maxNavigationItems?: number;\n\n  children?: ReactElement<BrandProps | GeneralBarProps> | ReactElement<BrandProps | GeneralBarProps>[];\n}\n\nconst Header: FC<HeaderProps> = ({ ref = null, ...props }) => {\n  const headerDataController = useHeaderDataController({ ref, ...props });\n  const headerMenuController = useHeaderMenuController();\n\n  useHeaderExternalController(ref, headerMenuController);\n\n  const screenWidth = useRef(0);\n\n  useEffect(() => {\n    const handleResize = () => {\n      if (screenWidth.current !== window.innerWidth) {\n        headerMenuController.collapseAllMenus();\n        screenWidth.current = window.innerWidth;\n      }\n    };\n\n    window.addEventListener('resize', handleResize);\n\n    setTimeout(() => {\n      screenWidth.current = window.innerWidth;\n    }, 50);\n\n    return () => {\n      window.removeEventListener('resize', handleResize);\n    };\n  }, []);\n\n  return (\n    <HeaderDataContext value={headerDataController}>\n      <HeaderMenuContext value={headerMenuController}>\n        <CustomModalProvider>\n          <InternalHeader />\n          <InternalAuthenticatedDrawer />\n        </CustomModalProvider>\n      </HeaderMenuContext>\n    </HeaderDataContext>\n  );\n};\n\nexport { Header };\n","import { createContext, Dispatch, SetStateAction } from 'react';\nimport { Months, WeekDays } from '@/models';\n\nexport type DatePickerStateContextType = {\n  focusedDate: Date;\n  setFocusedDate: Dispatch<SetStateAction<Date>>;\n\n  selectedDate: Date;\n  setSelectedDate: Dispatch<SetStateAction<Date>>;\n\n  disabledDates: Array<Date | string> | [];\n  setDisabledDates: Dispatch<SetStateAction<Array<Date | string> | []>>;\n\n  endDate: Date | string;\n  setEndDate: Dispatch<SetStateAction<Date | string>>;\n\n  startDate: Date | string;\n  setStartDate: Dispatch<SetStateAction<Date | string>>;\n\n  cancel: () => void;\n\n  labels: {\n    previousYearAriaLabel: string;\n    previousMonthAriaLabel: string;\n    nextMonthAriaLabel: string;\n    nextYearAriaLabel: string;\n    monthsLabels?: Months;\n    weekdaysLabels?: WeekDays;\n    focusedDayAriaLabel?: string;\n    selectedDayAriaLabel: string;\n    todayDayAriaLabel: string;\n    todayLabel: string;\n    todayAriaLabel?: string;\n    cancelLabel: string;\n    cancelAriaLabel?: string;\n    okLabel: string;\n    okAriaLabel?: string;\n  };\n};\n\nexport const DatePickerStateContext = createContext<DatePickerStateContextType | undefined>(undefined);\n","export const isSameDay = (date1: Date, date2: Date): boolean => {\n  return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate();\n};\n","import { isSameDay } from './is-same-day';\n\nexport const enum Direction {\n  Forward = 'forward',\n  Backward = 'backward'\n}\n\ninterface GetClosestAvailableDayParams {\n  startingDate?: Date;\n  disabledDates: (Date | string)[];\n  direction?: Direction;\n}\n\nexport const getClosestAvailableDay = ({\n  startingDate = new Date(),\n  disabledDates,\n  direction = Direction.Forward\n}: GetClosestAvailableDayParams): Date => {\n  const availableDate = startingDate;\n  const convertedDisabledDates = disabledDates.map((d) => (typeof d === 'string' ? new Date(Number(d)) : d));\n  const directionValue = direction === Direction.Backward ? -1 : 1;\n\n  while (convertedDisabledDates.some((d) => isSameDay(availableDate, d))) {\n    availableDate.setDate(availableDate.getDate() + directionValue);\n  }\n\n  return availableDate;\n};\n","export const isDayBeforeStartDate = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  return parsedDate < parsedStartDate;\n};\n\nexport const isDayAfterEndDate = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  return parsedDate > parsedEndDate;\n};\n\n// Return true if startDate is 1 month or more before the desired date\nexport const isStartDateOneMonthOrMore = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedDate.getFullYear() - parsedStartDate.getFullYear();\n  const monthDifference = yearDifference * 12 + parsedDate.getMonth() - parsedStartDate.getMonth();\n\n  return monthDifference >= 1;\n};\n\n// Return true if endDate is 1 month or more after the desired date\nexport const isEndDateOneMonthOrMore = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedEndDate.getFullYear() - parsedDate.getFullYear();\n  const monthDifference = yearDifference * 12 + parsedEndDate.getMonth() - parsedDate.getMonth();\n\n  return monthDifference >= 1;\n};\n\n// Return true if startDate is 1 year or more before the desired date\nexport const isStartDateOneYearOrMore = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedDate.getFullYear() - parsedStartDate.getFullYear();\n\n  return yearDifference >= 1;\n};\n\n// Return true if endDate is 1 year or more after the desired date\nexport const isEndDateOneYearOrMore = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedEndDate.getFullYear() - parsedDate.getFullYear();\n\n  return yearDifference >= 1;\n};\n","import { useContext, useMemo } from 'react';\nimport { Months, WeekDays } from '@/models';\n\nimport { DatePickerStateContext } from './date-picker-state.context';\nimport { Direction, getClosestAvailableDay } from '../utils/get-closest-available-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\n\nconst DEFAULT_MONTHS = {\n  jan: 'Janeiro',\n  feb: 'Fevereiro',\n  mar: 'Março',\n  apr: 'Abril',\n  may: 'Maio',\n  jun: 'Junho',\n  jul: 'Julho',\n  aug: 'Agosto',\n  set: 'Setembro',\n  oct: 'Outubro',\n  nov: 'Novembro',\n  dec: 'Dezembro'\n} as Months;\n\nconst DEFAULT_WEEK_DAYS = {\n  sun: 'Domingo',\n  mon: 'Segunda',\n  tue: 'Terça',\n  wed: 'Quarta',\n  thu: 'Quinta',\n  fri: 'Sexta',\n  sat: 'Sábado'\n} as WeekDays;\n\nconst useDatePickerStateContext = () => {\n  const ctx = useContext(DatePickerStateContext);\n\n  if (!ctx) {\n    throw new Error('Context must be used within a provider.');\n  }\n\n  const months = ctx.labels.monthsLabels ?? DEFAULT_MONTHS;\n\n  const weekDays = ctx.labels.weekdaysLabels ?? DEFAULT_WEEK_DAYS;\n\n  const mapMonths = new Map<number, string>();\n  Object.values(months).forEach((value: string, index) => {\n    mapMonths.set(index, value);\n  });\n\n  const getAbbrWeekDays = () => {\n    return Object.values(weekDays).map((wd: string) => wd.substring(0, 3));\n  };\n\n  const focusedMonth = useMemo(() => {\n    return mapMonths.get(ctx.focusedDate.getMonth());\n  }, [ctx.focusedDate]);\n\n  const focusedYear = useMemo(() => {\n    return ctx.focusedDate.getFullYear();\n  }, [ctx.focusedDate]);\n\n  const moveFocusInDays = ({ numberOfDays = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfDays : numberOfDays;\n\n    newDate.setDate(newDate.getDate() + directionValue);\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveFocusInMonths = ({ numberOfMonths = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfMonths : numberOfMonths;\n\n    newDate.setMonth(newDate.getMonth() + directionValue);\n\n    const parsedStartDate = typeof ctx.startDate === 'string' ? new Date(ctx.startDate) : ctx.startDate;\n    const parsedEndDate = typeof ctx.endDate === 'string' ? new Date(ctx.endDate) : ctx.endDate;\n\n    if (parsedStartDate && newDate < parsedStartDate) {\n      ctx.setFocusedDate(new Date(parsedStartDate));\n      return;\n    }\n\n    if (parsedEndDate && newDate > parsedEndDate) {\n      ctx.setFocusedDate(new Date(parsedEndDate));\n      return;\n    }\n\n    const isBeforeStartDate = parsedStartDate ? isDayBeforeStartDate(newDate, parsedStartDate) : false;\n    const isAfterEndDate = parsedEndDate ? isDayAfterEndDate(newDate, parsedEndDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveFocusInYears = ({ numberOfYears = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfYears : numberOfYears;\n\n    newDate.setFullYear(newDate.getFullYear() + directionValue);\n\n    const parsedStartDate = typeof ctx.startDate === 'string' ? new Date(ctx.startDate) : ctx.startDate;\n    const parsedEndDate = typeof ctx.endDate === 'string' ? new Date(ctx.endDate) : ctx.endDate;\n\n    if (parsedStartDate && newDate < parsedStartDate) {\n      ctx.setFocusedDate(new Date(parsedStartDate));\n      return;\n    }\n\n    if (parsedEndDate && newDate > parsedEndDate) {\n      ctx.setFocusedDate(new Date(parsedEndDate));\n      return;\n    }\n\n    const isBeforeStartDate = parsedStartDate ? isDayBeforeStartDate(newDate, parsedStartDate) : false;\n    const isAfterEndDate = parsedEndDate ? isDayAfterEndDate(newDate, parsedEndDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const focusToday = (): void => {\n    ctx.setFocusedDate(new Date());\n  };\n\n  const moveToNextDay = () => moveFocusInDays({ numberOfDays: 1, direction: Direction.Forward });\n  const moveToNextWeek = () => moveFocusInDays({ numberOfDays: 7, direction: Direction.Forward });\n  const moveToNextMonth = () => moveFocusInMonths({ numberOfMonths: 1, direction: Direction.Forward });\n  const moveToNextYear = () => moveFocusInYears({ numberOfYears: 1, direction: Direction.Forward });\n\n  const moveToPreviousDay = () => moveFocusInDays({ numberOfDays: 1, direction: Direction.Backward });\n  const moveToPreviousWeek = () => moveFocusInDays({ numberOfDays: 7, direction: Direction.Backward });\n  const moveToPreviousMonth = () => moveFocusInMonths({ numberOfMonths: 1, direction: Direction.Backward });\n  const moveToPreviousYear = () => moveFocusInYears({ numberOfYears: 1, direction: Direction.Backward });\n\n  const moveToFirstDayOfWeek = (): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n\n    newDate.setDate(newDate.getDate() - newDate.getDay());\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction: Direction.Backward\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveToLastDayOfWeek = (): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n\n    newDate.setDate(newDate.getDate() + (6 - newDate.getDay()));\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction: Direction.Forward\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const selectFocusedDate = (): void => {\n    ctx.setSelectedDate(ctx.focusedDate);\n  };\n\n  const getLabels = () => {\n    return ctx.labels;\n  };\n\n  return {\n    ...ctx,\n    getLabels,\n\n    getAbbrWeekDays,\n\n    focusedMonth,\n    focusedYear,\n\n    moveToPreviousYear,\n    moveToPreviousMonth,\n    moveToNextMonth,\n    moveToNextYear,\n\n    moveToNextDay,\n    moveToNextWeek,\n    moveToPreviousDay,\n    moveToPreviousWeek,\n    moveToFirstDayOfWeek,\n    moveToLastDayOfWeek,\n    selectFocusedDate,\n\n    focusToday\n  };\n};\n\nexport { useDatePickerStateContext };\n","export const isDateInSameMonthOfYear = (date1: Date, date2: Date): boolean => {\n  return date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear();\n};\n","import { isSameDay } from '../utils/is-same-day';\n\nexport const isDayOnArray = (date: Date, datesArray: (Date | string)[]): boolean => {\n  return datesArray.some((d) => {\n    let convertedDate: Date;\n\n    if (typeof d === 'string') {\n      const isStringOnlyDigits = /^\\d+$/.test(d);\n      if (isStringOnlyDigits) {\n        convertedDate = new Date(Number(d));\n      } else {\n        convertedDate = new Date(d);\n      }\n    } else {\n      convertedDate = d;\n    }\n\n    return isSameDay(date, convertedDate);\n  });\n};\n","import { getDateString } from '@/utils';\n\nexport const parseInputDate = (val?: string | null): Date | undefined => {\n  if (!val) {\n    return undefined;\n  }\n\n  if (/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/.test(val)) {\n    const parts = val.split('/');\n    if (parts) {\n      const day = +parts[0];\n      const month = +parts[1];\n      const year = +parts[2];\n      const parsedDate = new Date(year, month - 1, day);\n      const parsedDateString = getDateString(parsedDate);\n      return parsedDateString === val ? parsedDate : undefined;\n    }\n  }\n\n  return undefined;\n};\n","import classNames from 'classnames';\nimport React, { FC, KeyboardEvent, MouseEvent, useEffect, useMemo, useRef, useState } from 'react';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport { getDateString } from '@/utils';\nimport { isDateInSameMonthOfYear } from '../utils/is-date-in-same-month';\nimport { isSameDay } from '../utils/is-same-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\nimport { isDayOnArray } from '../utils/is-day-on-array';\nimport { parseInputDate } from '../utils/parse-input-date';\n\nexport const DialogBody: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const ref = useRef(null);\n\n  const [isCalendarActive, setIsCalendarActive] = useState(false);\n\n  const parseDateFromTarget = (target: HTMLElement): Date | undefined => {\n    const dateString = target.getAttribute('data-date');\n    return parseInputDate(dateString);\n  };\n\n  const focusAndSelectTargetDate = (targetDate: Date | undefined) => {\n    if (targetDate && isDateInSameMonthOfYear(ctx.focusedDate, targetDate) && !isDayOnArray(targetDate, ctx.disabledDates)) {\n      const parsedTargetDate = new Date(targetDate);\n      ctx.setFocusedDate(parsedTargetDate);\n      ctx.setSelectedDate(parsedTargetDate);\n    }\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLTableCellElement>) => {\n    const parsedDateFromTarget = parseDateFromTarget(evt.target as HTMLElement);\n\n    const isBeforeStartDate = ctx.startDate && parsedDateFromTarget ? isDayBeforeStartDate(parsedDateFromTarget, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate && parsedDateFromTarget ? isDayAfterEndDate(parsedDateFromTarget, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      focusAndSelectTargetDate(parsedDateFromTarget);\n    }\n  };\n\n  const onKeydownHandler = (evt: KeyboardEvent<HTMLTableCellElement>) => {\n    const { shiftKey } = evt;\n    const { target } = evt;\n    const { code } = evt;\n\n    if (code === 'Tab') {\n      return;\n    }\n\n    evt.preventDefault();\n\n    switch (evt.code) {\n      case 'ArrowUp':\n        ctx.moveToPreviousWeek();\n        break;\n      case 'ArrowDown':\n        ctx.moveToNextWeek();\n        break;\n      case 'ArrowLeft':\n        ctx.moveToPreviousDay();\n        break;\n      case 'ArrowRight':\n        ctx.moveToNextDay();\n        break;\n      case 'PageUp':\n        if (shiftKey) {\n          ctx.moveToPreviousYear();\n        } else {\n          ctx.moveToPreviousMonth();\n        }\n        break;\n      case 'PageDown':\n        if (shiftKey) {\n          ctx.moveToNextYear();\n        } else {\n          ctx.moveToNextMonth();\n        }\n        break;\n      case 'Home':\n        ctx.moveToFirstDayOfWeek();\n        break;\n      case 'End':\n        ctx.moveToLastDayOfWeek();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        focusAndSelectTargetDate(parseDateFromTarget(target as HTMLElement));\n        break;\n      default:\n        break;\n    }\n  };\n\n  const onFocusHandler = () => {\n    setIsCalendarActive(true);\n  };\n\n  const onBlurHandler = () => {\n    setIsCalendarActive(false);\n  };\n\n  const buildDay = (currentDay: Date, weekNumber: number, dayNumber: number) => {\n    currentDay.setDate(currentDay.getDate() + 1);\n\n    const isInCurrentMonth = currentDay.getMonth() === ctx.focusedDate.getMonth();\n    const isFocusedDate = isSameDay(currentDay, ctx.focusedDate);\n    const isSelectedDate = isSameDay(currentDay, ctx.selectedDate);\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(currentDay, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(currentDay, ctx.endDate) : false;\n    const isDisabledDate = isDayOnArray(currentDay, ctx.disabledDates) || isBeforeStartDate || isAfterEndDate;\n    const isToday = isSameDay(currentDay, new Date());\n\n    const stringDate = getDateString(currentDay);\n\n    const tdDayClasses = classNames(\n      'day w-[44px] h-[44px] border-2 rounded-4 outline-0 flex items-center justify-center text-s-regular cursor-default',\n      // DEFAULT TEXT COLOR\n      {\n        'text-neutral-900': !isToday && !isDisabledDate\n      },\n      //  DEFAULT BORDER\n      {\n        'border-transparent': !isSelectedDate && !isFocusedDate\n      },\n      //  DAY IN CURRENT MONTH\n      {\n        'hover:bg-primary-100 hover:text-primary-600 active:bg-neutral-200 active:shadow-inner active:border-0 active:text-neutral-900':\n          isInCurrentMonth && !isDisabledDate\n      },\n      //  DISABLED\n      {\n        'text-neutral-500 line-through decoration-2': isDisabledDate\n      },\n      //  TODAY DEFAULT\n      {\n        'text-s-bold text-primary-600': isToday && !isSelectedDate && !isDisabledDate\n      },\n      //  SELECTED\n      {\n        'bg-primary-600 text-white': isSelectedDate && !isDisabledDate\n      },\n      //  FOCUS WITH CALENDAR GRID NOT FOCUSED\n      {\n        'border-primary-400': !isSelectedDate && isFocusedDate && !isCalendarActive && isInCurrentMonth && !isDisabledDate\n      },\n      //  FOCUS\n      {\n        'outline outline-2 -outline-offset-2 outline-focus': isCalendarActive && isFocusedDate && isInCurrentMonth\n      }\n    );\n\n    const dayClasses = classNames('pointer-events-none select-none', { 'opacity-20': !isInCurrentMonth });\n\n    const trTdKey = `tr-td-key-${weekNumber}-${dayNumber}`;\n\n    const ariaLabelForDay = (() => {\n      const labels = ctx.getLabels();\n\n      let dayLabel = currentDay.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\n\n      if (isToday && labels.todayDayAriaLabel) {\n        dayLabel = `${labels.todayDayAriaLabel}, ${dayLabel}`;\n      }\n\n      if (isFocusedDate && labels.focusedDayAriaLabel) {\n        dayLabel = `${dayLabel}, ${labels.focusedDayAriaLabel}`;\n      }\n\n      if (isSelectedDate && labels.selectedDayAriaLabel) {\n        dayLabel = `${dayLabel}, ${labels.selectedDayAriaLabel}`;\n      }\n\n      return dayLabel;\n    })();\n\n    return (\n      <div\n        key={trTdKey}\n        className={tdDayClasses}\n        role=\"gridcell\"\n        data-date={stringDate}\n        aria-label={ariaLabelForDay}\n        aria-selected={isFocusedDate}\n        aria-disabled={isDisabledDate}\n        tabIndex={isInCurrentMonth && isFocusedDate && !isDisabledDate ? 0 : -1}\n        onKeyDown={onKeydownHandler}\n        onClick={onClickHandler}\n        onFocus={onFocusHandler}\n        onBlur={onBlurHandler}\n      >\n        <div aria-hidden className={dayClasses}>\n          {currentDay.getDate()}\n        </div>\n      </div>\n    );\n  };\n\n  const buildWeek = (weekNumber: number) => {\n    const firstDayOfMonth = new Date(ctx.focusedDate.getFullYear(), ctx.focusedDate.getMonth(), 1);\n\n    const dayOfWeek = firstDayOfMonth.getDay() + 1;\n\n    firstDayOfMonth.setDate(firstDayOfMonth.getDate() - dayOfWeek);\n    firstDayOfMonth.setDate(firstDayOfMonth.getDate() + weekNumber * 7);\n\n    return Array.from(Array(7).keys()).map((dayNumber) => {\n      return buildDay(firstDayOfMonth, weekNumber, dayNumber);\n    });\n  };\n\n  const memoGrid = useMemo(() => {\n    return Array.from(Array(6).keys()).map((trCount) => {\n      const trKey = `tr-key-${trCount}`;\n      return (\n        <div role=\"row\" className=\"grid grid-flow-col gap-[2px]\" key={trKey}>\n          {buildWeek(trCount)}\n        </div>\n      );\n    });\n  }, [ctx.focusedDate, ctx.selectedDate, isCalendarActive]);\n\n  const focusDay = () => {\n    if (ref.current) {\n      const elem = Array.from((ref.current as HTMLElement).querySelectorAll('.day[tabIndex=\"0\"]')).shift();\n\n      if (elem) {\n        (elem as HTMLElement).focus();\n      }\n    }\n  };\n\n  //  INITIAL FOCUS ON SELECTED/FOCUSED DAY\n  useEffect(() => focusDay(), []);\n\n  //  WHENEVER CALENDAR GRID IS ACTIVE, FOCUS THE DAY AGAIN\n  useEffect(() => {\n    if (isCalendarActive) {\n      focusDay();\n    }\n  }, [isCalendarActive]);\n\n  //  WHENEVER FOCUSED DATE CHANGES, FOCUS IT\n  useEffect(() => focusDay(), [ctx.focusedDate]);\n\n  return (\n    <div className=\"my-16\">\n      <div role=\"grid\" className=\"w-full\">\n        <div role=\"rowheader\" className=\"grid grid-flow-col gap-[2px]\">\n          {ctx.getAbbrWeekDays().map((d) => {\n            return (\n              <div\n                role=\"gridcell\"\n                key={d}\n                className=\"w-[44px] h-32 flex items-center justify-center bg-neutral-100 text-s-regular text-neutral-900\"\n                aria-hidden\n              >\n                {d}\n              </div>\n            );\n          })}\n        </div>\n        <div ref={ref} role=\"rowgroup\">\n          {memoGrid}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { Button } from '@/components/button';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport { isDayOnArray } from '../utils/is-day-on-array';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\n\nexport const DialogFooter: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const todayDate = new Date();\n  const disabledDates = ctx.disabledDates;\n  let isTodayDisabled = isDayOnArray(todayDate, disabledDates);\n\n  if (ctx.startDate && isDayBeforeStartDate(todayDate, ctx.startDate)) {\n    isTodayDisabled = true;\n  }\n\n  if (ctx.endDate && isDayAfterEndDate(todayDate, ctx.endDate)) {\n    isTodayDisabled = true;\n  }\n\n  const onOkPressed = () => {\n    const parsedFocusedDate = new Date(ctx.focusedDate);\n    ctx.setSelectedDate(parsedFocusedDate);\n  };\n\n  const labels = ctx.getLabels();\n\n  const additionalTodayProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.todayLabel}, ${labels.todayAriaLabel}`\n  };\n  if (!labels.todayAriaLabel) {\n    delete additionalTodayProps['aria-label'];\n  }\n\n  const additionalCancelProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.cancelLabel}, ${labels.cancelAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalCancelProps['aria-label'];\n  }\n\n  const additionalOkProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.okLabel}, ${labels.okAriaLabel}`\n  };\n  if (!labels.okAriaLabel) {\n    delete additionalOkProps['aria-label'];\n  }\n\n  return (\n    <div className=\"flex justify-between items-center\">\n      <div className=\"my-16\">\n        <Button appearance=\"link\" onClick={ctx.focusToday} disabled={isTodayDisabled} {...additionalTodayProps}>\n          {labels.todayLabel}\n        </Button>\n      </div>\n      <div className=\"my-16 flex items-end gap-8\">\n        <Button appearance=\"outline\" onClick={ctx.cancel} {...additionalCancelProps}>\n          {labels.cancelLabel}\n        </Button>\n        <Button appearance=\"solid\" onClick={onOkPressed} {...additionalOkProps}>\n          {labels.okLabel}\n        </Button>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport {\n  isEndDateOneMonthOrMore,\n  isEndDateOneYearOrMore,\n  isStartDateOneMonthOrMore,\n  isStartDateOneYearOrMore\n} from '../utils/start-end-dates-comparators';\n\nexport const DialogHeader: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const [isPreviousMonthButtonEnabled, setIsPreviousMonthButtonEnabled] = useState<boolean>(true);\n  const [isPreviousYearButtonEnabled, setIsPreviousYearButtonEnabled] = useState<boolean>(true);\n  const [isNextMonthButtonEnabled, setIsNextMonthButtonEnabled] = useState<boolean>(true);\n  const [isNextYearButtonEnabled, setIsNextYearButtonEnabled] = useState<boolean>(true);\n\n  useEffect(() => {\n    setIsPreviousMonthButtonEnabled(ctx.startDate ? isStartDateOneMonthOrMore(ctx.focusedDate, ctx.startDate) : true);\n    setIsPreviousYearButtonEnabled(ctx.startDate ? isStartDateOneYearOrMore(ctx.focusedDate, ctx.startDate) : true);\n    setIsNextMonthButtonEnabled(ctx.endDate ? isEndDateOneMonthOrMore(ctx.focusedDate, ctx.endDate) : true);\n    setIsNextYearButtonEnabled(ctx.endDate ? isEndDateOneYearOrMore(ctx.focusedDate, ctx.endDate) : true);\n  }, [ctx.focusedDate, ctx.startDate, ctx.endDate]);\n\n  return (\n    <div className=\"header w-full\">\n      <h2 className=\"flex justify-center py-8 w-full text-black font-bold text-m-light normal-case\" aria-live=\"polite\">\n        {`${ctx.focusedMonth} ${ctx.focusedYear}`}\n      </h2>\n\n      <div className=\"flex flex-row justify-between\">\n        <div className=\"flex gap-8 justify-center\">\n          <Button\n            appearance=\"outline\"\n            onClick={ctx.moveToPreviousYear}\n            aria-label={ctx.getLabels().previousYearAriaLabel}\n            disabled={!isPreviousYearButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevrons-left\" dimensions=\"s\" aria-hidden />\n          </Button>\n\n          <Button\n            appearance=\"outline\"\n            onClick={ctx.moveToPreviousMonth}\n            aria-label={ctx.getLabels().previousMonthAriaLabel}\n            disabled={!isPreviousMonthButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevron-left\" dimensions=\"s\" aria-hidden />\n          </Button>\n        </div>\n\n        <div className=\"flex gap-8 justify-center\">\n          <Button\n            appearance=\"outline\"\n            onClick={ctx.moveToNextMonth}\n            aria-label={ctx.getLabels().nextMonthAriaLabel}\n            disabled={!isNextMonthButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevron-right\" dimensions=\"s\" aria-hidden />\n          </Button>\n\n          <Button\n            appearance=\"outline\"\n            onClick={ctx.moveToNextYear}\n            aria-label={ctx.getLabels().nextYearAriaLabel}\n            disabled={!isNextYearButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevrons-right\" dimensions=\"s\" aria-hidden />\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Months, WeekDays } from '@/models';\nimport { DatePickerStateContext, DatePickerStateContextType } from './contexts/date-picker-state.context';\nimport { DialogBody } from './date-picker-dropdown-body/date-picker-dropdown-body';\nimport { DialogFooter } from './date-picker-dropdown-footer/date-picker-dropdown-footer';\nimport { DialogHeader } from './date-picker-dropdown-header/date-picker-dropdown-header';\nimport classNames from 'classnames';\nimport { asyncTrigger } from '@/utils';\nimport { isDayOnArray } from './utils/is-day-on-array';\nimport { getClosestAvailableDay } from './utils/get-closest-available-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from './utils/start-end-dates-comparators';\n\nexport interface DatePickerDropdownProps {\n  className?: string;\n  date?: Date;\n  disabledDates?: Array<Date | string> | [];\n  startDate?: Date | string;\n  endDate?: Date | string;\n  onChange: (date: Date) => void;\n  onCancel: () => void;\n  labels: {\n    previousYearAriaLabel: string;\n    previousMonthAriaLabel: string;\n    nextMonthAriaLabel: string;\n    nextYearAriaLabel: string;\n    monthsLabels?: Months;\n    weekdaysLabels?: WeekDays;\n    focusedDayAriaLabel?: string;\n    selectedDayAriaLabel: string;\n    todayDayAriaLabel: string;\n    todayLabel: string;\n    todayAriaLabel?: string;\n    cancelLabel: string;\n    cancelAriaLabel?: string;\n    okLabel: string;\n    okAriaLabel?: string;\n  };\n}\n\nexport const DatePickerDropdown: FC<DatePickerDropdownProps> = ({\n  date = new Date(),\n  disabledDates = [],\n  endDate = '',\n  startDate = '',\n  onChange,\n  onCancel,\n  labels,\n  className\n}) => {\n  const isDateDisabled = isDayOnArray(date, disabledDates);\n  let initialDate = new Date(isDateDisabled ? getClosestAvailableDay({ disabledDates }) : date);\n\n  if (startDate && isDayBeforeStartDate(initialDate, startDate)) {\n    initialDate = new Date(startDate);\n  }\n\n  if (endDate && isDayAfterEndDate(initialDate, endDate)) {\n    initialDate = new Date(endDate);\n  }\n\n  const [initialized, setInitialized] = useState(false);\n  const [selectedDate, setSelectedDate] = useState(initialDate);\n  const [focusedDate, setFocusedDate] = useState(initialDate);\n  const [disabledDatesState, setDisabledDatesState] = useState(disabledDates);\n\n  const cancel = () => {\n    onCancel();\n  };\n\n  useEffect(() => {\n    if (initialized) {\n      asyncTrigger(() => onChange(selectedDate));\n    } else {\n      setInitialized(true);\n    }\n  }, [selectedDate]);\n\n  const managerMemo = useMemo(() => {\n    return {\n      focusedDate,\n      selectedDate,\n      disabledDates: disabledDatesState,\n      endDate,\n      startDate,\n      setFocusedDate,\n      setSelectedDate,\n      setDisabledDates: setDisabledDatesState,\n      cancel,\n\n      labels\n    } as DatePickerStateContextType;\n  }, [selectedDate, focusedDate]);\n\n  const wrapperClassNames = classNames(\n    className,\n    'absolute left-0 top-[68px] shadow-bottom-high bg-white p-16 border-2 border-neutral-200 rounded-4 z-dropdown'\n  );\n\n  const datePickerDropdownContainerRef = useRef<HTMLDivElement>(null);\n\n  const handleKeyDown = useCallback((evt: KeyboardEvent) => {\n    if (evt.key === 'Escape') {\n      evt.preventDefault();\n      onCancel();\n      return;\n    }\n\n    if (evt.key === 'Tab' && datePickerDropdownContainerRef.current) {\n      const focusableElements = datePickerDropdownContainerRef.current.querySelectorAll(\n        'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n      );\n\n      const firstElement = focusableElements[0] as HTMLElement;\n      const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n      if (evt.shiftKey && document.activeElement === firstElement) {\n        evt.preventDefault();\n        lastElement.focus();\n      } else if (!evt.shiftKey && document.activeElement === lastElement) {\n        evt.preventDefault();\n        firstElement.focus();\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    document?.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleKeyDown]);\n\n  return (\n    <DatePickerStateContext value={managerMemo}>\n      <div ref={datePickerDropdownContainerRef} className={wrapperClassNames}>\n        <DialogHeader />\n        <DialogBody />\n        <div className=\"border-1 border-neutral-300\" />\n        <DialogFooter />\n      </div>\n    </DatePickerStateContext>\n  );\n};\n","export const formatDayOrMonth = (number: string) => {\n  if (number === '') {\n    return number;\n  }\n\n  return number.length === 1 ? `0${number}` : number;\n};\n\nexport const isLeapYear = (year: number): boolean => {\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\n\nexport const parseDate = (currentDay: number, currentMonth: number, currentYear: number): string => {\n  const newDay = Math.max(currentDay, 1);\n  const monthString = formatDayOrMonth(currentMonth.toString());\n  const yearString = currentYear.toString();\n\n  if (currentMonth === 2) {\n    // 28 or 29\n    if (isLeapYear(currentYear) && newDay >= 29) {\n      return `29/${monthString}/${yearString}`;\n    }\n\n    if (newDay > 28) {\n      return `28/${monthString}/${yearString}`;\n    }\n\n    return `${formatDayOrMonth(newDay.toString())}/${monthString}/${yearString}`;\n  }\n\n  if ([11, 9, 6, 4].indexOf(currentMonth) >= 0) {\n    //  30 days\n    return `${formatDayOrMonth(Math.min(30, newDay).toString())}/${monthString}/${yearString}`;\n  }\n\n  //  31 days\n  return `${formatDayOrMonth(Math.min(31, newDay).toString())}/${monthString}/${yearString}`;\n};\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, FocusEvent } from 'react';\n\nimport { asyncTrigger, createSyntheticEvent } from '@/utils';\nimport './date-text.scss';\nimport { parseDate } from '../utils/parse-date';\n\nexport interface DateTextProps extends ComponentProps<'input'> {\n  dayInputPlaceholder?: string;\n  monthInputPlaceholder?: string;\n  yearInputPlaceholder?: string;\n}\n\nconst DateText: FC<DateTextProps> = ({\n  ref = null,\n  className = '',\n  dayInputPlaceholder = '',\n  monthInputPlaceholder = '',\n  yearInputPlaceholder = '',\n  ...props\n}) => {\n  const inputClassNames = classNames('agora-date-input', className);\n\n  const validateDate = (evt: FocusEvent<HTMLInputElement>) => {\n    const targetValue = (evt.target as HTMLInputElement).value;\n\n    //  INVALID DATE FORMAT\n    if (!/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/.test(targetValue)) {\n      evt.target.value = '';\n    } else {\n      const dateParts = targetValue.split('/').map((d) => parseInt(d, 10));\n      evt.target.value = parseDate(dateParts[0], dateParts[1], dateParts[2]);\n    }\n\n    const newChangeEvt = createSyntheticEvent<HTMLInputElement>(evt.target, 'change');\n    asyncTrigger(() => props.onChange?.(newChangeEvt as ChangeEvent<HTMLInputElement>));\n  };\n\n  const handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n    // const allowedKeys = ['Backspace', 'Enter', ' ', 'Esc', 'Tab', 'Delete', 'ArrowLeft', 'ArrowRight', '/'];\n    const allowedKeys = [\n      'Home',\n      'End',\n      'Tab',\n      'Shift',\n      'ArrowUp',\n      'ArrowDown',\n      'ArrowLeft',\n      'ArrowRight',\n      'Enter',\n      ' ',\n      'NumpadEnter',\n      'PageUp',\n      'PageDown',\n      'Esc',\n      '/',\n      'Backspace',\n      'Delete'\n    ];\n    const key = evt.key;\n\n    if (allowedKeys.includes(key)) {\n      if (key === 'Enter' || key === ' ') {\n        props.onKeyDown?.(evt);\n      }\n      return;\n    }\n\n    if (!allowedKeys.includes(key) && !/[0-9]/.test(key)) {\n      evt.preventDefault();\n    }\n  };\n\n  return (\n    <input\n      {...props}\n      className={inputClassNames}\n      ref={ref}\n      type=\"text\"\n      placeholder={`${dayInputPlaceholder}/${monthInputPlaceholder}/${yearInputPlaceholder}`}\n      onKeyDown={handleKeyDown}\n      onBlur={validateDate}\n    />\n  );\n};\n\nexport { DateText };\n","import React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent as ReactKeyboardEvent,\n  ReactNode,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, FeedbackState, Months, WeekDays } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, getDateString, stringToBoolean } from '@/utils';\n\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { DatePickerDropdown } from './date-picker-dropdown';\nimport { DateText } from './date-text/date-text';\nimport { parseInputDate } from './utils/parse-input-date';\n\nimport './input-date.scss';\n\nexport interface InputDateProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Array with the dates to be considered disabled.\n   */\n  disabledDates?: Array<Date | string> | [];\n  /**\n   * Date to be considered the first one available to be selected. All dates before, are disabled.\n   */\n  startDate?: Date | string;\n  /**\n   * Date to be considered the last one available to be selected. All dates after, are disabled.\n   */\n  endDate?: Date | string;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedbackText is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * The placeholder to apply in the input day part\n   */\n  dayInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input month part\n   */\n  monthInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input year part\n   */\n  yearInputPlaceholder?: string;\n  /**\n   * Accessible text to apply to the trailing calendar icon.\n   */\n  calendarIconAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker previous year button.\n   */\n  previousYearAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker previous month button.\n   */\n  previousMonthAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker next month button.\n   */\n  nextMonthAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker next year button.\n   */\n  nextYearAriaLabel: string;\n  /**\n   * Labels for each month.\n   */\n  monthsLabels?: Months;\n  /**\n   * Labels for each weekday.\n   */\n  weekdaysLabels?: WeekDays;\n  /**\n   * Accessible text to identify the current focused day.\n   */\n  focusedDayAriaLabel?: string;\n  /**\n   * Accessible text to identify the current selected day.\n   */\n  selectedDayAriaLabel: string;\n  /**\n   * Accessible text to identify the highlighted today day.\n   */\n  todayDayAriaLabel: string;\n  /**\n   * Label for the date picker today button.\n   */\n  todayLabel: string;\n  /**\n   * Accessible text for the date picker today button.\n   */\n  todayAriaLabel?: string;\n  /**\n   * Label for the date picker cancel button.\n   */\n  cancelLabel: string;\n  /**\n   * Accessible text for the date picker cancel button.\n   */\n  cancelAriaLabel?: string;\n  /**\n   * Label for the date picker ok button.\n   */\n  okLabel: string;\n  /**\n   * Accessible text for the date picker ok button.\n   */\n  okAriaLabel?: string;\n}\n\nconst InputDate: FC<InputDateProps> = ({\n  ref = null,\n  className,\n  label,\n  hideLabel,\n  disabledDates = [],\n  startDate = '',\n  endDate = '',\n  required = true,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  hasIcon,\n  icon,\n  dayInputPlaceholder,\n  monthInputPlaceholder,\n  yearInputPlaceholder,\n  calendarIconAriaLabel,\n  previousYearAriaLabel,\n  previousMonthAriaLabel,\n  nextMonthAriaLabel,\n  nextYearAriaLabel,\n  monthsLabels,\n  weekdaysLabels,\n  focusedDayAriaLabel,\n  selectedDayAriaLabel,\n  todayDayAriaLabel,\n  todayLabel,\n  todayAriaLabel,\n  cancelLabel,\n  cancelAriaLabel,\n  okLabel,\n  okAriaLabel,\n  value,\n  defaultValue,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return innerInputRef.current as HTMLInputElement;\n  }, [innerInputRef.current]);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const [currentValue, setCurrentValue] = useState<string>(value?.toString() ?? defaultValue?.toString() ?? '');\n\n  const lastValueTriggered = useRef<string>('empty');\n  const [trigger, setTrigger] = useState(+new Date());\n\n  const [overlayVisible, setOverlayVisible] = useState(false);\n\n  const showOverlay = () => {\n    setOverlayVisible(true);\n  };\n\n  const hideOverlay = () => {\n    setOverlayVisible(false);\n    innerInputRef.current?.focus();\n  };\n\n  const toggleOverlay = () => {\n    if (overlayVisible) {\n      hideOverlay();\n    } else {\n      showOverlay();\n    }\n  };\n\n  const handleOnDismiss = () => {\n    hideOverlay();\n  };\n\n  //  HANDLE INPUT DATE KEYDOWN\n  const handleInputDateKeydown = (evt: ReactKeyboardEvent<HTMLInputElement>) => {\n    if (stringToBoolean(propsClone.disabled) || stringToBoolean(propsClone.readOnly)) {\n      return;\n    }\n\n    if (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter') {\n      evt.preventDefault();\n      showOverlay();\n    }\n\n    propsClone.onKeyDown?.(evt);\n  };\n\n  const handleDatePickerCancel = () => {\n    handleOnDismiss();\n  };\n\n  const triggerOnChange = (last: string) => {\n    if (last !== lastValueTriggered.current) {\n      lastValueTriggered.current = last;\n      setTrigger(+new Date());\n    }\n  };\n\n  //  HANDLE CLICK OUTSIDE DIALOG\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (!overlayVisible) {\n        return;\n      }\n\n      if (!wrapperRef.current?.contains(event.target as HTMLDivElement)) {\n        handleOnDismiss();\n      }\n    };\n\n    document.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document.removeEventListener('click', handleClickOutside);\n    };\n  }, [overlayVisible]);\n\n  //  HANDLE ESCAPE\n  useEffect(() => {\n    const keydownHandler = (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleOnDismiss();\n      }\n    };\n\n    wrapperRef.current?.addEventListener('keydown', keydownHandler);\n\n    return () => {\n      wrapperRef.current?.removeEventListener('keydown', keydownHandler);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (defaultValue) {\n      return;\n    }\n\n    setCurrentValue(value?.toString() ?? '');\n    triggerOnChange(value?.toString() ?? '');\n  }, [value]);\n\n  const onOverlayChangeHandler = (date: Date) => {\n    handleOnDismiss();\n\n    const dateString = getDateString(date);\n    setCurrentValue(dateString);\n    triggerOnChange(dateString);\n  };\n\n  const onInputDateChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentValue(evt.target.value);\n    triggerOnChange(evt.target.value);\n  };\n\n  useEffect(() => {\n    if (innerInputRef.current) {\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n  }, [trigger]);\n\n  const dropdownDatePickerLabels = {\n    previousYearAriaLabel,\n    previousMonthAriaLabel,\n    nextMonthAriaLabel,\n    nextYearAriaLabel,\n    monthsLabels,\n    weekdaysLabels,\n    focusedDayAriaLabel,\n    selectedDayAriaLabel,\n    todayDayAriaLabel,\n    todayLabel,\n    todayAriaLabel,\n    cancelLabel,\n    cancelAriaLabel,\n    okLabel,\n    okAriaLabel\n  };\n\n  const wrapperClassNames = classNames('agora-date-picker', className, {\n    'has-value': currentValue.length > 0,\n    'disabled': stringToBoolean(propsClone.disabled),\n    'read-only': stringToBoolean(propsClone.readOnly),\n    'dark-mode': stringToBoolean(darkMode),\n    'has-error': stringToBoolean(hasError)\n  });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-date-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-date-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n      {/* Label */}\n      <label hidden={!!stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-date-label\">\n        {label}\n      </label>\n\n      {/* Input wrapper */}\n      <div className=\"input-wrapper\">\n        {/* Input Leading Icon  */}\n        {hasIcon && icon?.startsWith('agora-solid') && (\n          <div className=\"input-leading-icon\">\n            <Icon name={icon} aria-hidden />\n          </div>\n        )}\n\n        <DateText\n          ref={innerInputRef}\n          id={propsClone.id}\n          dayInputPlaceholder={dayInputPlaceholder}\n          monthInputPlaceholder={monthInputPlaceholder}\n          yearInputPlaceholder={yearInputPlaceholder}\n          onKeyDown={handleInputDateKeydown}\n          value={currentValue}\n          onChange={onInputDateChange}\n          disabled={propsClone.disabled}\n          readOnly={propsClone.readOnly}\n          required={isRequired}\n          aria-describedby={inputAriaDescribedBy}\n          name={props.name}\n        />\n\n        {/* Input Trailing Icon  */}\n        <button\n          type=\"button\"\n          disabled={!!propsClone.disabled || !!propsClone.readOnly}\n          onClick={toggleOverlay}\n          className=\"input-trailing-icon\"\n          aria-label={calendarIconAriaLabel}\n        >\n          <Icon name=\"agora-line-calendar\" aria-hidden className=\"icon-calendar-default\" />\n          <Icon name=\"agora-solid-calendar\" aria-hidden className=\"icon-calendar-hover\" />\n        </button>\n\n        {overlayVisible && (\n          <DatePickerDropdown\n            className=\"date-picker-dropdown\"\n            labels={dropdownDatePickerLabels}\n            date={parseInputDate(currentValue)}\n            disabledDates={disabledDates}\n            startDate={startDate}\n            endDate={endDate}\n            onChange={onOverlayChangeHandler}\n            onCancel={handleDatePickerCancel}\n          />\n        )}\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-date-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-date-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputDate };\n","import { Button } from '@/components/button';\nimport { Feedback } from '@/components/shared/feedback';\nimport { FeedbackState } from '@/models';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useCallback, useId, useState } from 'react';\n\nimport './input-email-bar.scss';\n\nconst EMAIL_REGEXP = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport interface InputEmailBarProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Callback to execute when the user clicks on the send button.\n   */\n  onSendHandler?: (email: string) => void;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n}\n\nconst InputEmailBar: FC<InputEmailBarProps> = ({\n  ref = null,\n  className,\n  hideLabel,\n  label,\n  hasFeedback,\n  feedbackState = 'info',\n  darkMode,\n  feedbackText,\n  hasError,\n  errorFeedbackText,\n  onSendHandler,\n  pattern = EMAIL_REGEXP,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const [email, setEmail] = useState<string>('');\n  const [isValidEmail, setIsValidEmail] = useState<boolean>(false);\n\n  const handleChangeEvent = useCallback(\n    (evt: ChangeEvent<HTMLInputElement>) => {\n      const { value } = evt.currentTarget;\n      setEmail(value);\n      setIsValidEmail(new RegExp(pattern).test(value));\n      onChange?.(evt);\n    },\n    [onChange, pattern]\n  );\n\n  const onSendButtonClick = useCallback(() => {\n    if (onSendHandler && new RegExp(pattern).test(email)) {\n      onSendHandler(email);\n    }\n  }, [onSendHandler, pattern, email]);\n\n  const inputWrapperClassNames = classNames(\n    'agora-input-email-bar',\n    { dark: stringToBoolean(darkMode) },\n    {\n      'flex flex-col': !propsClone.hidden,\n      'input-disabled': !!propsClone.disabled,\n\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n  const labelSectionClasses = classNames('input-label-wrapper flex items-end', {\n    'mb-16': label && !stringToBoolean(hideLabel),\n    'justify-end': !label || stringToBoolean(hideLabel),\n    'justify-between': label && !stringToBoolean(hideLabel)\n  });\n  const labelClasses = classNames('agora-input-email-bar-label', { dark: stringToBoolean(darkMode) });\n  const inputContainerClassNames = classNames('agora-input-email-bar-container', {\n    disabled: propsClone.disabled\n  });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-email-bar-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-email-bar-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClassNames}>\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} className={labelClasses} htmlFor={propsClone.id}>\n          {label}\n        </label>\n      </div>\n\n      <div className={inputContainerClassNames}>\n        <input\n          {...propsClone}\n          className=\"flex-grow-[1] outline-none\"\n          ref={ref}\n          type=\"email\"\n          disabled={!!propsClone.disabled}\n          onChange={handleChangeEvent}\n          aria-describedby={inputAriaDescribedBy}\n        />\n\n        <div className=\"actions-container\">\n          <Button\n            className=\"magnifier-icon\"\n            appearance=\"solid\"\n            iconOnly\n            hasIcon\n            leadingIcon=\"agora-line-plane\"\n            leadingIconHover=\"agora-solid-plane\"\n            aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n            onClick={onSendButtonClick}\n            disabled={!isValidEmail}\n          />\n        </div>\n      </div>\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-email-bar-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-email-bar-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputEmailBar };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-number.scss';\n\nexport interface InputNumberProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Label text for increase button. Recommended for accessibility.\n   */\n  increaseButtonAltText?: string;\n  /**\n   *  Label text for decrease button. Recommended for accessibility.\n   */\n  decreaseButtonAltText?: string;\n}\n\nconst InputNumber: FC<InputNumberProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  increaseButtonAltText = 'increase',\n  decreaseButtonAltText = 'decrease',\n  hasFeedback,\n  feedbackState,\n  darkMode,\n  feedbackText,\n  errorFeedbackText,\n  hasIcon,\n  icon,\n  className,\n  required = true,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange, min, max } = propsClone;\n\n  const inputWrapperRef = useRef<HTMLInputElement>(null);\n\n  const [currentValue, setCurrentValue] = useState(propsClone.value);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler. This functions enforces the max char limit.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n\n    setCurrentValue(value);\n\n    onChange?.(evt);\n\n    if (max === parseFloat(value.toString()) || min === parseFloat(value.toString())) {\n      const inputElem = inputWrapperRef.current?.querySelector('input');\n      if (inputElem) {\n        inputElem.focus();\n      }\n    }\n  };\n\n  const [isHovered, setIsHovered] = useState(false);\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-number-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': !!propsClone.disabled,\n        'is-hovered': isHovered,\n        'has-error': stringToBoolean(hasError),\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-number',\n        {\n          'has-leading-icon': hasIcon && icon?.indexOf('agora-solid') === 0, // allowing only solid family icon\n          'has-value': currentValue && currentValue.toString().length > 0\n        },\n        className\n      ),\n\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  /**\n   * Execute stepUp locally and execute update value\n   */\n  const handleStepUp = () => {\n    const inputElem = inputWrapperRef.current?.querySelector('input');\n\n    if (inputElem) {\n      inputElem.stepUp();\n      inputElem.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  };\n\n  /**\n   * Execute stepDown locally and execute update value\n   */\n  const handleStepDown = () => {\n    const inputElem = inputWrapperRef.current?.querySelector('input');\n\n    if (inputElem) {\n      inputElem.stepDown();\n      inputElem.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  };\n\n  /**\n   * Sets the correct hoovering state of the component\n   */\n  const handleMouseHoovering = (isHover: boolean) => {\n    setIsHovered(isHover);\n  };\n\n  const labelClasses = classNames('input-number-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-number-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-number-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\" ref={inputWrapperRef}>\n        <input\n          {...propsClone}\n          type=\"number\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && icon?.startsWith('agora-solid') && (\n          <div className={leadingIconWrapperClasses}>\n            <Icon name={icon} aria-hidden />\n          </div>\n        )}\n\n        {/* Steps controls */}\n        <div\n          className=\"input-number-controls\"\n          role=\"presentation\"\n          onFocus={() => {}}\n          onMouseOver={() => handleMouseHoovering(true)}\n          onMouseLeave={() => handleMouseHoovering(false)}\n        >\n          <button\n            disabled={min === parseFloat(currentValue?.toString() ?? '0') || !!propsClone.disabled || !!propsClone.readOnly}\n            type=\"button\"\n            onClick={handleStepDown}\n            aria-label={decreaseButtonAltText}\n          >\n            <Icon name=\"agora-line-minus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n            <Icon name=\"agora-solid-minus-circle\" aria-hidden className=\"icon-step icon-step-hover\" />\n          </button>\n          <button\n            disabled={max === parseFloat(currentValue?.toString() ?? '0') || !!propsClone.disabled || !!propsClone.readOnly}\n            type=\"button\"\n            onClick={handleStepUp}\n            aria-label={increaseButtonAltText}\n          >\n            <Icon name=\"agora-line-plus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n            <Icon name=\"agora-solid-plus-circle\" aria-hidden className=\"icon-step icon-step-hover\" />\n          </button>\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-number-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-number-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputNumber };\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useRef, useState } from 'react';\n\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-password.scss';\n\nexport interface InputPasswordProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n\n  /**\n   * Highlight the input indicating some error.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Alternative text for toggle password/plain text icon button.\n   *\n   * show: aria-label for when the password is hidden;\n   *\n   * hide: aria-label for when the password is visible;\n   */\n  togglePasswordAltIconText?: {\n    show: string;\n    hide: string;\n  };\n}\n\nconst InputPassword: FC<InputPasswordProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState,\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  className,\n  required = true,\n  togglePasswordAltIconText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const inputWrapperRef = useRef<HTMLInputElement>(null);\n\n  const [showPassword, setShowPassword] = useState(false);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const toggleAriaLabel = togglePasswordAltIconText?.[showPassword ? 'hide' : 'show'];\n\n  /**\n   * Show/Hide password\n   */\n  const handleTogglePassword = () => {\n    if (!propsClone.disabled && !propsClone.readOnly) {\n      setShowPassword(!showPassword);\n\n      if (inputWrapperRef?.current) {\n        inputWrapperRef.current.querySelector('input')?.focus();\n      }\n    }\n  };\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames(\n        'agora-input-password-wrapper',\n        { dark: stringToBoolean(darkMode) },\n        {\n          'flex flex-col': !propsClone.hidden,\n          'input-disabled': !!propsClone.disabled,\n          'has-error': stringToBoolean(hasError),\n          'has-feedback': stringToBoolean(hasFeedback),\n          ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n        }\n      ),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-password',\n        {\n          'has-leading-icon': hasIcon && icon?.startsWith('agora-solid'), // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-password-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-password-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-password-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\" ref={inputWrapperRef}>\n        <input\n          {...propsClone}\n          type={showPassword ? 'text' : 'password'}\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          readOnly={!!propsClone.readOnly}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && icon?.startsWith('agora-solid') && (\n          <div className={leadingIconWrapperClasses}>\n            <Icon name={icon} aria-hidden />\n          </div>\n        )}\n\n        {/* right trailing icon */}\n        <button\n          type=\"button\"\n          className=\"input-btn-toggle bg-transparent\"\n          onClick={handleTogglePassword}\n          aria-label={toggleAriaLabel}\n          disabled={propsClone.disabled ?? propsClone.readOnly}\n        >\n          <Icon name={`agora-line-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-default\" />\n          <Icon name={`agora-solid-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-hover\" />\n        </button>\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-password-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-password-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputPassword };\n","import { CountryPhoneProps } from '../country-phone.model';\n\nconst FlagsList: CountryPhoneProps[] = [\n  {\n    country: 'Afghanistan',\n    code: '93',\n    iso: 'AF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3REQwQzQwNjE3NTMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3REQwQzQwNzE3NTMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdERDBDNDA0MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdERDBDNDA1MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+duaIkQAAAalJREFUeNpiZMAN2BkYVjMwyDIwfMCQ4mNgeM3K4DEFj24GJgaagaFpNAuR6v4yMPwDO4SRaOcQZfQfBgZOCQkOSclfb978/fbt59u3/6li9G+guTIy/EZGTOycbDJyrIIC3+7e/XX0CMgXZIc1I9hcPnstsbzA94ePfH/x+N//n683b+ILNBGw0v3zlwKjIYErGub94dhpJi5u3Q1rtFcuZeYTerNtj3CwJxMjBQECdBaXoRybhCzLFy6eQJuHPW1/P30W9Db9fuMlh6QSt706A8NNMl0NNJpNVIrHyIyDR/DV4UOMivxf3tx/vnM7p4gor5kFh7gs+QEC9NG38ze+3jz7m+Mrv6i2oKGtTGo6v7jOr3/vP1878fXcNfIDBCj39fWHdyt2K/Q3vpy05FFWCwMTE6+NrnhR3PvyCZ9vP6Mo8bEyMLxZsOkTD4tkaga/vvXvt285rdSeT5n1dckaFkrS9X+w9F+Gf8+nrPl9+Q2LkMD/f//+rd/4es8ePoZ/LKyUZZn/YIczMzC8PHgALsgGFvxPeW78D8477BiCw7RQpaHRAAEGAEWfj+c8VB1nAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Albania',\n    code: '355',\n    iso: 'AL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0NTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0NjE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdERDBDNDA4MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMUFEMjQ0MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GPq/agAAAiRJREFUeNrEVb9rFEEUfm9m9nb3bhNz50UMClopRAsFrUURW1tBrSzsLPwfbPwDbGz8F8QiIkLAKiCkUIKiGBEFwXAhd7fZH7Mz83zZtbC4TdyF4LDF8N7ON9/73jczuN4/A4czBBzaqIUmAA+Q0wjQRzkUCsv4USEHKKs4/0DtWOdAgxLxrUk+mqyHIkLx2eg1k1gA3kwDtYFeFOqVnj5NRwXQip7eGG9+svlPV1wff3mejwuiZ9n2i3zCRWANAta1kaFX9OS1jkdkHdGyCt6blMmel8E3p1OgY6iueL2b/pEtZ5qx5kRCLIhMyK4WMQFt2HzdpEzypZ5OnOVUSoT1gqi6BOvA7ZoDUan5JB3BXxPeOALBahigxloLQO4SFy5hBjMOpuA0zc4ebL4OYExuZl0dxNiRh63MZ4jYXjzJiG77/cuqW8UvqvBO0Ge+jjsplKHmgrCIIeICyke9pXPKZ+kvqPCS1+X6T4vO42iJN/YB22jNIo6cYWN9dfqdya560TxKruKaF32w2abVW2VWtNCa6fRQnpTeD1vcD4anZOdNEa8VCZN9EA6/2+KE9Ob3dUit+XbJHRfqXjBgTZjYhk3nUDAQN/CsDJbDYIfcbvlhU+hqQUpuSo6tcstfYMp8q9z1+7+cyfZMuUe4zZGp/GfLxRm4bbIPu4scYbIJOO6EO+hSVf9y8zLQmGxUKrNDRu7HtSH0n+NHrpr8/1fmtwADAEjB+xzEjgF0AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Algeria',\n    code: '213',\n    iso: 'DZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNDgwMTE3NDA3MjA2ODExODIyQUY5NTY0OTkxRjRDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0QTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0OTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDQ4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDQ4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5FFcD/AAACLUlEQVR42sSWQWsTURDHf283dTdZQ9qCVWhQD2JrRCmEaqUoarEQi3c/QEDx2ByqtwgSUTx5EvINPHlQRLRYsViqHgQRVGopRpo2kKbppk26SbO+3UDBk5uY2mEXdh7s++1/5s3MClJDNi1a/daMLaDU5GtBeS/6+AcT7uVu1KwFFXbJmldstwfsXXFdEoWM7P4AGJt0qTqlpcUdBjtQTYUeP6c+LjOd+srKzSnq/RHMWIzNdBpqtR0Aq1Jpt07i8Ryzj74wmCtz72yY4qunBO/edyNRnZxsc46dnEqlo++yPHjx0106Ej9E5kqUGwNRuYMfbeAE9VwO2zQRwWCbFDtqq3Wuzyy77p0LvWTO9WLMm9ReT8Hnb2wkkwi/3zPUm2KZWy1fIbqw5rpv+jply7DoCPdRz+exRy+z4SgwDPREQj4o7cuxsBudYruabGdBQfh829Vll8uN9bYdLmuLSrfGp4ONMA7/kMqDGrVfGQgYKNPvCUxMoI+Py7SobQTXpApdJX26x3Vvv8ywbzZL6bBBx6UR+SWDBFIpqFSw19c9g1VGwsm/NWTKW3w/1gVmlfMLJtc+rGKvWpwcjhFas7CeP8MuFFAjEa9cS3iaTk4D8ctzGNrDxbdZHj6Z53jRohjqRJwZQhsbQ4vHZWR0r2BTeB6LDtynuDVNYYUDpb3MXU1jHO1vpWOa3oeEIhrwrFM8Oku+WqvQFqeT+N/Tadfn8Z9tvNVfH/O3AAMACcCyb9iaq58AAAAASUVORK5CYII='\n  },\n  {\n    country: 'American Samoa',\n    code: '1-684',\n    iso: 'AS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0RDE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0RTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMUFEMjRCMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMUFEMjRDMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+O7eQxAAAAhJJREFUeNrslD9oE1Ecx7/v7l2TXpLGWNrGioJDO4ogLkJBhA6iFDpUOhc6ODiKBUWcBJ1bKLaCIIJOjl0ypDh1rFDQyUH6R1HitaRpcvfu+X0XHWp6TWkCGdof3D3evR/3+f35vp/AtafrADI4yLQGlEZ+oAdCCGxtedC2ADeNvnYXUv4uCl8LOM/1N/eHmeQz2PDV/FcZaAjx3cP7V1PIppO4OvoCyk0AFh3SXEON45oB7+zL+F82P7frSfem8eRlEUnHRki4m3MhCN4t16CNrzg+eL8FCsKr4NHMbfhBiOezBSwvfWIEiCrw+MEtjFy5iJsTc/BTLKcj2wSmWQRcHsqjsudDVJhZf0/9YL2Etwzi4+o3BC6h0m6p1P+JxILKZ3H3/puo2WIwBxAuux3cm7mD+XcrWCt+Bi71RRVoHxj1kiLhRCLSvgJKZQRlibUvm3CZqXcu2xI0HmyMYgKh3Wzu5PQNmFu0uLBMNSdbVnQdbDvxpzWNih/i2cMxnKXb6w+rCKoBO8B47cZ7XFZ+pMGjCF06QTX+lPqxQoXxqXkkuiSkqkEkLSq/euCwSalqBD1KE0Sx9/p27OTiPdXs88YPD4q5XOg7A2GmmW4sszZC5DvH4Cyuuknecqi20zS64czfcbbnxTuZeOhSshPM2IqCOBT8i47ttmbQaFagQ3YKPhngTCfAZlZvdAL+R4ABAI7lqpHANxKvAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Andorra',\n    code: '376',\n    iso: 'AD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUI4NkFBODE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUI4NkFBOTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBQjg2QUE2MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRBQjg2QUE3MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lPUISQAAAfFJREFUeNrUlFtrE0EUx8/ZS7KXpJLNxiQ0biSt1hTFO4qCvgl+AF98EV/9Nr4UP4ePUuijFLzUait5iDZVm2a3NE22JNntzhx3i0WkWmWCoH+YeZlzfjNz/mcGr8McHBIDyYOJj/wRYI+1CocDZCeM5xX9spxjqBD8TBL8Nf0DaMTv8x9K+S1TTo+IVKBAUndpL4OYwtgLwPHRfLCTlTN9d+vCdrueKzaK9hIfGnp5F0gRRB+4Li0uPaRek5ixrdy2e2ZztYo4eWvqiSTHQSiCxm9X1qPGRu51JX+zf7z9WPmiD9VS/64/DLOm7h9dlV/aKEPSuZute4FvTd8AZ/Zces22vKbdXQ0j/V3jQXIuJRArSLIrDlysnfQ6nzpPYXRFxY4FWS2KdF1eS3zgMgqg+f5SsfwK9qZT7gK2AvVOhswoU+lq2C3lXyQxTJEhEuhrHg9/p45mBUxL0izkplEixgqcKpvupSRZ4mM0X0SD0Fmu3T92tmtonBmSu573PXvy9GJSNAIUQidZ2ann52dSAamfvWtbG/U0X6memNero9rM8oEfXPTUGJy6+CxOn3i/3m5fLVdeOrNvgCOkNKD0uA+d+QVEyTnzwam/JW7wXomAy7nwh4clhN4HEGcDE9EkgiMqIP6pEv13/7WAvgowAA7uuJg3MwVHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Angola',\n    code: '244',\n    iso: 'AO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUI4NkFBQzE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUI4NkFBRDE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBQjg2QUFBMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRBQjg2QUFCMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HdsdLgAAAZ1JREFUeNpiPCeoxkAbwMRAMzCYjP7/i+H/XwYGRqoazcjM8Pcb45+vTP++Mf7/Tdh0Yo1mZGL4/oZZ0O+X2dfXonE/vn9mIeh2JiLd+/sdEzPb/x+3mF/0csn3fVWf+fHHR5b/PxnxmM5CjNF/PjKyS/2V7f365w3jrRz+d5vYNHZ+lDrx9c1CDiZmkMU4jebHJQnxFyPD99+Mf34wCNr+Y+D9/3Pa3zdneL7M/CNe8v3rfG4uYMQy/sfU9fH/X5DRr/79wWP0v98MfAoMXwX+bjRjV5Jl/v7230+GH9fXMpl5MrMY/H54gZFDAIvR7IzgkAK6Gg8CultFmuXjFXEfA6ATGXhBIoxOeuxPzgurKwNdxoRDF9Fg6Ry+//8lzMyhehrruB9cFaVa7koK4Xh1UjQ2gFOIj/HJRbHidG4qGLptjsCqSfxARrAH+6tTok+PiGydLUA4yRJjdFESV1Mhz49/DH9+/582/9upy79drNjuPPw7Y/l36gSIoRaLkTY0H3CwM66dyt+Yx02Tgk1chCnAlZ1hFBANAAIMABE9jLBld63JAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Anguilla',\n    code: '1-264',\n    iso: 'AI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzYwMTE0QkMxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REFCODZBQjAxNzZGMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOEI3QjgwQ0VBMDNEMDkyMkUxQTdFMDM0NUEwRTZDQzEiIHN0UmVmOmRvY3VtZW50SUQ9IjhCN0I4MENFQTAzRDA5MjJFMUE3RTAzNDVBMEU2Q0MxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/LHIVAAAA2lJREFUeNrsVGtoU2cYfr4kzdWk6QWSpqm1c6K0NnVOizhveNkPnXW0tUzdiMIo24QxW+oNJoj+qbIh+kNRweCFgsNg7RgFNwvtVi0FkzXepjPudK1r056Yk6RpknNOzr5zmq0w9kMq7tcezo/z3Z73ed/n/T4yuG9PyZa1Fx6aD3vuMj23AEfbgUUfXPrsh22t609w4KO55nTTgsShXW9yjvLS3Xe4YZZAh5eAanbrYOOWU++x3b6mkuOtbsfSivCEBBGspM9zmj9fyPqbbS1frDjKVTqPj3HDIYIcvBzIhx97BIt1dUHCbWYM9ZtjRRXMZa/orlOduWgsmzM39hibar3+5Ddnv02FIt91PkvzKUBDD8rxIdAfIAFoqUr6KQllstRSlR2CyEYzTDQjcC9sVn0ynhwXYAUMZk280Mk/H7VrksVv2NIqfdG9VWExl4CyS85SXqsWUiioXjPf/xMjJEasedpAgK6QKWqNr3jZeCgSFlJVtcvzJ0Imdigs6jI3OnM3rHEudzFdfRFHSX/uHCb6R8agE1Q5EKlSSGDdH1UfOeJODPUZTc8nSYPWUuL1ft+w9QpQPMWtWXy3wlX3zt6dSxZUTKY7bp4M5rvmFbpudT6paexZt7VuD1fq73rQHvz0fvVAzAS+T5FMCyLwKRNgN/7enh58YFhRCOviKN0grxI5NK3OmeYlvk3xHQOes+82VX3S3XLAn/QH7DboRga3l+9ftPG057Fh21rHz5ujx3Q/ag1JKWtjTlyg57uTBaszDT2pgBejh8ITdN70t40aa2j0q3PX2yLFPnY2xAjAXu0lv45X/XKbg1H9sLd/V6/v65qa3SsXmnW/qcVJaoEiioxx1Dq9/tF58BzsldBPDA/FaUiiSIYi/n3ay0oidCBnKiENFAGjRDZdJ8mOhxU6OikSpSskpErLdMHgl6qBNhhssFXC8pbL1RwIjBDMyqoGbJSOQK0M6Xm1ootD9l5kFE/yFSVpklVDYWCeBeuPdYztbXnxBBYLHJ72QOA+UDbdfASNmBEkWf6I+dr+WO1Kdf9T9YZ9ac5IYMRfBVETvD0zaqV6mryO/nKeSR3siIV4gLZ8ZnrDjFVPKZOQVJywALOIfD+nocErgbqaI8lu4R+8r049beu/vHx4bfif+r+j/lOAAQAGyVcqpoR/+gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Antarctica',\n    code: '672',\n    iso: 'AQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjAxMTRCRjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjAxMTRDMDE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEJEMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEJFMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SFAcWAAAAxRJREFUeNqkVutLU2EY/52zc7a5i1te5r2lUFpiYl+CMsjoQ/QPRGYFUZAQ4WfBT0VEn6JPBSFGQZcPCQVS9EGswBAy7GagYuqWTp24zTnnzqXnfb3g1M3D/I2Xc3nfZ7/n/hzhWFu/H0AxrQgMQKCl6iv3ooBM4KT1T1q9wYZrSpglAdPhBOYWEpBNIhaWVDisJpTkWECP0HXj5JLRk4x0aCrGSW6fK4fNbEKQFOgfjeDZpwA/k59tJkVEUkLYUYktxEyAyZiElesaZiMJePOsaL9ehcrirPX3jcc9uFBfgC9DYXT0BDAxuwSJhMtyrSSvp1QgiZjFLKHp5EoFbrsEC1mprQpOhxK4eqooiXQNdfscqPXa0XSiAAN/F/DgnZ97J0sWIaTIA3HjQ5AIj5Q70XK2FCOBGCaCcVJGgErsCmVUdak9pevYOSfFu77KhbvnK7ilcUVLfX7jg0wu+u2PorHeg+62WrLOhl++KL6PR3F0fzb/UyPw5ltQnm9FlJLPUIxdNoksXULz4yE8v3kQ71sPo717ir8/XeOGVRYNEbPkysuWER5R+XW7OCcRM5d66CCz8ill6kWK2ZWGwoyKleVLLK6thGob5i0mOCwmrkDLk2H8mIgiUzy6dgA3zpTAPxeHvlOMGRQiTSg6Th5yo6bMjt2AxTkcUyAaIWZYXFbTZrBRlOSYqSxlJFTdGHGh24y3X4N42TuzK2IrdTdxUyNKS2wngRC56E7nGOajSsbE97t8vP5ZuzVEzOJc4JIRW9bQ8TGQEennPyEM+haR45B2LqekDfJRrlPGvTfj6OybwSUqLYlGEBsKFR4r6qjDsf3qUtu28rdej2FZ1aj2pfW2a4iYHWajjpGwAdH6YpT3XUau0eYklcnlhiJ0NFdukX34YRI/qRT30lDRdIPTafOkYnBT52JrDSxLbRYRTdRaN6Pr2xwNCR/2UDZLIjIjTteVPC4zXlHW99I4ZF4ZGIvyidQ3HOFxZUtR9bS9OrL69RExSszmLfv1DM4jtKjwDyI2YLLMIrnXwi1NQ8q5/gswAJWJHoEWuWKnAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Antigua and Barbuda',\n    code: '1-268',\n    iso: 'AG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjAxMTRDMzE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjAxMTRDNDE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEMxMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEMyMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VJu1tQAAA/pJREFUeNq8ll1oW2UYx3/nnJyk+W7SjqZZ25VORjvQSSdKLV5UL0ScugsvRKs4FCui6C7aiyHaqw0KMnFgy/BKvRG7KQgiDmGC1SGb7cZWW+0Xa5uadWnXNEvzcT58T9qUpk26gOADL+fwfP3f5/k/73uOdNThn/82vRIGVvl/xPuk3Rthpqol3qQ4TKEoazkdUu4Z8Mlm0C8X6MpZtbJqjgWb43KVZGPAU3fPbUrS+vOxwyqhKpnWB2w80qpS5ZPoeFgt8NlN+r11NMgqtjE9xRN2D33uWnruLpQMOHxQJbZsoCnQ1elCy5pIMrS22Lg2oRGulmkIK1y6li2Zo9cd4hm7j2FtDZuMxJ9airede7ikJTmfXtlRqSmadPlGloEPvERjBm1tdh49aMPQYGRGo0Js5mi7g9c+jBfEbJWn7F66Bca4KNRqjPRH4EBcx/SGRPmWb8edCSb1TEFQ2yGV/XUKlQGJMyf96CkTxW4xJqGLyhWXxPH340SjBpFFg58vF8aHRe6LlfvxiBbNG1kUpFXZMogXIkIRkBT6i/D929UsITXFma41sdUoinsRtFugb7ybUU6/keSAP7UD1JJPRc46AT67DprT2fJGVShyfCsV9Pkb6fH5IJXGoWjsrZH4aVHim2kPbX4b/9w2NgfJammNGLbhWY3vFxI0HTKJ3DJJZUX/nQ5643GOKE5G9HQOIy+2rTvL8/1OZo3f208w+NCL6LFxsmJwkm6ZznGd5K+62OW28RXtrggoNLygoK0Z6IvCp6qZp6+ep3uwh79UkVlRC2fH4tg61HmFLkoJJVcwZIWO179kKnw/RKZzhJQnAjTUQO3tKS5+9hKedIKIO4BSOG3rHG8Vy8FyDCaXGPi6G+4KDt0uMBLCmtx9WT7OCsgk6B/spj4+z5ynejvoRneLiGrojAX38fjCFfp+OAWBPaIQwcqaOD8pvfiybFmRLlhD74U+jtwcYjTYKHJpxS+k7a3Oi7geULUMjtVpZk9/jue9l8lOruYujWJi6ibqfT4SZ8/R0PU8Gc8+0vYKpCLVWq0uCbzOt4yyFKWpyoV/+Beob9yd3liU+IPtTM4togfDosVGKc9Vebc8VqBUHeZGbJ7rz3bec6xGn3uF63OTIqZ+N9DSHBe2MIsr2MKdkSGmu94t6Xfz+AmWhn7EGWjOxdxL5HIOiImBy9XIwtlPiH3x1Q778rnvmPv4FE5ng5gas6xDVxawdT3JTqe4bSqZOvYWqdG/N02ZmXkmX31T2Hziznbv/Dr8J2ALWxwxe/VesvoSE53HNvXWeyYREbb6nE+5Ytv45fGW8+uT53tleIjIyY+QXS6Why7gLpPX/K+PhfWvAAMAKo+tOTpRNSkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Argentina',\n    code: '54',\n    iso: 'AR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMzA3QTc5QTE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMzA3QTc5QjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEM1MTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEM2MTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VveEGAAAASFJREFUeNrklE1OAkEQhV/3DD8ODEQgxBBXwIa4YMUNPIJX4VK4NN6BxM0k7tQYI5FkMgzE4U8ZpttihAN0J9ALqlO9q3zdr+oV6w9evwC4OHHYlA0YCE45NwXGWYFtP9poFbL0oltKSB3wbaeioROHlXEIyOhIiHgFKYTaw6WUkZadxDfwswAuqJSV1BXTAW9mIwTePeLgGZlqB7XuHXK1prKPlSL5XSJ8GyL+fITLX7AYvSMsXKNerMPOF4841ek87borYKXVyb6/4rg/trIOqq0egugDoe8h17hBpd2j37qnGq4psKJSp0y6XaoLN3jy1cGMg5Od/t1MPt6uSe5ETeoHbwLdDcIOYI0NYl+Vs+e1q42CXRPgnY/HJuB/AgwAxP5dJ04ev60AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Armenia',\n    code: '374',\n    iso: 'AM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMzA3QTc5RTE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMzA3QTc5RjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMzMDdBNzlDMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMzMDdBNzlEMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WDHK5QAAAF9JREFUeNpi/M/A8IlhAAALEPMOhMVMDAMERi2mX+LawmD8ZyAsZmRg2P9vgLLTO8YBsvjvCEtcA2U30GKx/wOSqpcm2/weEIv/b2b4PzBB/Wy0rB7++Zjh80BYDBBgAAfmD594ReJrAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Aruba',\n    code: '297',\n    iso: 'AW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzMwN0E3QTMxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzMwN0E3QTIxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQkNEODUwOUZCREQ1NjMyQTZERjhERDI5ODI4NUUwNUQiIHN0UmVmOmRvY3VtZW50SUQ9IkJDRDg1MDlGQkRENTYzMkE2REY4REQyOTgyODVFMDVEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5hWk3QAAAbxJREFUeNqslM9LVFEUx88597wZZ6wZmRITxBJCUhBahjBtWkgbd23aBEG4EdrpX9D/4M6tuGhhK0FwE+hG3UkUZASRYDTVzJt33497jvclUuuZe7jc5YdzP99zDy6v76lpoIiixAXXjDOICgpDlCIbl7CaptANRHEq92YaFz8SZ3NAHAYtaBCIQAuP/W1dWq28sO+qEl+kvu0MIB/4oL/VEZRs5UZ9iT8tbr9p945Hb9/M0cDQZaYerdydbq1Ge8+31/4cfWvbo/mF8bOJue8/oYICg4lBIi3M/OOXSc7Hyfj51Fw7Odx4+HprdKnXzUCcFz6g8r9o8sKdLb7GIzutJyfP1t5PP/3YrdhUeGDudVE5ZYQTlZS7vzZby7niZBQjoQ7tmq8nESLQ089pjdSE4P6HLl8vdcoAw3D/oa/kI0LAYlUSLbMMCFUfoRKfx3dyvVX+n5BoZu3hwe5is9F3eUgXZLSfRPylc7+WFU4kWHw+NINpinzWeRBZFicA4Rr345sW+GF/dqzZL7KQs2EM9Czzq523Ak1AG7BrH6PRmOsjhZBfq960BEMjsAOuakfKjS0aUklE0L0UYAA5i9TZQeWJxAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Australia',\n    code: '61',\n    iso: 'AU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTgwMTE3NDA3MjA2ODExODIyQUY5NTY0OTkxRjRDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2NDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2MzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDU4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDU4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Y+peLAAAD2UlEQVR42uyVW0wcVRjHfzu7s7uwOwgIFLA2VqjKLXKL1fjQ2DaBah9slbSp8qD2ZiSaStTG2AdTTBOrwagvJoZISWp8aDWUCjQ2bYgUGlCC0ECNAi1QspTLwnaX5TI7npkdKJZNQxMTE+OX7J5zvpn9/uf//y5r094tH6Y4V6kZyuZItYex1l4FYafKYnxF377Kzy9+QfFXquHTrTKr17dvfxxaYiHKnkHF758VXol7NcnycVzqm7vOKbtu/qj8/oZXOXq0AGd+HiNBWSGE4rHep9hT0vggs5/RIz72HipQyj3PK9LxBAE6FSFkCIfDSl5eEi6XbJwjArtcboZKyqgez8He08mh5+b4o+EJtmQ7YASeSpf5s0Ll8HvriD74CtWxO7nWNsALzj5kmy6EdkfIABkZ8bS2vkRh4RpxvhUR2KI9yDTzKOJb/MYSIZBp7hgRYzq8T9GvbCXuxod4tXhx8C97URVMneTmJtHdPcbU1IzwLaYjakkB28ym1/CMePHNyzy29XHk8T5xAUHVLxifPAU7tsOmTGjqZCFopzcxh2jvMG67hPqDkHJ+dompCGcE1/Pe3Nwr9tEG4Pr1yQQC83g8PnG2hoETv89RHjlcyvu748lJugIN7VQOZJK7wcEzdadoKS7j0pNFvLX/Fraen+g/PclHvi1cnkgWoA0moExaWiqTk0EmJvxmcD0NC9hsAS5ePEBT0xClpTXCF28AW6s/faf8y+xfHZnt3/HN243srpY4WRfFvoevsm6wjqnkAna8fIWac31EJ6SwJ2OUvbEdPNp9iTPjCuqc4CWI9fe/LiS209j4yxJTCBIKaXR2+jh/fkAwnjVVsWBTrvXx+Sf1fO0vpMu7WaTohngwTFWLhebRzfS1iAAOjYG2bg60XaVy+1YOPr2BVHst0rzO1s3cXIiSkjMMDuo1EGNKP0N+/kNYrVYuXGgXZ5f5CefY4nJ9pvn9etKnjcLQZdNvGt4/gFHahi0WxrTJJtkIHn5PL0q9texmcNUouG3bspFlidra30z/bbOFF7Najdws4BYVHAqppKdbuX49BlXE8flmTMBFRsvbRFvmV801hvr6HnOvrOjnCCNHxWIJUFVVxNmzOzlx4tllCqzGLCbIlKleVMQhIkWaPLGxkhgC97N2rWKsiYm2ewBWcTplCgrSjH7WFYw4uVa6ZLzeIMeOXTZaoKKihbGxgJm/1ZifrKwE2ttL2bgx5Y7h8jddjmsrpVoQ1SiL3AaRJIeR73D+tVUxdrudYlavoavrpiDhv11Kd2f8z1hHh+fu/078S/Y/8H8f+C8BBgBE6FYFFd8qlwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Austria',\n    code: '43',\n    iso: 'AT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2ODE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFRjc3ODY1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFRjc3ODY2MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WaOFnwAAAGpJREFUeNpivCHH+pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERp7FLL8e/R4Yi4WSAgfEYsb///9/onOKBoHPo6l61GLaZafnBYkDk50uMjAMSHZiYZdjHU1cwzxVQ5s8vHRu+nwGCDAAxfQUXKOTRMkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Azerbaijan',\n    code: '994',\n    iso: 'AZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2QjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2QzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFRjc3ODY5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFRjc3ODZBMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D6YUmwAAAZJJREFUeNrsVb9Lw0AYfXe52qotVYp0clI6SEFUdNBJERRHXdydBAfxLxCdu/iXCCK6lKLFOjj7B0ixSrGJTa32R3rnF+KeS5YgeuQl4fju3vvefXfHcHZvI4ImCKkoiDkian+PWCCbDTZCKcAZkGTSbITXLdZLJf8o5j4C8sOGrNZhTE+CJRJQnU+aYchVE5iYKeSU3oo0CX3g5BRIJIHyHXBxS301wjghmABh8bR/lBzAgYnM1Tn46iKaC1uUeYv0JMFSecimTY4QMWf6xeXQWvmhh3cYM2vgmyuwlvfQfqyga9cQ29/B2NsN4scH6KIOh3h15nOhWR0KTAjv76tDb8PrHo6TZxxsJO7aEshq1uBLvtGKrJZ4RaZ8CZ6fgjm/AVVtg/FRsIk01HOdZnIr0NAmp+Ka0ywu0/sWCpQcEVwXgWKF+p4IGTf9n6w1M94+2tWSyBCDtC3IlwbEbI6sH4K0TG87sRDbCQ+HKkg4JGXV63uHRywWag97J1e1E/LscW11/i+J33A7Aa0oiL8FGAD8Y4eRaTQ3EAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Bahamas',\n    code: '1-242',\n    iso: 'BS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4NjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjk1NzM4NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3Mzg0MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3Mzg1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++Dx9hgAAAetJREFUeNq0lv1LU1EYxz9nG0xplxppL5PobZawXsBlIAmOhAgJk0qSJc5NakH5Qj9EFIFY9Jv/hn+I/4S/bJSjaTktF9tiL/fOZ94GCiFTd77wwD2Xe+73nO9znud7FD39aeLvDIJ9sPETNiWcLnRDSVR3np5MwtgruHgVVpJQyMkCnFqJ/0gYOyNvG8TewINn4JFXKVlApQIOh2biOrpuQmQWBh5C8S+spuRLZYdW4jpqxJEZuN4D62vwO9O0/O9PXMfYaxiNg+8SJDYk/6bI/2+2VuIaTvnwxKcZDgc43loilchTrlRRDqWZWNAiMXLXyaePlzkfOiujMnyXM1AjVxqJd+PlhI/5D37a/Sck/zmsnIlyKf3EdUTCHSx8voLXcGHmzYbnHblAt7JlrOrBS+3QtTH6+DTz7/10dp+ETAEzW5RKc+iR2i0xJCX9Ze4C/sEOGYm0a4VDadf4jo8ZuF9M4Y0FWGyzWFnKUypb9onWVk7D4xAWA+m8AV9/QbYkHUxp7Fy9AzA+DbdDQiaE66uyQ2dTevb/pT4nrTEqLjX4FCyRM7lsu2cTfXrvn9wttis9ikL7GfHlhDSnor1LmudMey8C90dsWQNBSH+TBGxpvghcu5Xm+VuDO/cgl4Ufadv4lUIntgUYAIDGhVXvTDlFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Bahrain',\n    code: '973',\n    iso: 'BH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4QTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjk1NzM4QjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3Mzg4MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3Mzg5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+B1d5vgAAAOJJREFUeNrslbsKwkAQRe/GPCyTTxC/1spaBIuIqKCVlR9gJWovKAhCwCT4SAI+4q6j1tGQRNNk2pmduzOHyzAhxAkRcd1asFsm3M4Q/nIKCSo0owIwBgiONMFIWMQpDGYL2M023O6AHslgspJKWIpbKBs6JJXE4v3ze79Pyct6A6tWx2E0xtlaPRcETadVl2jVnP9wYmp+9wOE+yM4bu9y0kQGQxeMC8YF4zwZsxwYN+hg9IgxlP8yZpqKrCIZYyn9WUzmYxQ+TsbYi0qGO+c1oWP24c0n5CKBsl7NxMcPAQYAXoK9LDclUq4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bangladesh',\n    code: '880',\n    iso: 'BD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4RTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzMDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3MzhDMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3MzhEMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oE4gsAAAAkNJREFUeNrEVk1r1FAUPS8vmY9M2tJSpG4q6kIYu7LUTXWjG1EQCuJOf4Abf4BuXIi49Q/4A3TRXRfdCK6KCC5Uit1UFxXGQqXTZDL5ep6XpOCAM8lMBnzwXiaZd++59+S+cyPw6O4x/sMwOWfGthKcqjpw8dAgBmeDi+Q1ycEFl5A3fZXtEdME1iBNepQCq50QNw5jnO8liPjoiyOxdcbEjwVG4xM5VKXBzUJQx4BDp68/uLh3EOTOc+9KIWoaeHmhjqeXmxkr/XLg5kh6mWmTjnbed9HuRFBzEl5jcFuLgTz55GG5p/BwzQZiGsbFwMbIf0jvm48u2r8iuKTT+8fuE0sgmDfx4JuPx7s+YMtShTccmBRe+RnizkGIeFZqVocWeGBk7DzbD1A7YbqWqJbx/cMopa0nR782waCCuoE5N8ZNsoP6pMDajvaX3CQ9PqIEdaG2YZAr2kZUoXq8Y1nOYeE+ldX7nm2kWagSEVh6ITtftU2l4iJjbxfN1FkjKRa2Wj+By4re1jaBqgDsJ9g5a+HdkgXzOB7Ke0qOXjyF58s1+LNGJjITA8eZ141VG9/nJVpHcZr5AO387UQKjaMImxfreNGmuvRUxVrQANTk33xnV6/PYOtcDZJ0Osy+xcpNp2aCwbxasbGx1sokNlRT0GoN3k3QsQVurzu4RkG5xXN62iQ+s0lsLpnYW2Rp9fMuVbKsBT8EikM8bYtUs/Qa5UFRUkGqdT1Mvy3+3fi9ZPCAq8kPvQbujq0SFb8+9PgjwAAqQMkwoAhtcwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Barbados',\n    code: '1-246',\n    iso: 'BB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkMxQjIzMzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzNDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjMxMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjMyMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gU/BiQAAAf5JREFUeNq8lj1o1GAcxn/5bLy0l+v1esJpUcshBVcRREEo1MVBBUFcHJS6KAhS6yDYdqkIuhVcHQQXF3Fx8wsEB6WTWpGiRfzolaPtfeSaXhP/uSo4SE1qzj+E/PPy5Hny5H3eN1HYPRYQoRZv3190tlZ1Kh1/xtue4i1Zax1nTzpR+HSiV1oO9S+YICqZGkM4SAgTWzjR2pzwqhhLa+Bo631bhU0FthtgyLlHZ/pdg1dvGtArMdFkrM8EKzpd5HB9mPWoTpc5NJiHLpWR69+p1H1ePuwX9yqP75bodtLJO97TbzI8WebCxDfYovJ+zmPmk9dyee3mPKeuLjCw00xe2NphcmM0y4Mn1db8Dh2wOXywEwoG9x4tMznSjTVgJS+8Ku6OH3XIyZyWnlXJ2hqOpdB4UcPJ6pw5kYHwDSQt7K5IercZFMXh89kV0vIAmbzOU+kLWUl3n0HT9ZMPVyDBRXgH96U4ffEzmS4NX66n7pSZOJ8TJgW/beu41GRob4qx4RyZTo20rTJ+rocj+22Yb4JC8o5btdCkWLS5fKyX13Mz1Go+V6Z2wVsJXKkuAKNNwuEmUlmDr3UKKRU33Di+uLAkY7b0brsc/6qPHrcu5df7MMlKfIrNCQe/pSPs/5twKOoF//R9i3ObkhAmtuPln/hgA1FJGZF+fX4IMABjOotaoebfVQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Belarus',\n    code: '375',\n    iso: 'BY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkMxQjIzNzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzODE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjM1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjM2MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bnsnjAAAAapJREFUeNq8lc9KQkEUxr9773i7ev1LKCiVEJggGAW+QLto52P4Ar5K65YteoGibRC0aOGuhPAvpphpps7915mhV5gZOHdzF2e+7/zON8bu42O4fnlJRb4Pp1rF8uEB7+024lB7GB8MSl+3tzAcB2x/H/50CgPqjwnDWJnU1EomwbJZhL+/0HGY6bpg+TyE1d5kAvvgAJEOxZHnIfj5AaJIzpj3enqsFjYLi8lybN/eYJfLWhSzTaeDz+trOeNwvUa8XteimMkPzXjv+BiJRgP+bKYFLtOpVJC+uIBdLCJeqyFYLPRQHZC9/nwOw7bBx2MIyrUoFjSDVglBIMuwLD2NZXhQYpmJBFghj/B7CUveSG0x3u9j/fws12g7GiBnpSNOW52AWrhZxDl23a6kuegUcdc+C2/6CGOu4sZibwutFsLNFsnaJZ5OutbjFbmdU0y1UBxSiRnj/BTu6z0wpT8bxXAZsRisTIZoppG/U2QeHhHdGqgOVit4tL/CatAF+HD4n2fqIzMlX6cgJHu3FCQx6HglmF0qjXLNZiriHil2KTpLFCjqG/8JMADgr5w+bkv5NwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Belgium',\n    code: '32',\n    iso: 'BE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM3RTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM3RjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjM5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjNBMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dCOj3gAAADpJREFUeNrszTERACAMwMBQS/i3ggVQUJBAJ1iSOXffgE2hPSi1OpmTaJcv+JSwsLCwsLCw8PuOAAMAnCIHFZwXd4kAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Belize',\n    code: '501',\n    iso: 'BZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM4MjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM4MzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RkYzMzgwMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RkYzMzgxMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0XP2EgAABMBJREFUeNqclmlsVFUYhp9ZO2uX6XSmLXSvlUUKlEiAxMIPSNEYFpuAEUohBjEklVg0BkyI8YeKKIkhyhIkoig1RqIQtBgggIoIItSUsg0dpttA29nuTNvprJ62/PDHzNB6ki+599xzz3vOe77vfY9M0uZ0A/ki/IyjyUREYnFC4ejou1olR6mQE48z3mYU0aNsKFli/E9HYjCBppDLcfb7cbqG0GuVlBRZiMWjdPS58A+Eyc3WkW82ir7YeBZhlFGzX0oFigBkOAT3+9HOncO8pcWsnFOESukToSYSyeDEtQ5+/rGF2JU2KDKBNg2isVTAfhkL308OLCjENwC9wzS+tZotdWYU4bv4w2l4BwbRaNJJV8UYRGKqpYatey/yyc4TkK2CTEMqcL+C4sXbxENawsMcGgY3fLa7ntfWhjhx+SgOXwQpEOCGdJ3Wvht4g0oysfBL29dsq11CbmkJJ4+1gEYsWqVMBhySp6S4a4D1G6rYuDLG3uOHmV1YL/6Qs/tWIx3dNnr+ukTTT69wwXeJ+eVr+fiHj9iwLIsdb66ADs/Y4pNNn/SLO0DejGJ2vVrNodNHWLNiJwU2O9Lh71ho2oC5R4dVZUajkHGqYTuhP+xsEmMONh9g3Qs5TFlQCf3+/wMcpG7ZTJzh38jSVuLe/yWdzctofLmEGRVV2Nqvc+r23xQs38pzUhnHNz7LreNfoddZ8UZaWF5TKvIjPEFgUafodEwrN9Dp6yLDVIhVF0aXbeRq81Hyez1srv2UHYuqWe3T45QkrroHCTp8zCqfg8PdyfzpQhqM2qQJlvj0I2KwUcMkk0YkUpSpBelY6jYTtC1huO8B2jY7GUVtzKoqxNHWTe23e8gvnE/B5Dz6B/p42HsDmSaAwpxFNCiNVce4gBE7HhECkRxGlRaVTDHaay0uwzC5jEBcgV3kZSzagyl+EkPxG2Tn542OkUJCZAL9lKSnjYrJxKhWCqBAkF53GK1axX2XfaysxTxKUUqKaTMZMsymzbmGSOU7IgfUyKKPyBocYrq1hF5/nLhbJJdKMQGq5WKrAwPcc4SZ/aSZm10ebN47nLv2BWqjk32/SmQ+zEOWWcGHbR7qp27BJFvAqoVbuGK7KEqrhDMOoXY+nxCTnMTalFxAZNzudrH9pVpuOc7T4bOTqddgu+cnquhCX3EBq/UmaQGJVls7ZqMJ31BYsOJlSlk1De+dx+UXqqdTJxSQpNKCyYDzmp23D55jT+Mqmk5/T07ZM6x9+nW8D11kZLrRG/R48tSEdQbUFg9/tnzDorlVNB0LcPv3VpiSN1YhCV0umVaPWNKQoKt3kKYDDSxf7KL54ln6I8OUpi1GKc5eJo/Q2n2HwtxhXB4HK6qf5+ylSaxctwssYkqdIDKxVY3DJLyD4PTywa4GNr2oJx5yc6//LvY+G1qlgSdyShmOD1GZv5Sthy6z+11hElkawZg+pUkIW9yX2hZHwEd23v4A3bxK6tbXUJzvo8KcLopOTjiq5/Q/fXx+5AxcbofJGWDQPN4WVz1Vnxp4lHXZaKJ39vlFeCm35grjNwjguHj30OOSyM3SU2BJfyR8j70J+GUenWXCV5+QULZgaKxwNWqFcD85E2ijV59/BRgAi/3kZlc/4VIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Benin',\n    code: '229',\n    iso: 'BJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM4NjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM4NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RkYzMzg0MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RkYzMzg1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PY+RygAAALJJREFUeNrslkEKwjAQRf90IqgYFNx5nN7AA/Q8Hs5bCHUluoiLasmkU+hCEKQ1GDf55DMJBF5mQsIQDvsawE7t8EnPGeyywak8YqPR6/pLWfXZDBO8xBSyBf6kDM7gn8mM3hnUpMMKsBLQQxKB+9ooSy4suDOk5Zgqy3iwZhoc4VZtg3UtrnOOSThMztjXhn0T4CkKzJPvuFiLnkG9oPycMjiD334uN3QfLlX30bM6AQYA2ssuTyUvY0AAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bermuda',\n    code: '1-441',\n    iso: 'BM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDJFQzM0OUExNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDJFQzM0OTkxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNEI3RTM0NTcwNkE3OUY4MDY0M0U1Rjc0NzJDRTNGRkEiIHN0UmVmOmRvY3VtZW50SUQ9IjRCN0UzNDU3MDZBNzlGODA2NDNFNUY3NDcyQ0UzRkZBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iROkEwAAAwZJREFUeNpifJaZJBnovvS5ZOPyS7d37GJgEF9RoRM+L393bIfbpK8M/z6JCf7OkXpZGyj3T1nzZEUD67NnjAyMDEQAJtnpXwrCJnnfXH82jre/L17exuD9D0aGvwwfmDnFlHmLVR+djmKszLZq4XHUXfv32/MXfAzEApaQZK83kiJb+D75375QEB2YVhj0YMnaCxMZtJX5j02WU773hyEkbtdb3quTtur+fCnIwvbr9w8ijWb8ryvK8Ov/88//n3z/x/D+vSgP249vv17/YxRg+M/FwfRdWunns+fCv74qqIoyMDOdu/7697//LDDN/xn+/2cAhQ6ERAsolvMSpi+ev/4pwGQQ5cDx7B7328cfmbhfbN8n5OIgbaZ5d8cRRlGdaxLqd54/FWb/x8B0hOXfH6ijgCYyMf3nF2SVEP795uP/9++Z/vz+jxzWRteMm/y7WVZvUciP5LcwnulQdDWxSp3j/4PA1NVJ0yS27dQujv8po1goFubEEPz97z9eBqj2Hwz/hTPSzN69EZEVNX14Xaqr7ytICmE4S121S5LkF/atcyqWn5/6TPrLR97e4p/uIgx7H7+PVWnjcRErC9NPs3mySPb55q1XfnFx/Pr6FRoYDAwcsgoXX93bc/uL4VsGNX42RqhnoID5gOz3L51NO0+/PvWcUfb9Zds/111YH3LcvcX4/z/L25siN9Y82byFlZXXWoLR8urOr09e/fr3DxKm/xgYxGRVbn260PqbSZ5ZyPL0/tdnzjEjmc54HExxMzBIMDCwgdmPGBg+MjDyMPxXAKv6zcDwjIHhMwMDOzD4QK6F6PzPxcBw28zgWoArDzfXizdPtLefMjpz+QuSq1lYwZxfYBPhPuVkAKZshrtITuAAi/9H0gm0huf6lSvSzx/Li4vdemp54y08qUCNxkyOGAzs3I8MDNLf/1fc+3Xlx1P1l//5GdjeMPxmRlZxhrhcixUA0zUwDLmYmL/9+/sT5A/UdM1AAQDGJzAmPv4DxigjE2YZwkAzMGr0qNH4AUCAAQBpbzCLqENWxgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Bhutan',\n    code: '975',\n    iso: 'BT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkVDMzQ5RDE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MkVDMzQ5RTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQyRUMzNDlCMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQyRUMzNDlDMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QtQgBwAABGxJREFUeNq0lm2IlFUUx3/3eZnZmZ2ZnXV3dZ1cV1NTNGWTfEkj+lD5QoJZRBlI0PahD9kHicwPBX7ID0EEkQgZC4UaimVipSAqkpZFZUQIEpqaq+bLuPPyzDPPPM+9nRmF3HxJN7ozl3nmzpzzv+d//ufcq/Lbp54GcjKL/F/DyLTlPUKhL5q0tyXqd2QpffXn9NC8KnmFKBOiVfyadUvWqsgitMawmg3Btxpva0j0h0k7Qw9DNUKxjUcUBQKdxI3OYixx6bQ0gENtY3UmsAc8ypugujcC2Zt9l+I/AEfCXg1ftXE5ORNaekhXD9Ps/wiVU4TFk5h7nqH6y0XCD88Qnk9jD5fNxsRUM1Rgg9JV/NT9BJm5JEfMI5bOEYs/j+cV8YqHaQ8PCMULKH61E109Q3x4GePEG6BXEjEUkiWfEU0EugmVe5xE6zhc28VNSl7joqT+FNbdqyit24a9ZxOxYQqjBsc4pIjrTiy/H6dV8tc+hlqpjHduP8l8QaIei9V/hONr95E4cwwnnYRL57EctyHuv6V3J+pVElHwJ5Z3TD4vCW2iZL+Am27Gbe2m8PlWLi+YRXjiFJlpPWSXr8KkpFjCUEDNECJWok5dQZeOEYx4FpUcjamcwD7+AeFADR7toyU7EffNDQQLe4m8Ctn7ZhDLZKiMn4T+Zh+MnSBUmTsDVgIaRprauDWYCS+jpC6V+IiOLCb4+Sjqwlmc0Z3oHduwusfD7wcprHwJd/RY+O5r1MiuQaC3Dyy0mpZZmCkrMK4Ph3diZafhTF6CO1l8FopIq6C6YzNm1xdSZpJBVcMLApyuMdDc3KD7joClyYlNFd25GF23//gN9Jq3Jb3tNM1fiJ46HefFV6jt3IFavxklDcOM60b5Hk5CDHR0HegtgEVIutTQnhXmG7KoZqdiylL/TQK0dj/eutXU3vsI/cBBatPnYIZ3Yr22nPSDD+NLvVZf7SUmYjSx2A0RnBt3dMlfbBSWKLimE5TufQuGzUQf/xV39lzaurqkPF5n4KfvccIaZtl89IyHME8tI7PgCTJif27Jc0Tr38UaM/52gBWWqMaUT+Bncqg5feiO2Wg5t6xVvQRPLsXb0ie5/AR7Sg92W4d4kJq2Jau7t6MP7CbvbiQzbxGOL4J0YzdN4WBgyYexC4Q9T5PsWsHlQx6qKo1h+zr8jZuwOzpILu3FLuQJ9nyJlUpd4agOMGEyqlSgvOIFKqtbsWpV7LqwtL4F8NXz0mkPKA/kiH57BHfDp6gt7xD5Jfx4gihlk8mNomPiJE4/tojo4F7soIpJXN17JAJKpoQA6VCVUuP5nyU0GFhEp7JCZVrhH3Dxd8n/j64kCKU2R+awrTY56qQ8qj5GWl9FjMK+97HPyxFYr9NrIzLy7LoomVe+3xxYFQ5NK+i8SVc+i/D3aWy7hqo3dcu9ztDUW18sjlUReSeSN6XxNkbRCX7QRW9zmI5OmmL9akLMbWz8ut1a9RuFrOUvQCZ7y2j+ZdRvOsW/BBgAmn3MQYJZCMcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bolivia',\n    code: '591',\n    iso: 'BO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkVDMzRBMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MkVDMzRBMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQyRUMzNDlGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQyRUMzNEEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QnwfiwAAADFJREFUeNpiPCeoxkAbwMRAMzBq9LAwmvHnNbHRABk1GjdgYV+iPhogo0YPiNEAAQYAm/kD5VlL/agAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bosnia and Herzegovina',\n    code: '387',\n    iso: 'BA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MDZBM0U3RTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MDZBM0U3RjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwNkEzRTdDMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwNkEzRTdEMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PElEFQAAA31JREFUeNqsll1MW2UYx3+cnpZ2fMjYhyJj42PlS4tRRyLbpIVSyaJXM9NsQ72AJe4GF+PXmqi78MpEE73AmEwCiXFT44XxwmWBjYgj2WBRKKWTfTAwhE562roxOGy0x/ccLcY5J7R9knPy5rxv+/T/PL//cyoXFHRc7+7exZo1Flyu40jSfdy6peA/8SnV7iuovgIwxUk2rFtmOdbpZt+rrWzYEBHfrxnP5bVrbTl79nyH2WziyJHt7NhxP591zdPQspHvu9/hsaZfUf2pJb9bSMHgTVR1iVBIobAwW6gu4aUWK7+FVB5/+i38/VuwPjwDMQktjYlls1kiP99GOByno+Nn/H6FvtOTNDXlcEPdSuNzXnq+fB/HzsuogfQpl/VbPK6xfn0OgUCYwcFx7PYiBocOGAe2Vl6nxtPOL30fUl43mbayS4nF0lJMAGYW1zoWFzXOnQsa6kMzfrG7kQrXG4z2Fy+XPS2KE5GRISi0ymRlWUSpv0KWJdoOPEpz8yY+/kTF+ayNvq/fxuGaRh0tQBPKM1JVnIjMTBPB4By3b8eJRMJUV+fj8ZTR9qJE+PcFap7y8lNvKdbqGTJSUC7f+UDvt8ViEj9AFoljdHaOcvFihN7eSZzOXAGcneb9Xvq/eY+KuquoY8n1XP6vDU37E7jh4VnOnAlQUbFZ9L3N2CuvilLZ8AqB0x9RmWTye9YqAZzNto75+TgjI7MGcNNTOnAPUNXwGoGBzVgdq/e5/H8HdOBsNpnsbAv19ccN4A4dqsXtLhTALfDk7ixOfP4u2zxTq7LaiuhIAKeqMRRFoagol8bGUg62WlCiC9Q+c5gx3WoPrdxq8koOJYDTrRYOx+jq8jMxEaWn56qwXS5zi3ah/HV+/PYDqp64sqIJJ68GiL8nnMLZsxcoLn6Q8+dfNvZK7MJ6DX9NuO1Tyz5PqdR3Aqcr1yecppkYGrqGzxdCuXZhecINnyoxJty9fC4nY/4EcHrv6+uPGZ5vb99Gk2eTAZx7by6nvjhMTeM0zEvpUZwIveeh0IKxjkYjlJXl4XIW09oioUTmeGSXF98PJZAXZ+kuyuVkE+v91l+pFotVrGMcPepjfDzCyZMT4s9ElgCuHOfuN5ka8VJTLpRj+lfiG6m8ZRITzuebZWBgDIejVIzXfWRa4tTW3aR250FeeP4SeXnRf3zuDwEGABm+YrFv6121AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Botswana',\n    code: '267',\n    iso: 'BW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MDZBM0U4MjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MDZBM0U4MzE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwNkEzRTgwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwNkEzRTgxMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HqOdhgAAAHJJREFUeNpiKV11+ykDA4MUEH9moA/gBeJnLFAGAxJNF8uZGAYIjFpMN8Dy8vOfAbGY8fb3/5/onKJB4DPLvMqMgfExEA+IjwfMYpbsxIiBCeq7A5W4mpffHJh8LMrDPFpkjlpMm8QFbfLw0rnp8xkgwACv5h08wmledAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Brazil',\n    code: '55',\n    iso: 'BR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRDhGOEMxMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRDhGOEMxMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzBGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TFbakQAABKdJREFUeNq8ll1sU2UYx3+n7en6uZVa1oGDwtYxnCw0EhiCxjgjH14oiV6Ampj4GRONRpQ4ZZEYvTAhwSxGjRFilO2GDy8gZuEGTAS2xUHmBvuAuVG70U0o++ranq6tz2mHc8YB48KTnL7pec/7/p////k/z3kV6h4ZAJz8v9e4SX4Wz3uZkoGEFWQgL343wE6Djj4vwJTEOpHPA64/qXIPw6Qj90yfmwdjw529N72pDjJlYufybloD52gKnOfDkk55ZpQ55+x3b8dBcjx2yxzrTJJmiFtYt2CIH9adY0VJCq5PY3ggeEXhueY1/HK9SKRPgFnujHJLxnMD64D6YmFpMCX4pOQSNRuvQKeRfYeqaOv2kpa4K/3DvPd0CwQ09p1ZQs3lMhJJG1gnwJCeK4A5gLPmsWSZbiocoK60i/LKGCe/9/HMru1Eki5MJNG3TGLGbR6j/tMjbHmpm76OPN7qXcmxcDGoU6JA7L/Ax41sXVaje3OGpeQr6qTAEqOu7AKf+3vw+KY4edBF9c7XUdIKRWoILX0VG2N4raPEkk72n6ii2tdD4OEIO8xDlNjHOT1ewGS0AEzJHHv+DkCbYayDxkWitIEdi4LsW96F1y4Ri2K4TRxsq+NseDXL3EFsihOTptLRc4X2kyEutPZzjWKqK4Y40XAAY1L2kvgjk0Z29pfz3eDSHKg1epP9DGNFSmKVbYKvy9rZXdKPQ0mTEJWMLujtdPPlkScYutjDxeYQkXCUPNWE11/A5h2VrKpeQrhjkKZujSfX9LO4YpK4mM9pzrCtSMrOHuGikBrWLGRydaSZssOUSrGq0bT6LPYFZB0bE2UMEpySD6FwHocOt4mBY7icZnpbhvkx+SsWye8Kv5fHX72f3Q1bqf8mTGjwOGt0frI2Jua2agi3CJtdzfhbH6JPwHXpc8DGKa6mjGzqWEvtkl62FEawSlrisghpTIWuKL4FThxWG+lUFNVqodCejyqsB4IR9u5qJFDp5/nabWzwecgMhciI2lapQomNU0EXe4KlhISgjqVfhpummjKmODPiYetvVbzSeR/jkmuL9AvxD+WrR6RsBgjd8OB2W9CSKWFkkFvBas9j+T0uLrRbOFa7n4X2ThTJr742LuBvdpXzaNt6fr5RSFI32HSHm+lcmenkSwP49o9Syls30jDozXrCKMO7LzQyGosRDOfjcJjErfHsnZ9vImNeKkG4eefln6BA9BUdj4YXslL2+KJ/hbDWcnv/45pdTjqKHpGAT4gZjg4V0x6zUpUeIfDYCGvdA9QfLyU46mE8qnJtTCUkKtnUNF99cICnXuxhsE/lte4Kai9XMJoSne0T0yxn1bJ2684lchNziIMn2VvWwxsPSu7OW/i4YT0dl4qkYyqU+8LUbG/CsSHG/pZFvN21komEHWzC0JCaZ+f6dwCaCJLIo9ozSP36cxRJUyI83asXwY2r8OzZAI3D94qsydyn8q579Rx9WzoHe3yX+cjfl5367Hcf7/eXSe+UMrHpsqZvBzoP4FlfKjV7CNjoDaHK/1Pig+zXSPrAHQDOOoHc+bFH39gkdaiOcfq6N2cYneXNuXmcQP4SYAD5sNLFPECeSAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'British Indian Ocean Territory',\n    code: '246',\n    iso: 'IO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ4RjhDMTYxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkQ4RjhDMTUxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMUM0QkU0QUREQkJFMEY0QTBFMUM2MUYzOUU3M0FDOTgiIHN0UmVmOmRvY3VtZW50SUQ9IjFDNEJFNEFEREJCRTBGNEEwRTFDNjFGMzlFNzNBQzk4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+507x4gAABXBJREFUeNrs1OlPk3cAB/Dfw9MLWqAUeggF2nKWq1yFCIgDryGiQ5miTpxTkTDZpmObO5JplmyRxMjUOXRbxBmHyhweGxKCnAWs3AUKT6GU0pY+pS32Pmhpx9+x7M331ff75vPiC6kbfmFsSR4C9Mqn8+PNQoD1bazkHm+7MfBWeW4fDHQmdjjuxzBjCT9I7Rve5x+ZzqF0DS/WPRyWopay7JT33g7jRdG6RIprbQKx2CcnKehUURIrNGRQJINA7uU9RMMfFan+CZG3UGxVO3qd7T77T1377soiCflLIP0un+YJpFQtEH+dtoLRUeDjBj74U/v5adygL64+s2L1ZBYE2winS+P8nfFtwpVeAQIMFgo7GHOiKF6FITXorR8Kp85sST50dbexvcd+zcilktDcSOqyHfA331nwILP9JwLB1faPMXgsDoYUGqvD5XlwjzUpI4mWFbGRmCCPm+yAOr4vxWJcWpPd4/FA3rJi4HQAOzCZ1h1OVxDscbnXrL5kX7sRD7zmkFAfg5EMO0CYn3WdUBF9BBcbM/pKLBlBQYSVlwnTInUB0XMTY9D803zgCgbu1eRUJpdNG5lUQTOXr8llWiuBsCWfR52bAUF4m81j/umu3/5i/3cLQXu/VmcbonMgjZ7LIN4hc59M6SryOGf38fA43M2uthb9nWAfEE9JzWVs3RGfozOYbzyfah2WHSuIw3BHqcxtO65k+VEZNpcv5oKJvjl8vYzUKOAktjIKas/nUtEZXBtyTEJAHdTu6rhLpwsHZ1UFtY9HpGhmpvfwtiqiCtErIo42ClZRwbGdvM/K0mv2Jgtn1VBjU89xph0sKc89Ruq1VIDCTdUR5cL64bQKfoMWMPwqT/JvpUDAZviteerU2NoGHQjAVR/i82Oo99tUHa9XUkkjbgqnZOdODt3TMoC0ds4AjTUkjgpJu/r6H/VainYYqWGxkE1tsmnnVSzRCHvvdieH5dSbBhDUEULeSvcrdqOepASNF7uJiFVqbQqNOTGGLrI47JJ7MbyiQN9oiVieHkfDwD5KvRUPeyB86U0nngTUK/kZoclRlA6hHNHaAJsFpIrtXAqPS++bXJ5bNlndnjU3NjGclBFD6RhcWlYbANk/l6L/BDbw83ye/K0ZAL6dgTzdrJkVTY1gBksX1BCqM9CDAydl6N2O2WFEW5YfVVWcgIEJUrXudqtoUKwtyWHXHsiEgI9MvdrwYmoI0ezJiqzZl4bFYHWil2Nl21e5ZIbUwD3/Oe2DyytG2+3WcaEY3ZPNgQprm/rFmoNbY786nBEfHvKoF/n0Vu+K0Xlgc9TF49mxzBDBtOJcQ69EadybE3WhPDUxPKRjbKnm595ZuftgFnxpl4BCT7Eoxs+1BD+bTSrJDfimPJvLDn7xagE6U9+aEEFt6pt/NSYDZheRQfmoNC2GGfD7S6R7ZBE4XBh/fPU7vCQW9X4n0jO8CKxOmEyqOZDCDQt4/lrtxZP5sJwWF4MPoNjN5g6R8km3BKwYGdE0MDav/EuAaFbfeL3rK0aL02XvnpC1CBCdweT1enRGw0bKVPq214jRavV6vasmy0ZzfE71sGtarjMtmrwt31bPjQsH5fbmrmnNm42VV2s0Gs1mCFdYt2awAAiKT+ckRdE6+5FVpQEQfYHLyU1lprEZ/VMqucoA1l3A443lhiZHBveLllCFGcAwWLOzkjl5tp5eA31pjQGcNgC5IlibmDT/RaUOEsvQOBbl5ejS9ZaR4TndkYL4r49mB5EIfdPL9X8ODc3qdmUxfziZFxLg37Nxby1Do5KVoiz2xffzaIHEzgl53QOhUu8o3xpTW5ZBwOMnZOiV5qE+0fL+vKj/Qf4TIP8KMABGR9CQ7zSDAQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'British Virgin Islands',\n    code: '1-284',\n    iso: 'VG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REM0MjcxOTMxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REM0MjcxOTIxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNDJDQ0E1MjFCMkQxQkRBQkYxM0U2NTQ3REJCRjE4NjkiIHN0UmVmOmRvY3VtZW50SUQ9IjQyQ0NBNTIxQjJEMUJEQUJGMTNFNjU0N0RCQkYxODY5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SkUFawAAA8xJREFUeNq8k21sU1UYx59z7kvftnZtx7rSgbME5qgbhA1JlBEcUaOxiGxTDMOJCSaKgZjMEPniJ/lishjjDGriy8QPkCFbFGM2FhMgy2S4bN0kMma2du267qXre2/vPecebxkTv4jEOP+5H07uOc/v/J9z/gfNtLU5d9f0JO2tbf2j3VdBZ+t4Z9uhy5/21e5rvEhi4bjDht5ySyeaN6Y3PFS85zzct7gLI+uHT/cedsNLu9ZnytzXx6KPldFHBy/6ijd+5aM704HPvEUNXk9HtLSh7WZ0aoIQlRBK7ilKGCUUtRw7OxHHjeX0qDMmND0RtLkjnT0lTc/On/qIr6utjt6Cvc/1TOba3/s+9vvMyNB0MqWIIocQyDKjlMOgqoA1iwCU44goIsZQTlI01yi1v8F0YzwJ5lCKyDPhcrcjm8xMR+IOs7HQyC3ZndJCwpZNODz2FBLdI575nKjjCZXUdR5RWCsoOYDcIhb0yGBWwiT8q4REkHOyhuaD1nUJSE+nieeZR8qBmOMRIgHr7sZba4r21yvn+6TCgmFLrTMTZ3oeNLeMsrxPk7leqj44cCW8pj5ayPG3oh747VwVN2aiLLN81rjuWtHj7pZE95mKT06Yn9/Vvr3hauMhD8jj23d/8fKxNZc7Kz8+vrS5olHYuTVeF5NBj0m+WeDjSYnM+g1ziaNPf7jD+WRiajSbUvIz+e82+t0jO0LHS14JXjr31Nuepgtvtv40NzRqrCzmY5FXXW84t3zwzS/ogHfT+EF2SvApsiIBr5UxUDnAkso/bKioNtv1SExQkTKMtZkV8Q+qqTOtXR1zpmsLBUBTgJRLw2k1WjF0E8BgmfUNNh+5/v6+vSe9lS6r34KzccY0WwKwOBPGlJLD5qWQLA0sTFp4IfIXbh79eltvICBo9jleEg06YGrnlamz3DY0sKTXgmB0EoWNdP3wYpeKkEMnmgxYVVWmADbJOSsJBHn3A1Z9tcs95F/MyFpaAKM7G/DTAc2ECFqGiMp4LUZI4LX7ygAv5BtXVY4DjrOx/HqqLdUGGloFssXowNj+c0arhTKbRfKbN+idw5CllN55Mghq7rbAc8uDu3exIi0aaOWXLBuaX4h++3VvdrzqO7+rfaK3xxdr0ds+P9k3P1vcP2hHIP0t+t4iBDDWpWZze1zBA5XZItuN1k0zVXTx9Jeuvv61oRBFoCy7ee3PGp1evB80QiwnI5VaS0uTzd4Jd0EmLAkdP272TxZiHNXpVSlD/iX6H5WTbr9GWAUtW8SwalpFNP9fne//6noV0X8IMAASR8khb/BRHwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Brunei',\n    code: '673',\n    iso: 'BN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3NDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3NTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzE3MTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzE4MTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oskd/wAABCtJREFUeNrEVVtoHFUY/mZ2Zncnm002Sc1mczExdFPNbpMm3Sy2+FC89EVKSkEEFUEUH/RF1CpesIIpYvVJHwQfVAQvoGApxUihKRpQm6ZJtrm1m839YpPdNMns2r3M5fjP7BqamLVGLf7wz5xz5sz5vvP/3/kPl5xyy/gfTGCZRSd4anECOL6Q3lajc+uBhbJXwNID0NUImDIB6BrA6ItBhhfBcU7iIW74iamArTjLL71qct62cYzMXEz/jYBHwDLD0E0foP44gUyCabkYEBmOLwBvlyDPCpA8DFIRh/QyjVv+IfBWxvQ1IjIIPd1L7xHoBjHlCuzVMYydKsH0SRH7O5YobA4iWpAL038AvCUZdZZCO46el19E/4nLONK3F7ftHERycSWbIiM0PEeRMVJkz6uXbWeHE2qgogYjZ++C82A1SltOmuOS80eoKz9kU5QJk2bGAVW+gYwlR8aWXefQoQeZ3+9HMBiE3+fHTm9DXtCJnl4sd34Hy5lfcH16ChZRhFTlReb+gyhvfwR1LYXrc/XMEBEYymkmRGkaM8XLtIzJw/ANoa6vr0NbW4A8iObWVrgTKexo9sNzey0WOs+i9/mjqLG7EC+QkEomoceimE7EsPfddxB48nGsRmXMdJ1H08MPbMpRigiM5vQymB36Kz9M/oWngT309BPss/ZHWdcnn7OrpIvuYx3swuvHmWlzMTby2gmz+WGtl33qbWU3sz/teLOVUVC+QgmO4hqC1D9DvlxVgbfXgIbKaswffwEVchr+vhCYfzfCL72K++Rfb6oVy3tvOd/cUWaBQWFVZtC0jROS5I2SC3fwDrTsc6IRVpyei2K/JmI2toTnvv4Szu9Po9y5ho8/+hZ3NrXip+pi8Kk0SlwuWCxCvuNUld3xioaZGQ0XQwp6QyqGLqsIDSuYntbwBirRjRQiiGOm3YvHzi3AJzvMI3FekvHNPg/uGQyjJCrgMF+Ep/Rr5pKeinIEAgFTuLubmrBnTzNqa+uzwMlJN+Pp3FtttOVCcscfRYAhs6BhdFHBQocdw2IKnYk4nu2rwpH6AoTnVaqoDPWlAroX0jgwO4E2qmp32xz4IBnNG+Jdu7zw+XwEPOXeMscC4QsFRKTUqJMqEuMcLj1jx3wPQ10zBxsRNdIz2q9BWhHQpSTxPq7+/Usi3wdVJ08Qp7gGaxnlOkY1oFGDW+PpAmOIzlKNjnKorOEhNGs4dq8dB4pLcernJIaGVVyJqIjL+XWbd8ebbyOJwOFiMAR7fY7aEYGqEwfRr8BWyVDkNmaK2dKQ0LE0p2GACFzoV0gvCkJDKkbHaCF9G8Drp53WFKn8WiRqO5khTUDmoZH0lVR2jqkX0dAKedENNSqmIzKpYSSs4uIlZRvA/8LozoDVTg8nucSv5zh+q4F12loqSQ/Dc7H+XYABAOng97l61jkHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Bulgaria',\n    code: '359',\n    iso: 'BG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3ODE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3OTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODc2MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYzOEIzODc3MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+McDtIQAAAD1JREFUeNpi/P///yeGAQCMQIv/D4TFTAwDBEYtpl/iYpiWN5q4Ri0etZg62emamtBodhq1eNRiqgCAAAMAqc4MILa4lBgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Burkina Faso',\n    code: '226',\n    iso: 'BF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3QzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3RDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODdBMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYzOEIzODdCMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uO74RgAAAV5JREFUeNrslr9Lw0AUx793SY6m2h/iVEUQRJfo4KqCc/GfcHJ08B9x6ayTq5uT+lc4qEtBRFsKkmBKY5Im50tSJG6XgnHJg+Nekrv73PflveOYbe28AVih5qIca1B712cOcn0pcI5/sgqsPmvKgJDNvfX5psWznuX8PwOzrJNjjuhJQN/3YBx6iB5F+i4/RsX09lesrjIpvi0fHhdgXQ8wJep3NZgbPvBiAAF91xTBg0XFkRGp9TjEboDm+Qiilm04vBni46oFv2+ALUhaUaqBrZOOeqgpmWzHxPHgFZfWQxqGs+dt9MQ6lk4pAgZBpaJie1lHof/c1HCgTXDfX0UQc+wxD701DruuKUNTMCYF0lIymJqLa6eF29EmQgIfdYZocxfOmAQwWUDDRfezyDnNksUDymQtSkFsSkAjLCI2MVcvWn+SVCegn+ecX53VFfh3OWVXnkbJVx/3W4ABAMUjZvAvTtkOAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Burundi',\n    code: '257',\n    iso: 'BI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBFRDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBFRTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODdFMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEVDMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+f3jizgAABTpJREFUeNqsVmlsVFUU/t7SmTcztNPOlFraTltIIZqWkoGACHUpFQiQGsQUECWYaGI0hAQRarVCadnREtTE5QcaI5KIQEGWFBAsGLQFbKEsFpRANwp02uns25vreY8wTKdFI3onNy9z77nnO+fc851zOcaYQ3Y4cXPNFnRs3gQZbugSRoKLE8DCYfzXwXE8mByGt+8KeEhIW7IU6RUrwBEwuyfkbvgNraXvo/engxAQD63ZAsZk4L7IvwPlRQRsHQiiD0mTpsKysRLxBRPVPYGVJFQUpjyh/tGkD8PQV16ClDUS7vqzcN9pgSjrwEs6Ao/xnoxhYUYeqW7FAAoIe7zwOP8g49MwvPpDZH9aDW1mRkRGqJtcX7G3qw4Z+mEYFT9CXTRY85Hy6iIwuwfOhlMIem9ClJLBCSKY34+AoxUhnw1hv4u+3TTtEHgDeI2WDAJ8PVcQDvmQuug1jKrZgfinJ0cAj9w6iQX1S8BlHyxg191tgOxDSdYcbBhdhhEGS0TQ9esZtC0vR8/PteDoJ0APU/FsJE4vgiEtHZ6um7AfPQ7b7t2UH04FF4kTCpG5qaofYIe3C6XN67H9+k4KiQhkHpjEFPC0/Y8zfGtmSTWj2eaWz1ns6Ny4hTWOmcB6avZH1sJR+/baH1mTdSJrX7VuwNmPrn7Jhu6zkn4TS/1hPBt+8EnGKcD3rBLJkjv+bjg9nbDSva/NW4EZqc8Mmjgtp4+jYfGbGLthE3ILiweVOXb7FMqaN6Lh9gkYpFQ8IqUgxELqHh8tqCyaNEnITspDY28zZp5YgNfPvoNWMiR2eO09cJ37HV7bnQF7SliXNK1CUd1cNNjOIsuYi2TJHAFVEzDa4+ghcAK8dO9d9kvINltRP6UGKVpzZJ9IBht8SCJuxkWdc8luTDw2BxdvnUAKARpEPWSFkjFDfBAHFWENHwcdJZokaJEYF9/fMJopBBo79IIeOkGCqE9Xv4OB/i1whK70E8l7Da+BwuTztd8BVNEem1ECLcH7abXlyB6EAn7kz3qRFHKqvFJzGB5ceB4ILFCpC4SD8Hk60Kc1wS67yHMdmkoWgnMFkCE/Dy0BEJPRWPIygn0+jAy/AA0ZYw84IHs7EaR7lchgmYX/GVjhKk+gCrdZyI35OYtQmbsMCcIQ1eNxB3aptdfI3b3ZBFIxbv8uyMEAJE6rKjxQsA1Vl7biq2vfkAc6ZBuU0sv6RWAAnXoDdvS6b2CUyUqAb2GepfihG0RN52GUX9iMi91nYDRkwKwx9aeT4qESjmt9lymTvVg5ZiWapx3uB3r7s21oLiiE89jJQUHcv5zGhaeeRVf1J5G12WnTcH5qLdZaq0h/iPRfImBZvUZOqSKtdI9y0IVZlplYl1eKfOOjkcOecxfQVrYa3Ye+VwOlQSKSF8yDcfoUiEOJm7ZeOI7WofvrHQgwm3rGXPQcLOtXwTB+7P2C47yGd6mY7G7bRzVfogvdbmQ5SWOoSr2NuVEeMn8QbeWr0fXBx5Q+DurROdSjKVHcbgR87Uom0NSQMUGaIWi06RCGJFBeBNXeK8CA1MVvwLKhErxBF9G7l8KvVDNuaVMlW5O3nPh3n5M9O/eQl1Vw/tkISUyDaDRSC4zhI1FKbYs8tUSeH9AWZacT3kA7hmTmIWPNe0heOD+qQsr9HwLey1fRuqwMtkO71C6kNWWRN+GHewhQj+aIbn7bDfVVYyoqRmb1eujzc+9uK0+fsMuNW1u/QHvFWgRDNkjxOdRbxf/n6UPRYEEZXsdVopoR6eWlSF2+GH8JMABj3HBuy+V6lgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Cambodia',\n    code: '855',\n    iso: 'KH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBGMTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBGMjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE2QkM1MEVGMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEYwMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4kgdbAAAAkRJREFUeNrslUtPE2EUhp+5tbTl0gsyA2podCPRjSuNMV42mBAIJSxYse2OFWEhv4S1MTGGJcGNP0D37pDGGu6lNE0HsC3TGc8MNSwobYwRNj2Tk2/mzJnznvf9zpdR4L3HDZjKDVkX+NpM+UxfRda+KxPkcjnDn0ANQ1ZPnk8J3R6Vlwr17R/SfaxlXhuz9fvYnbuL9QQg7nFFykNd/NabJxAyOFzJEWrWUKLhIM87qXSsqZfaAYrXxJPPX6KEQhTX1pDSVAPgDFosRmnlnfBDuELqxWsUTaO4vi7N/MMee02PT00xODtLQ+7L4tb8PEmJDYyPM5zNUmmqkJBYfHpaJO9sWhbeyhpu9dIvNjQxwcjyMsboKLHhYaLRKObCAmoigVutEk6nMcplrLk54jMzRMbGcDY2sMW1q3Hreruu/M5100QfHKS2uYm5uIi5tER9awunUJAEF8OyuLe6GuTXcjm0VCpophNrvd3++tKe7u9ztruL5zhUhYUPqPb2ng9RrYYjbOvb22jJpHzQwJHc450dnGYN72/2+M9Q9YTDDGUyQXHn6IiGbQegrgD6bBVd+vY81EhEJvmERqlEo1LBnJwkKrFqs1ZLjO9w6Rz73casAe5++QrpB3jFg4CNYo5cDN6JfR7rj1/ECnt4bgPVugN7eXaePcXOH7SS1dYPWgz+mYxV6vErjG8/+fXhE66wCeSR4+Mz9GVGpPd81obR1E6Vc24HSqi9/UQePaQsNQ7zH+W4GZe4K93fYhf4f9lvAQYAwe7UEk4oy7oAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cameroon',\n    code: '237',\n    iso: 'CM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBGNTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBGNjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE2QkM1MEYzMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEY0MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KAzx3QAAAHJJREFUeNpiZKiKY8ANTneexCNreO49HlkmBpqBUaNHjaaO0X/+Mkpmf5cq/vbnL7FaWIhUp9T4VTT2BwMzA6sQw8NqLmq6+sMxFkb5v4xyfz6dZqayq5nZGJ5k8zL8IyFyiDX6/Ta20cQ3avSQMRogwADcmBpIZYNhTQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Canada',\n    code: '1',\n    iso: 'CA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI0MDA4MjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI0MDA4MzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVEQjQwMDgwMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVEQjQwMDgxMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IgrEzAAAAaZJREFUeNrEVktqwlAUPVr/TRXqB0QMHXbSqXsQdCRuQbsBR3bmJBtw7A4cuwyLBQNCKdgOVBCpIv7aUx8PiVZtNCo9cHm5yb3v3E/eTWwEPrEOlwtot4FIBGfBbAbE40C3u3HbsZQb/APslj3LZUDTrDMvS80NcbnIToc7MZkY18JO2K8wHu/2mU7JSIS/eRxHRTmfA6USMBjI3gnkckAoBBQKgNd7oYwFEomt6Hl3t99+T8Z20zdyhWZTrvn8tt3jo1wbjd2+R2fc65HpNFksksEgqWlkv0/a7Zs+7TZZqZCKQj49kckk+fr6Z8bmpY5GN5+nUqTTaeg2mwxuPRi327TUfxMLp3x+u6dmks1KX8vErRbp8x1PLKReP4H4+5us1cjb28MJPR6yWiW/vk7sscD7O3l/b06qqqSuH3ScDj/Hi4XceB+pqMpodIHJdXUFPDwAfj+gqsYWTifw9gaEw8D19QUm12xGDgaG/vJCPj8b+nAobc4yudYhMgsEDF3XpaygKNLmQDgsf9Y+PszH4kWIYzFgsTiJeGjJM5M56Q/kR4ABAHxxYPgLzAdZAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Cape Verde',\n    code: '238',\n    iso: 'CV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI0MDA4NjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI0MDA4NzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVEQjQwMDg0MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVEQjQwMDg1MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+zvajFAAAAj5JREFUeNrsVU1rE1EUPfPmO9OYNEPSplAqmlaoFDcuBBdC9yqCGzddVRA3/gL/g6IbJXahiAtBxY0gLiIIUkEQDNlIija0JUnzMZlMJ3nzZsZpJG1SUhOF4sbHWb1759zDuffd4XDuHo7mEBzZ+U/9b6mJjx0VLRkcjscMXbPhEVgqqLgb+ntqn4MjpGY2db2Opvrk+ourZ3OoRE+d2IjHjCA0OjWP8CLarAsHO0BVvrP8OK7WVzPz7wrHPmanmOWnb66YDZL7NAdi9uT/Dlx48UGPZAYpyVx+Lpa1qLJejTBbFiQmK+3ZeLls6SX7pIQtuBa44fI56vfZ57vPic8qwjURGAdYkNG5LwMhNDT2yBeWAH0UQwQxk9krAzGBrZcAnUiegROw+WI3liRh0DyKz5BIQJmHawxXnTnY1png0sP3QckiQcpH3gcdRTXnv3q9r5qPoXZ/14boLXh1wOupGQItwEgjsgRpFl5zuCHO5Yv9XucJWIM/H7RpDHC7ExrUkVBT3ALIFXDxkVQfmBBfnPQ8kgx9czy5bKmOLfOCK0nOZNi0mGY408QtwWuDG/6MeapcoM12Fw6tNZ1Nend5Jcpvf3hzejy+1jKpXeTSNx4aNfbl/QR1q7RJez45FDxSl6AI+1AJNPyoJVfXU6Y39vb2U14VPucW1mw9W5xuChI0ri//cHAD/jLEgxEG70KzF6a2S2aoWInAViBThFpwR91ogx5VsIzC1q998nWj0zGRQeyMhPsHm/KnAAMAsIUm2hIeMowAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cayman Islands',\n    code: '1-345',\n    iso: 'KY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjE0RDFFRjQxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RURCNDAwOEExNzczMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjIxRThDMEVFRkYzODE3N0JCQzk4OEY3MEExNjA3MkQiIHN0UmVmOmRvY3VtZW50SUQ9IjYyMUU4QzBFRUZGMzgxNzdCQkM5ODhGNzBBMTYwNzJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wV3Y3AAAAoRJREFUeNpiZGCYyUAbwMRAM8BCnLL/DAysYARk/GFg+AdGlBoNNIKLgUGAiem1nPQjVmbGh8/5/vzh//cX6N3P+D2Nz2hGhn//GQSYWX6XZy0QEn539oLUh/c8dtbffvxk2XPQ5OVrKQaGV3hMZ2Zg8MXtXkEuzs9r5/Z/+vytfZL5k5ca774J7z8kxsfzaUrPivOXZV+9lmdg+AJyA4lGA0OWbcXMyWfPi9Z1RyWlifX3K0WGCenoMi1cynvlKmd1ye6tOzV//+YGhz4JKQQYXfzB3od/ff/TPDHoxGmNqRMDWb6+un7xVXKSz5evzrcfuR0+IFycs42BgRuXq5lwhjPDt79/fta2mYWGS5mbOPz8xnVkw+q/f7+zcogwM+jW14tNmmd8/gowQD6SajQwNP4oyN1VUD6hrMkG5P/69fPvv3///v77/RskLSMnoqV1Q1b8DAPDT7Bi0rIMC9DZHg6Xfny8CLKKi0tUReXf3z9/wGafPfdFW/2ige4TcNL8T5LRQP3sx88Yy8iyPbm3fvu28xxsfy0cvDQ0NXi4WF48e3Lp+GIx0dcHTumBjf5Nagph+vqFj4fv1fPPDzom3n7z4o24hBIvD/+Gdcc9oyd+/7/D1JB388awT595wWGCPbpm4k4kAooyz7/zbnnx8hbDDwEOIRWm/+zfXp1nEH7OzmEl+NnvxVsBBoZPuKKREW/JBzKdgekXq/DJf4KH/r6RYPjLyCR7kemV49/Xbv//A819DVZDptFABZyMDIyMrO8YGDj+/2NhYP78/5cEOHy/kF+GwJzz7T8D8//fQmDj/jH8FQEXTH8JFsjEFKqM4PLkG4z7FcnWAaoKaGg0QIABAIW9+Bm2LAQNAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Central African Republic',\n    code: '236',\n    iso: 'CF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMTREMUVGNzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMTREMUVGODE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUY1MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUY2MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bmc50gAAAqRJREFUeNrEVktrE1EU/u4jM5OMedJYadBNi2t1Jeqif0FX/QdCURAFQRHE7lz52LiRbtzowr0gqFhXFbQbF4KFQGjEaNsxaZtk5s69nk7SpCjaW1BzhmHOPffx3XPOd07CcGxuBcxMwLAWWj6KfhuMGaxt+EB2AzQHmkMiTh7nG29xv7GIj04uMR0Nm7hWPoE74ycB0i0kS29dJkrMwYXO8lwLF8++huQac0+nAQ6oiJbQ+C9LViYf8khvZDBzZhG3Zl8AKaBay2P+5WnAjfAvRKLZ7oVzjePNUgXvFnw4UmHh/RHgC3k61hqGWtA9u3QRwYYnbOtdBaxvAnHbHtgbyyZx7PiOzh3mOHf3CrTmKE0EZEzB83KDxR03D1l3mQ40g+jZjNKQGcfgUN64XQa2NyYlEJo11jYJAXkpjA62JEIlk81SxCj5EaJ4eJQsZhDMPWDBzetMFqYSmwqWkb96wxRvXzYqII+NsQH+LsvFDN8xFHO757ddcn7ZFaVT+AYD2R8raGQ8yYqUMBTStpHmHCOSkQHLtmrvFOmexerKNCKtGFFokHhGd1damZiyG8Yd2xxrOf1oemflnjtq1N9ml4y4gCnU+rZJeh5+eIx7z56Yymdrh42sBlWxi01/lIYbYr1TJsqVaRT2uih1m2Z3la2sfhVhkLIpp15HKKVL1tds+sTglEdMVgNbTI8nPWT8MkppbgsMGShhDdyJGNrUXMRPRdch21YkEKh9AFfcyJpccTpGTkgW7SIX6dTxYzPuRabicuvOJV8d/2RNLmdSm8bzilhGgXLb68vLpM0crOPSqZoJq9zilD65DrjamlzwCFwaCs3Qr+0wOcIwx4NwXG0LTD83ah9VH/0mIbo/p2ALPMLORW+r/3ek9Z8wE6wfAgwA1dTxt+cD8jYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Chad',\n    code: '235',\n    iso: 'TD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMTREMUVGQjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMTREMUVGQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUY5MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUZBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OGKo1gAAADBJREFUeNpiZJAoZMAN/m/rxyN72ckEjywTA83AqNGjRo8aPWr0qNGjRtPOaIAAAwAKxQQ+Km3kBAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Chile',\n    code: '56',\n    iso: 'CL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDODE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDOTE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUZEMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUZFMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KpHXrgAAAXlJREFUeNrsVrtKA0EUPbOv7CZZNSIqQkCxsrHLR9hY2QuC+A12Pr7DT7ATrAQLbUJKC1tZI2rQVZNsspvMjHd3QxLwgcUONjkwu3fuFGfOfQyXoXJaB7BEq4nv8B4hv+DAO9vA7JSFDODSejAGRurQGdDup7sCHXEJRXCNoRlzdDimHR1Ej7eAA5aGZKMAWvIVEhYR4r6Fnc1l7G2tAvVW6hNqVKeKI4GIcewfVXCwuwbT0OCULByf3AJdrlCxTcqeAlxUn2GZGhiF97LWAPfagGMoVByDCPOU0+3DGoSg9MaFpjDHI+I5G9UbH1fnHhFL5MpFYN4B/FARMSukFikLQpK6aCOOdadHRWWSk5m07GFWMiO2pT9qJ33sJLbpHl1EyAkHMgzIUYQIs4kAu14vf4w9Il8g6UIaiZ1xreQvs+muprEiH38ve4o2p456ueuhL9J9JqF+Ze6fmk4rUZFn3sf/gAnxhFgZjMHI4/44+iiYPmKuTwEGAHthZNcUQvnKAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'China',\n    code: '86',\n    iso: 'CN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDRDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU0NTBEQ0NBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU0NTBEQ0NCMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+63sBgQAAAXhJREFUeNrslL1OwzAQx322k+ZDpaFSVSQqOsCChGBl5wkY4AGYeQF2NkYQAxI7ElM3nqE7TAgJtkKaUtQPkto+zgUxwZCgMvUmW5Z+/t0/OcPDesRmU/x7BZKZIZgB0IIh0wmv7KbR3rtOgJnCaGCYQfYkvA3lbarsUdCW6OAhhKhioRIODuZFkyFDxZxlbfqwsJ9yn43b0mlo1eXxWWB6UD8aIsfkIhCRIYl8aApBRLhy1Xe3NLXRvNbxqZ/eC8siqkAQrEAmFi0qOLhxxZKp7wxp+9oqvbVK7pq9xqmb55OQZL1VhcqmlA9ty0OiDC5c1ExWDQRoezdsEvPa4Qgcllz6RQIhF6dhRm3ZPfdxAsF25jZt/5MO1zHnAfWFDAsF8umS3kpBvsDSO8nLqHu8ejAWIXaOQ16xPdHXzo+eihPu638sW0dKhpfsOXFllJtrhX+bRhoc9QJoQNaMTaNgID8VaYrFKdL8edBn+IbM0XP0P6M/BBgAWIia6c9dDfMAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Christmas Island',\n    code: '61',\n    iso: 'CX',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ1MERDRDExNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ1MERDRDAxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRjgxOUM0M0NBNkU4M0Q2MkFEMjJGRURBREU5RUVFRTgiIHN0UmVmOmRvY3VtZW50SUQ9IkY4MTlDNDNDQTZFODNENjJBRDIyRkVEQURFOUVFRUU4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+BJjG7QAABAlJREFUeNq0VV1oW2UY/n5PTk7+mzRp2tmkpm61c1bxp4K0tZWxDRV/cCIqijdejF3JQEEvhzoRRBBBb9YLYV7ILhRxiEJvxqy1VYarFNqxxiZp0qRNcpKcnHO+H7+sk+DdCt3LufjOOe/3PO/3nOd9D3zosxnAMYAS7HcgcMcC2T+P82pQBi0YagAkgIT7BY0jxstsJS3LYUQ4jm8Db1u6GhQI7IWi3EKTg87rY62LK7q61QlQ+uLEwSmEuSxE+fWUlQ82WcM4UMeGLR0N3AYBgh2UnInnC+TLE9YTKfurP/WQBiEEuHfwKEASeh0OuK/R39c4Yq57OWYkUUHqBA4FEmMEHA7zJtqxoEZuFbUbbQY9VL4/0Qx5wceXtbMTjaVt/e8K9lNJbqVIWKzU3nwl88bzD558teEsH/CPFOjhNTqUI4QXCwGXwWdG3KABFrJwvUr6A4CJDr5irbZwri6/eLq+lMdlQaKE5bboQEpVnTp6swSpe2h1pz3/R7bqmEQT2SWK1jNaK1YVthZqff1s/dSUdexQ+74wuJyn6gQBTWFDBe0h8odVOrukjfejR4btR/tsQuHVMkGU4OJWvVQ2g35PsdJcuFp0XaHr8OwH46NjvuJv8ezsU6dj0ccONlwLn5/zfrpgfDTd9FLedBBXhpLAYiDoRTmT/FVEZgVd2dQ1jBgDZLNkvnNqqm3zz8//2hs1dB2XKpZPp2MjfVcW1x3dTOp0NG6d/sn/7e+hYo18OGlNjZp3z2v5bT3oBQ4TMT9I+Hivl1PCjl0ILxY8ES9LBwRxheiJGrbjMsaEkNzlxyeHrmdrL7x1IRYx+mK+jRxeKXvee6k0EfScmQufma6Alra8g9LJ7QHhh1z4fQAIsLQJr5V8Pg09EHeVUkxCeGT6k81SVZmlrzfEGOdcpAdClbpVqdo6xQiBQlk/NGjOzX6nJXIrDSNm+99+9/jFa0bqyUUtvYEhalQCbRcGdODB6pN1zQMPT5xTkin7KhT1VHE0LVejSCNYyE4aJeLGhn+ov3HyueW7ws43l+75ZX4gExRCtdjwP/TeVZoqKIMJ07jZB91ZBEcnzu2uCEZm09mptpKJgHKyEN0kiuVWzVMq+hREOGIl4y31UrpE1A2oOTizgUfXaCoPOwR+IOAuQcd8u/sbLWc4HTkxk7mxUW+3WadP/gshoa7xaE872mP5DCbVnFGXajTDhgjwfJyvpkQ5AnUXJSrQ4wBHNRXq7q+b7aHByGsvPqw0cV1+W7NDEWCOInWs22wl0/p+xvrxcTebRAELBppdQZTcXEilL4IIYyD3OsChlJzImgEow8Pr5P418r9Zo1B3B5IEYq80ym2Iw4jZWRZ7nUvJO/kr6LLuN/S/AgwAs/Hl9f4h+7IAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cocos Islands',\n    code: '61',\n    iso: 'CC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzRDMzYwQ0MxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzRDMzYwQ0IxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMERGMEFEOEU0MzBGNTQzMTkxQTc2NEY1NDFDOTdFQjkiIHN0UmVmOmRvY3VtZW50SUQ9IjBERjBBRDhFNDMwRjU0MzE5MUE3NjRGNTQxQzk3RUI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YY6ZXwAAAxVJREFUeNq0VU1IFVEUPuf+zLz3fE+T/jCy7AczrIgIqQgxEHKVSItwkdQqatEqWrttE1FQ0SbaRLQqMgr6g36wIrAoyFe+Sg01+ns+3xvnzcy9pzvzNFIji/Auhpm593zzne985wxCJ8LcLAZztiJow5sIvjMosPAhy8E1OzR7tAnUBA6BIsDfQpuNHO/YZA0ewoEOfrJFJgSDPMKsUimypdiwJJayBaiZ0CY+y440WBfaQaF98ZXdWiPf7bcRJHjmwB+5u1CXki/2JLcvtsCZvslhK1TO43faWFev3HGJ3XitLnygo5upoOlJn4J4xB0J8gzGGOgoT6MVYil6PMD7Q/Tsi++gCqmYAwInobfA6ip+qI5/U2p1JY1kWRXylrU4WtDX0wSJCCXLGpaLUy1W/SJ72GHZca3dKNrCotJ9w55DGjhflrJsmxc8XVKSgQ3pYfzswJZ17oGNxRMLsLvFW7nCvTKAICDChV1r7CcHhbTw9rsg5xMhq55nL0wICKJKJsOrHOePW8vObEuEyRFFrJtB56g3L9rr0VKs6q0Qzf7lbnnsUQBJBQGLW9arffRygBpP6/6iO+YHDHm6vSwp4VbaM8yAoZFCk84U8e6gP1AMQtEQhakTVsC1Xn/7ebF3Fdo11N3Fzz31wVLAERy9qprBfHX8ph8GlDNQJl994OF4JhdAfKKY6xdbnOOVHhfiGhIIGiNndpZMRibx8DFu3K0hRUbH0LMeS0mZO4wP3lPjWQ2VPsQgFGoMjIPCIpszLu6sKYsJutrnQIwAfpaxCSfcH8MwO04hF5MjRS8FelnVPyoO75TVlexTjgspCh5pi0InlJxpQeZrkP7mY8IwxF/M14RTumtmm9j0/AM9+qjbatnSctn7FUbyAbHJw+bOdKMVZUnTWnXW8VQaA6ORnYyU4ccmUTTEpVVbwTJjKh9Wj/5xPJWUqUAoJ5A4hZ0LtSnRszvZuNCOupGmdmPTXw/VmXJxKgT63pDu+eIVDO5UnuK/5ibHfKBvv3HCyovpWv8fdMlpSYTfzbG5/hXMzfohwAC83jil0Oj5WQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Colombia',\n    code: '57',\n    iso: 'CO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEMzNjBDRjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEMzNjBEMDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0QzM2MENEMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0QzM2MENFMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jvkEygAAAC9JREFUeNpi/HNRjIE2gImBZmDU6FGjh6PRjAzac0cDZOhH4zlBtdEAGfJGAwQYAIs9A9bKIFNYAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Comoros',\n    code: '269',\n    iso: 'KM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEMzNjBEMzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEMzNjBENDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0QzM2MEQxMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0QzM2MEQyMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8TQxCAAAA4RJREFUeNq0lV9sFFUYxX8zs9PdbnfaZbstpVIsLkotFBGqxCiaDSSmEm3kpREQsCGYSJRGI7E+akx4UKImvmn6oImJJlBoomIwRMU2NaCgtWpjpEjb3aXun85udzu7szPeneqbL+1u7507M/dOJuee853vu9Lz72+Z7t+oa2v8BuRcUJBAXCvdXJ9GqpuHE26OhdI8c3sGfEXIig1YrOgG5Lt9hbRhw4kxP90jDXwXqYYaEzxiA/YKMjZtiYBqOeOqrrL/cpADLfP0CQWCdQI8k4f8QsXZu0q3EjFFVmhUUkzpcd4Y0/g8Ws8LoSSH2pqgqhZSESG/WTlgSVCRZZnJ+J/c5m/hld1H8Kgqb34zwLPfG1yYC9AXfpHt9z26+IeZpBIxUO7oaun/Y3bCvXNDmI97z7C5eSsfjg7Qe/9+PHKBc78PM/Trt8zm0nS2PoTHJTwglz8U74NK//r6kHvw6HncLje73n2AkeuXqPXUEdGn0VQX1YrNhfEznP/lNJpbY9OajvJdncwmOR5+2Zm89dVJrk5dE6y3CNnX4q3yki8aDsuO5nuIz//NsU+OsG/gSa5N/VBejAM19Q5QqV35a5RGLUjRKpLNZykUC04y26KbwlirtSYafI1cmrjIyMwoe7v7eGn9QZoLPoouaRnmkmRnYgkAWRJAtu0Al57/fXPcb1lOVtV0tKMbOpOvvs6NKwOkrWoMdYmM4/NxxiNjrFvVyr1rtzH001lEzFkXaGUqddNh6hZdEZUspUnEV8lsHTc4eBbCPzYxS0r0OPISpZbaXmvRBZD22XMXnYVtJzcKU0Xoat9DLB1lLpPEdruYXq0QTFrsG1pg75cGPtNmuk7GVIRRlpFdUvjtHfrErd+0PZu7ea/nAxJCgRODx3ls0xN88fMgX+vDeH217B42OXw6R3vCJCryPuMVIbKWby7p4VOduiRJ2nVRQDY03MlTnYdEbOGjy+8QUyKE9LvoOWeya3SBgtAzGpQXGZZZQ6Sdp7brwmBaqXol5pMkczFqanQC7hDmwtM03nhESJwnFrQoqOWx/N9aXRSOrdMM/LUerMzjWLHDqLk2on7h3iYTyZYqfUiU3JEWb7fAaKOYOoCd7hJa5IWpJqkSDKuylT+YXZJ6U7NFHtqJo1hzPYJ6QKzOOMAsOUmWAGxld8zYqV7NznYuslYn/wVcOdBS+0eAAQAC6FhYtEMFCwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Cook Islands',\n    code: '682',\n    iso: 'CK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkI3NjBDQzgxNzc1MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyRURDQUUxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQUQyMUNBQzdCMUE3RTk1MkU2N0IwNzVGOTlCQTRCQjIiIHN0UmVmOmRvY3VtZW50SUQ9IkFEMjFDQUM3QjFBN0U5NTJFNjdCMDc1Rjk5QkE0QkIyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+isNl2wAABElJREFUeNq0lWtMHFUUx8+dGZZ5sN1dVpYFpNSwWBQFLJuWEpNaH0hoNDZIVoq08YGmMaaNHzRKiakRtcYq1Ni0poFa8VGigkmh0tY2tdSqRLq0lVJoKY/lsbuzL1h2dnd25nrXB2LiB9uEm8xk7p2c3znnnv89F6G8nbA0g4IlG9T0RqTuLfmo7qG0lZl40In91OEaiyq1fG9Lw5wOz9M8Ba+YRHULE3z9Dp2ex0E5bocQVgErGEMMz4awDPGpisn6P2jzvpntWw9VT/5yoSq54b1HU1ZliRIGhfIgjdbIbzW77Bvohs3WJs5629FEv8OPeJqYYVBBiYFrDmKKJdco6ChwB0CSMfkDf9HpTS/Vz69eK/Os1Td23xNrnq1dr3NOeg81p9RUPVeesyWXSX6qqtucd+zk8C0h16hfUqIYaAp+G7UUZTQ3Vgxcde7dUTrlmn3x+Xt5QXP5iB30AtIwgDHCq0uIfzGEJ0KgeP1pelaal5wqNiqKILABc4bs9KbIs7eu0Cp0kmlunTfGISS98UyxKKvZqcLuz/sETiO6gttqrA5vKDYb+bpn2OsOIZ5j+i157qmgn1UKK1YZfG5enBIRi7/pEspLM4ty0Fm7P8VgT10x7naCoImNMDAbweG5wjVZzR0Xmuq+hex0kKLAaeq2dWSX3d6+5/EvTl+FQBS0AoKSDwvLrK9V5VYa56Lf9TR5kvMthntspUONn409UF5p8Gl6fzh82vH2dX2/qoWf+3jAH7xZ1tJ+/qfOYVhuJOVcqCqEpBSztrai4MvjwyNDInWg5q7zVl/lidaPbW/lN/S/vH9UuThkMjHstOPJB3cVVLd9Mp5sK0qzF3vfD/7IRGJhhvIGJJ7jgaPRgnTJzpJvGSsU3Gkx0JRKhENXr72/a1/nC3b6gMfs8ceAVRgajzrCxxMzf5WQeG64o2uoXW9BmcsTJ0ePXptflmXSJyWcPHs9ihCi6UU6RqChwvOSLxiRItjtDiLQbofUVJAjwGGUwIAiY+Ig2QR+EQkUJCZgVYWpABBhZKSC5Ft5t3l//cM1r3ZOXBGRgV+MxqoCztnOr2rPXBp7Z8cRGnLKgVGQBiEKkbyAJMYxAFFgKURR8UyJkZYFPQtIIeXyXPNM+IO52cZLA05IYOJWC1H7IwXFmZMuX2tbv8xzcR769wGNs/5zkTwxDEHZ9kjBY+ss4PBCKIojMRIPVlRMdDIlbt6Y/7TNOu8IAM3QyLT+/7eFuAMDd6z7cve58daDm2bmgmODbsRS4A0xPPXpQVtPr2PXu6ckHU/iuDE0YRMbci4ULiEvPYnl2cb60oErM3t2btAIFNn4E73jI/ZpMAo3jv6TL2gUOXaqrX8srGKK6rs4mbSM6xsUW3afmQkpKF2HFPyH1m+2X2NSpnAMxADoEiEQBp0WtCwicvp7MDfdjhFpoRoa0pPjE0GIvxdxl/gqWDr07wIMALtx7x8ZU/QIAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Costa Rica',\n    code: '506',\n    iso: 'CR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjc2MENDQjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjc2MENDQzE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0M5MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0NBMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Gc94EgAAADRJREFUeNpiZJAuZaANYGKgGRiaRjP++fxlNECQAMslOaPRABk1ejTLEB8go+U13YwGCDAAKSoIL49OOfsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Croatia',\n    code: '385',\n    iso: 'HR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDNjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDNzE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0QxMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0QyMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JdsChwAAAshJREFUeNrEVc1rE0EU/83sbr5smtgmbalpTQ+2IehFrSCipE1BRD0qtAUVBG+tIK0H/wK9iQieBPEmiqkIiieLbRWjtaVSP2mRSDCxdTdpmmSz2Q93Nz14ywQPfTDL23lv3szvN2/eI5+C7RvYBuHN4WV1NggBryrQKQe+UrHnVKcTVNeg8g4Qw2DemLI4KTyPFklEz+8MFE8TiCCAd7fCKfjRRVW0NjvQbdp86znzAJQZcV0J5EXMHRkC5/eivLgGyRCwfDUG2UUgTywjJ1FcOC/Cly2gb3oBRa/7/xETVYW3xGHq0gmMP5zEIh9CIS1iPpjCVFRBauwHSodFXJ+YxIPJcyBVB7iqUh+xspat6ySb48DdBF6NjOH1yRj6b71Fz7cOeLKtiHwV0XmqD3ShgsjNeyho61BzZj7UA5QaHqnjQ+Asb6Lsa8NTeNAmZhEOtiMwMwNPtYiN3jiWzXvlQiqOShLKWhWqy10/0YwGRDLdC5E9tr4aDhtftpYXjw8ZK42FMoj1YXpKmoaNxwlUf2WwuTAP/2AcxOGA9PwZmvbug9DVBd/ZMyZBhPFtMopWKNTQJd8Zs+YyNZe3/+dMPZ9I2LpeLjMjboifj5Q3Vgfjtv79YL/xuaPT1lPDo8aShUHXmWPx7EVOh3cgBq57N4rJJFzRKLRQyNa5QADNx2Ko5TI71TLjsHhUjMWk8fKfG5q2aH/yyLBtNR+meGT44v0sG15e85TT7hv7qT94qBelF7PQZBne00OoLK/g8lwpn3P1lCipcizxTF5GGSu7RaGEyK4w7ry/je54FEinIa7mMT5wDW+WPpj2IOqXjq1otOUKe0vhBOh/SiZ8GR1tTgiU4GfG6lICaNBsclqF+Y75hpqoWZXoTgf0CkFGdtfe7A4C6hJMm8KeWA1vXMtGUIe1rLrFAm/PNSoU2yTW0QvbsfFfAQYAfYmMzgM7drcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cuba',\n    code: '53',\n    iso: 'CU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDQTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDQjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0M4MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFCQTYxQ0M5MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9/ZNdQAAAztJREFUeNq8ll9oHFUUxn+zM7OT3c3spMlus8kS3RL/RU1JokglJrRaFH3pg2+C+CAICq0PRqigVYrStFhEfBEVXwQRn0RQEESsT2KqjUhrpaR/NFmbpNlsdjO7m/l3PZsWRXxK2PXCMHDnzj33nO/7zne19/v3LxxL77MvWrsgrEK0DsRo99Dcrj61FOvgw877OG4/gGf0QLACymvrAbSZzHClO6rbhXCVH8w8b6cn+CQ1JjHjsPon+EF7Ap/J3FVRYEeS3UBYwYlqfGHdxpv2OBdGHyTyqgSLy6hItTSwsRldHp2Ied2mqHfyUGOOkbVzVO+tkp9+EWdoF76sCV2vtRnL2/5nRiOS7DpUgFG6gjVQIDf1HNahgy3N+D/s0bQYqlymUfdp9N3J8kKF088f4peh+yl9+lmLM9Y0G6WI6g18d5HuRw/gC67rP/2I6WSIWQkaSxdR1Ol55AD51w5zaeQeUrJBd7ghUGnbDBxFNrqOmeuldu5ndp+fYfXzr/jj6Ksk+4fwrhaJmZYQLSAoz+HoXXw9OMEJZx9XzF46RH6m8rckv+usDiM7qJXJPvkEuReepeOOQZGxx9o3p5h/6Q0av81hpJwb4Ogo1yXrXmNZS/BRapS3RIIQv6H9LWCsGTpGMk3xg5O4M2eunygeZ/HYu6zPzkjQrn/9pGLCAymvoxqkow2Z2KacmvhqcgYzuRMVBBSPniQ5Oow1eBPad80lsrOQTiDBX7qAQ5Jvb53geHovZ60BKfWqlLqZbWLrclK+j5HZiZF1KH//JVaiQHJsmNrZ8+jxBN7SvGi5xI49+7n59Zf5fXxy89RZIVds2+Rq6jimoaQ9hmtVjJ4dRG5NMmyCoVGvzZHK303+yBTZZ55qUwOREUlZLRViXruMmcnSe/BpkkcOyxeztS3zb9JIyZo8KXgl1hsuK489Tv8rUxh7douCxbRq/iYfWmoSoSCVEy/uFU8+FS8w3TnO7MjDssLDL15FJNdadzotttipNuxbghK/GhneEVd6T7wZXfpSWWzR89tji2td/aqu6dIIxpi2J1mJ90lNy1LSensvAh/nJhdOpPfas4nbhVXC5LDyv1x9/hJgAIwQQwS2sEaJAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Cyprus',\n    code: '357',\n    iso: 'CY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDRTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDRjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0NDMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFCQTYxQ0NEMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+efiilAAAAf5JREFUeNrslU1rE1EUhp+ZZNJJMGm0Wj9IpVWsSsGvpQa6qRR/gBsRN+IPcONG0JXgtgsFFQS17lwU/AALoqApQQwUxVJbBTW2jK10Mp0kk5kkc71pcCFS00JiNp7N5R7uPe9733PuOYoQYpk2mCKBRTuAVdpkLQP27XmEa/87YOEsUXx6nvLsI7nxmwi8WjBRwUldxx49gRII0XHoLIreuWqY4PrLUaX08grVnEMw0Sepa1TnMpQyD1AjcTacvEFwZ7K5VV3JvkHdmMAa6cN7V0LtrkWQj83LRYct1zzp0Jr0naoe1cX3uJk7FJ6MENgekgy8epL8erJEQboMiAwNET31GKTUjayx1GoQ5/ll8mMP0fprIB5Kx6+8QnlGAg5LwNPn8IvGXwtq3VJXshOYV48hypJHpK6mKMrLkra2Z5DomXuosZ7WdC7xZRxl4jZFO4uX/0Y4eQl18160XcnWtkz5WGpNvWtFgpxMUvyPMwu2RUyPoGta8zqXYf7gwuhNbqVTzPu/gxqWyd30Cy6O3cdYNtcUb83/eFsszpFED+mZSUxrgQOJXoYHDjM+Ncnrz7N8t3Irvh2dm5o/nWpHn02/JfVpmt6urQz2D/Dq4xQfjDmO7t7H8f0HCQYCrRuLX5cWCWshonqYgutiu44k0v1/HjcsLrsdwD8FGACqhNA6kzA7CgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Czech Republic',\n    code: '420',\n    iso: 'CZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCMTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCMjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0QwMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkIwMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jrdRWwAAAjdJREFUeNq8lk1o02AYx/95k2aStKDr1s1VaPUgKKs7iuBFbSfDqzsJwtSriFdBp3VszsNwoHgR3MmL280Vdd51qOjBdrCt9aCttVK3Np1NszbxSVhxDFf2kfQJCSFf//f3/p4Xwl0YfJZ+cqO/a48oKGhOeWjPAIErRV/4pvH6/YLRxCqy1qMHkPu5jN7zoxgYmURFqzYFmxlVHV6/F/LBDkw8isHfdwczHxadDzYPek1Hi8ij9VgQ+V8F9Pbfx6WRKagO0rP6iWHQXq2hzaQP+vD04QsEzkXxxiF6tvFCrU7fE7TcR0z3w5PQVmvOBv+jX3N/iNw/jqGr7zao850Nrpfl3kX03QHkcwWcJfeX702hsrp799y+yK3i2qJuPEKeQVU1rMynwfUcwcToAC6GfEBFtWZom6UIW36UGo+JInDiOIxUEomTp1Ho0JDnRNS2Hwxha4tdx5LogS7KiKQ/Yjwzg8Plb5hbMF/naLM5mNEcaoyHIrVDqhRwN/Ec17+/xQovYm6vHzwNiNuhY6EhZQtRumScyX7Gg+RLdJey+Cp58YcJEOj+bkr4PyWDInfCoy4hOj+Nq5lZlJkLcXenNSB+B93UMNj86G9yaYgSwtlPGEu+Qqj0gyjbiNJlTa1dJWyklNRlDMXJZfodSuTyi3u/FWhnqBW8vmPD5HKMXIbIZYpclm1wuWlwXm6Hu1JENDGNa+lZa0rtdLlp8KlcXBlfjHnIpZIilyYl7xDlul8f5a8AAwAi6Fw0Cqzr+gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Democratic Republic of the Congo',\n    code: '243',\n    iso: 'CD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGOTJFRENBQTE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGOTJFRENBQjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MkVEQ0E4MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY5MkVEQ0E5MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ljpEIwAABUxJREFUeNqslWtsk2UYhq/va7v19K3dBmOUwYBxxoBDFw4CQZQs/NCFhBAMKIQgYNgYEASNogElQnQ4YEDEAyD8UCQahYgZBgVEnMiQgbDJOIxtDBiuo13Xc+vTdiZDxRDwTd6kP94+93O4r+fTs+tiI+CQ60aJQDAVVD/oPBDVcf8nCopcXyYErHR/qJItw9dScKJcu/yW9ZpeXmgdDzWCaUy2H6Y20I0Lvt6SgO8+BaWAQFfw2rENOM8buVsoqt0Oiz1U7uiNN2rQVJQghK3QliMP01jVZzUTrFXQIk3wOxKBiNybphKGkNTR2p+krm5en/oKN7qNp2hNGZceN3Fk+wCiRhVzSgg9wXTGpR5hSu/vuR6yk2c9w62uX2E1tGBSvay9PotI2JRo/38Jhi2SvCSa4aQwfx1vejdj21xPw0Y7l1oHYEoOkWIL4r2twxgIoLDjpis9uUHbm7OCCRkHCftS0Rmc8UCza9ex8+Y0EfVK8NBdBCUpTxbY25k+5mPWUkb257/RvMFCdZ0DoyGCwRyJCyrSuWGPXsW8BLfC7hoXgW4aXhtHR41nbNZRmQ/kV5RT3jRJAtbGFDruX4LS+ohBBLPBHCJ/1B5KrBsZeqAC93oDZ85lo6pRjFoEv1slHFEYOrAeW7Gf6oI8lrctduuJir/k5mZ+zSPmahacKmF+xh5mOT6k3DlRVHQdc6Zj1qq0tC/oVfIe28+mzHcZ+d0hfG+rVPzSV17IDO1hgh6Vttt6BjiayChuo2n6QIooZNeR2eC0Shm7LroIpWpPpB9AlQQO1k8jRWvi6YxP+aJlEp5wilQYSOh6paWRZAaOOMymnBImHd9HdD1UHsrGTxJmW4iQT6Hdr6ePvZmei5y4ZvZgpbmQjRVz4XoXsDRJ0m3uhLAS0tRQCtGwRjS5QZyZKuMzQ3Kj1KpLsBi04hh6knVDyph5djeUhajam4ULExYtJAYUwXY9DpOTnDnNBOamU9JjDqt+Xoi/LjaSWxDzTmI3dAjHWVY6tbQD/kCXOIvW/jWsyd3MossfwVYP1TszaY6kYLEE43/ztBlIl/0zZKZUU2hmW/9nWXGqmNaawWBslQKaJaTa2SedhTs5NWiXaF3RZzeycmQZL938gKT3b3FpWxcahHWLKYSqj+IRi2j4GF5QD8Uqe4Y9w9LqYhqr8iBJNp9REon+zZj/EI6jEVsk3aHbHxSP2cZrnvdI21lH4xZhsSUjzqLOGBU09CQTZMTEKyiL4ZvRBSytW8T5ypgZxQ+m+o7uqXcjX1KOCUaM8lOcavMybfI2SvSlZO05z60SCz/UyxbSR9DsQXytOkL+CLkPX8S0LEJl/jgW3VjCsS+niC9EyHI50bE72/rvO4etUfFHWMsf/Qmltg0M2ncCV0kSZ6t7oRMWk1OERZdKKMZi/3rsy/xceCqX4ralHDg+HcRQWOqkuGCH4D0dtzK6ar/rncxSbczBbwmUKvx6ojdhcbLJFibQruAP6hjY4xoZsuAbpg7iZbWQ3T8+J7tcbGEVAnTe+/mKuZXIPpMrstGrnT6YjTfGoizwcEDQ8AmLacLiQifOGb1YnTKf0p+ehyb56liuC4vuB/lsupUqY5bL7TNppjiLYuZ2A44kJ/3mNROen8razHmsqlhI8EpPEbyDxQc5buWktU/c1TEWuwiLg2cJAgtMbO03m1dPL6SlZqi4VFhMar4n09yrsN7fphPTRxlb8DtKkbCYO4MXq4u4+tlIqa5dnF6bYPHBq7zT1TV5PRtzlt92HHtytPuFi8s5d3JiYjfHWeT/qrDziS2ra38KMABPHyYU69kw6AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Denmark',\n    code: '45',\n    iso: 'DK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCNTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCNjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3OEU3MkIzMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkI0MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YilnMAAAAFRJREFUeNpivMBj/J+BSKD/+cxnEH2R14SXgULAQqJ6ii2EASaGAQKjFo9aPPwsZvwPBCPKxyzA4o9oxcAikwFaZI4mrlGLRy0euhZ/hmKKAUCAAQC4DxA6JMoNqgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Djibouti',\n    code: '253',\n    iso: 'DJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCOTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCQTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3OEU3MkI3MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkI4MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LIWFKAAAAkdJREFUeNq0ls9PE0EYhp/dbtllbUtLREmtCSYmvfAncdeoJy8aDImejB6MHDxhTJADGBIDJCaSeICEeBAL2ipGEBCbVqgabBf6g3Z3mMXUgyi04L7JHibZmed7v3lnMsrSj0rmUSIfncuWrA5TI9KqYgu8VFB+WUUIUXAHU6tFhpN50vka0aCG6Ve8LMD6DXZHlZrg6YLF2AeLUtUhFvLjU8ERHoPrym3VGHyTZ1p2wfSrnA74EBIuvAbXlVyvMCQLSG2UORXQCBs+7P9j/2BwXZNL2zxJFdiQnTgT0tA15bjtbwzsqlgVjCQLPFu09qBuABWFvS3wFFxXplBlcD7PzFqJNkPlpHmk/f8D7K7g2piehs5OiMf/OXM2U+KxLGB1s0ZXKIzh0+Txc47heHwcenqguxtGRyEWO3CFhTT0z2VF2SkKQ9MagcoDSn7/n7oOW1uws3Mo1FVCGWC0+kDYjiJMoTfqWOx3vLIik1SElpZfYNP868znX6e48voGy7mX6KEOWjRDhs7xLlyft9NclMDJT0PgDxAJnkOV2RDNxatxcNmucD11h/7UPahaBNvi6KrWjMvmwQPLI1ybv8nmz48YoS4C/pAE2t5dIDPfZrmU6CWVfoFqdhAxozIWdrNtbRycLeW4PNfH2OJDGX6dcPA88pY8alsPB9ekm1vv73P77V3sco5AOE6rBNvHa+vB4OEvE1xN9LH+PSmPx1mCejuOU/PuITC/+S5zYbY3+mptwlKMdiInYiiypQLPnh97T59dAQYAfWNBGb6d818AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Dominica',\n    code: '1-767',\n    iso: 'DM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3MDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUE5QkY3MTE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjZFMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjZGMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yQnKJAAAAtZJREFUeNrElUtIVGEUx3/3znXGmbIZUxAdH4mJaWkUYdCDoCijFj2IgjYt2gQVREURWVCWPSAoqE27iIqKatE7aBEmUYFEadlz0pSkdLRGZ5xx5n6daVp774DkgbO49xzO//v/v/Odo3FuyW/sWngiB6vaODTnEwUV0GdWEf3Vxtn3t9l+bQfklNouZYhnMQ6mM06WPrASz4CQBjEt9UtT6QMbtjPNJKhOqHgEsqEwmrzjFGKoPE/iI6kcfSyBkwVd4vkxqi9LSzwrpXGCVxhLYHk9lQscUJEPQ5ITsQeucXK1siXvlBH2XQtS+0hREvIw6B/CzBrE1d5Lt5HJ57pS9m7yQIczlW/F+GjNa2vQEvBe9bD1RhaXppj05/WQHS3H1+4lkP+KaKaTPXdjTKzqY2Cz0A78pTQ6Y/Xd4nzJy8gVX1nE8dYy9nRG0B1h1q+voK9rOo+bmiQYpKHEywF/JzwOpOSOWjBODoJRCcv1uaXIxXg2NX5F0IgxKZ7L1DfVXF/TzOvWCNMGDOrCCd4/m8za7ABBUVyLWwD3mdNGz0iAU9fxxHTyeoeJa7qoOMDSd5kcW5XHhdpvnHqYhanHGZHkfn0GwWjcUmqUXdtwWNX7fWqYeUpRpe7MnK24OF/tXDxLvueqI8U5Kla3y3Y54/znB9Yt6NZx1Zo0XPVyT+Tuz3CyzB3gVrODl/3F3CvS2d85gSubDH73PEIbMm08p4Yy6+Z3im6FOZy+4KboaYTcsIdEgcmwyOvv+sJHRwY9iyrZtln2TfdPaSxlA/jcYmVrgLgF3Ovi0pMuNjaFufnTJ08iwZrChdxf5GTFrGYBlK4alHIOW7Naw9J1LfVEOlw83/ILXn6iMdjC7l75+eIMLSfWwZfu1ORy2KgnbqS1TpSJ76tsiCJ46zaJmKnZ6PvwQ2JGWivHSHutJA88LGCiaOLfJSntf6zFMbIk49B4AP8RYABEcEyuCxX37QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Dominican Republic',\n    code: '1-809, 1-829, 1-849',\n    iso: 'DO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3NDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUE5QkY3NTE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjcyMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjczMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bJEP0QAAAXtJREFUeNrslM8rw2Ecx1/f72ZjG7MNw3yxidlhuRE5qFH8D1yknJUiBwc5OTiSUi6O7i4yNxxGEYWy/GhfTZvJj8nM15oc5PJMmcve9dSnp3fP63me9/N5JPzDGvCAiMIq/YN9rC+OfZu+HJ4iurKEsdyDoEr1XwV5lsw/qQDOm/TcxMXdj7e83302QPIlSfJdw24ykX6655U4csIsDm7p8AmbL2+cNPqa2NkOcXB1jYU0VR43fo8Xu7MTWakRXkvSMsrlimKJOIGxGVprXUw83zF3dMjI8jyB+ua/zfj0LUa1IjEQTxKVKth1QSiy/4uMc9SbycqFekzViZk1o5WwdojX2fD34LZUCaNKO6pRxa+TGaeX7uLGnMHSWc+QcMapSBRLoAtlYZonLQ2ZYZYNTM6usry5h9tpEz/x/daGsPkFFb3bka3Nki6zbV22Pg9HiAWDxGyKONhQ7hI2a4kURRbHzxdqLwNTNdRVFr7MAvhHHz/kmVv6IcAA7rhthUQGtAoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'East Timor',\n    code: '670',\n    iso: 'TL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQkUyNkYxQzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQkUyNkYxRDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzU3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU4MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yD9vMAAAA2FJREFUeNq0ll9oHFUUxn/zdxN3N4mUdZNsInWNoVJwK0WFUhCLICKoNaQvkupTqXlJyUNqwbeANKBUQa2CGkNhV1daQnxIkYpYiQ/ii4hRUomVdmPTYNoku5n9N3M9k81Gq9Gk+XPhMpdz7/Cd73zfPTPa87vCmQ/2RMOBHzV+Gs9j3a2jWYDHtg5NptqzL0DyYBP3z9Ty6zuLOHkPu3V7E/CB52WGjZhG6tVmOu9tIHu6wNV0AaVpWBLfjgR0Tass3Izi0AsZXjo7Rehtm11f1FH3mE75d0XxskK5/uktZCzA80oR/nsw0R7g03Ot3Lc7SPGMw/RQkdw3HkpY21IBzM1XYFXgqgYfnmzixeN3wUKZ3Md5bpxzWfiygmg1b06CFWB/oWTxz3H0uQZOv9YM9wjNyTzZC54kUCZ7URCl/Bv1gCF4J+QZ0HWdnp4eHEdKOz1NIpFgR6SR0a9+Y/izOfbtrCH6YBC7TVH/uM4du3U8B/I/eLg3RP6QJOBLoNZprurC8zxM02RsbIyBgQFGRkYkWFra+36ySOLZSc68MSNv2FA2CAp4y7s2rW/ZhB41KE8pSmJQzVjWab3A8Xic9vZ2gsEgfX19jI6OMj4+fsvhwyemOPDEL1KRMtwUhOuK4JMGre/bxIcDNDwjCcwt34C1gH1ZI5EIvb29dHR0rGx0dXXR3d2NYRi3vPDHrIurllP2dZUcqBHN7tTQA+vX2r/G86ZlLbm6VCrhui7pdJrBwUFisRjJZIpCIb90+NTLUY4di8Cc7yqZtobztZjtbJmFz108ScJu0So6r6G1WQWsjv7+fgFLMjExsRLbGTFF3xb2H6yHXFEYeuS/Vcx+UmL+vItyKu42a26TsSQX/q8DnQfCDJ2KUfuAmCpTwLm4zPCClDxXaSha4Pavk/l/FXn9eJTek1G5r8IwtcjssDSQ8z6gEkAdS7b8braRJmKuFmxrskimW3hofz3e8CLXhkrSsQQwW9HQatSWANUm2ua/gA911ZF6M4aeMbjWMcdNX8NipUVWGaot+FL9BSy+eW+gkSN7d1B4pcjlj3K4hQrDqoZqCz+NPnA4vtci1dnEwzMhrjyVZeG6/AjIn4hVs3EN13T1022hzNAj0XDDJYOfv3MwxDRG7dayW238KcAADyNSlrek0dQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ecuador',\n    code: '593',\n    iso: 'EC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3ODE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQwQzE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjc2MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjc3MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oj8tnwAAAr1JREFUeNrUlU9IFGEYxn/fzOy66667urrrCusfyOgSWoc0KihLOllEXQsiiIgOdTG6dK1OdalTBxEpI+pi9IfoYBjZIaICpTAzJF1bXbdVd51d50+fa+dmRWHpY2aYj2+G533e93neVxifIguUYGnyrigFsEKJlraur21Q3fLhMkFX5VYgPPLdUDBzArndZMb2X9CIBR6JsxwAv4WotLB0nzyQV9Rew7U3EViReVEDWZ49Ndh/KkbkYB1PXtbS06ehtijsOB6iv99AqciiuFaRnakLqep/xiiEXSChqyEGXsUQ+TGGRxKk9ZPUhBYQ+kN2NjeQczVy4nASnzqLsOQ/trJRxjK9wmQq2UFTSKN5e5zWPStYK3GOtOe5cdWLHpqkOawxs9iJbSmSr+XM2B4LOFfFb6D/CPFx3OLaA6+MpYuGA9W4ZHF/vR/n7WQvPecjdLTKFNekYVl1VvXygs+5xrrANH4TqA3hmt5G+74Y0WPnuPl8Hl/mBZ3lcaL1X9GzM4hUECtfhJ2arlwsQtVu1KUMvZcesaXKJpEYwj8ZJpZapFx8ptHv5fucn0O3L2O6gjLSnDNwYipShK7dMG3ijSdpbGtl4p6XvsoBaqvc1A8ZZI66iWTSxEfrISz9JooAJpApAliHXBXj71a40D3M45k25r99IRCupHrrCme6Jhh5Iz1XUQbB1dZvOIuLvXedxSWbU1m1j2B6lLP+16R2ecgOZqVtBN4uP3UfdO783M1idQuZZGbNxg5WFp62W47AwrSkZ20WTB/p8Uqo0+mevo9mG1yPnZZl8OJrmiNaniE+q2Apzi4VgzUtdlEdUzYFS9pH1WyMvErQWCqcpTU/mtvANiWYbcqGIwpNx4my1phPrW+sGGuhLLs8hYDCZkJKQBSiK8AVOSi0lOrd0HjLqeX/3zxeLAXwHwEGAOXk99HjIQVFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Egypt',\n    code: '20',\n    iso: 'EG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QkM4MTQwRjE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQxMDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDBEMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDBFMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4WJtkQAAAL5JREFUeNpiPCeo9p9hAAATwwCBUYtHLaYZYPz///9HIM0HxCRmqw9AzALEPCTbCcSfWKAMBiQaP/j1iIHhxwkGBg5NiFt/3GRgYDcEYhWSLGchOYz+/WD4eyucgVEsg4GBmZvh//NeBiati0S6GgFItvj/v+9AXXwMjBwaQHczMfxn5gUK/iTZ/SRbzPjvEwOzZBGQ8Qsc1MzSpcBQ+EivxPUDiK9BtegAMTvJiYuR9NQ8WoCMWjxqMXYAEGAAUBIvbfhWcKoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'El Salvador',\n    code: '503',\n    iso: 'SV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QkM4MTQxMzE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQxNDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDExMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDEyMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/anEfAAAALNJREFUeNpiZFCYz0AbwMRAMzBqNP2MZvz//z+NjGYhWuU3Bob3YPV8DAycVHT1j2ePTlx/LG8ox3Tt6TdFydfS8voMDPxUCOt/f59VzLxy+ehCIbbpR46eqph2+O+fO9QJkP8MrB+/Xnom8H7FZd4bP39/+gkMHGHqpBBmZvHsENlzL0RW7bJ5/uZVdog8M4sMFVPInwfPNp299N1Ij1dRypOBgXUgEx/jaMk3ajReABBgAAmeREpJl5cdAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Equatorial Guinea',\n    code: '240',\n    iso: 'GQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFNDE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFNTE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDE1MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDE2MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Tw5JAwAAAphJREFUeNq8lktPE1EUx/935jKlb0BCCYagEGJCdKE7ExMXfgE/gHFlaFwoK9mwUcQmbFyYmlA3xrgw0W9AQkI0xhijRNGqUay1D7AIQkceHTpzPXdaISMPKdje5Exm7pw7v/M/95yZYR2RcOZoe6xtuQC9aAKModrDT5blycwteYJj7TH/UgGoFVyB9hXJdBSTqTC8LoCrgBBVB0OBmgdcXwh+G5Pp2sEVCKLY8CkkU1J5b03g3D6uw0vKFQXoOXgHn2eBJYOclL9WUQ0oZDIuOzixV7ADnkAicZNgbtF3+onI6QewsGxCtUkW+bjBeT2stax9zbQ2WMUihPmLAlJ3l2XA4o4pG75I8BV8+jDAxMlGXDvjdIEoQCy+BuPNFLYPMCgAbzet81YimCmbpiTcRT3lSeNSdIJFxuZYKbllYy42/0NjV0cfsLMP+9irqRQjqNNnZ9sGLAdlFG7yaVEwEI2j99E3x+281oRnb8fx9N0o5uo8+yiubXeD4KbASsFyTHsCAVxuPQ9f8QKOd5yCYRrQVK3CdtpyB8gMgs0YuHLxCO6fO7R+KzOdRTz+EaveNWS1WUzE32BmOvcfFMvKNWmfeSv6+1vE8AlnpTaFWhGq96Cxuwsq56ij3mv2VVZYksI3QTntWX0bwu+jYvjuS8u414iFpaLdTpZlQXNp6AkE8T2Xox4WCIVC0PN5zBYK1P/KbsCqs50kVBZKsBPhFxGMjA2y+TzUuS3SIue0MiNhbZRqBUPlG0rdBO1C7/MhjIxfR97vh94cgFuYOz5B2/Mr8096GzoJegMxCfX58dMVgPoP6P4+ElJpg1QaIeggKfVVHVoCBw+XlRLUR1AtWHWonWpSqsceD/kpvXotlJZ/ffTfAgwAojL4tK6cs5UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Eritrea',\n    code: '291',\n    iso: 'ER',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFODE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFOTE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUU2MTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGQzM4QUU3MTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Jln83QAABGBJREFUeNqcVstvG0Uc/mb26XWcOHHjhDSv5l2prcojFKkHkHpCnLhwiTgjxAWJG/wBiBtcKnFBHAD1wAFRKAcEQhyQEDRNLYU0TkAN0KaJm4cdr73enZ3lN7tpsfOGlVZ+jX/fN99jbDZ3evre99NhZm4ixK3xEIuDEn5nBHAAOwxtFQYrwJEXa34R4dhLrWcCz0VajBJhS5e4Myxxc5JITIWYJTKFUQmZjZKBVYYU3TYRYeothv91qVFsXb9UoccMk4AjGZwm/hV689akxG0i8CsRmVOKDJAiuSihvUsk1UheRv8B/DHwvg9oih1ytMVqJDw36V7oF7h9kYgoa4jUnYEQXj56xBRONbGGRXs9OA6YFkcBQ0iARlbAfCaALHPIFY72oRD6LxaSAEjscImFIYmfLhCJieRuyQiRSB+SkVZgApUEyo0IxrMC2fcrCIo6vM9t6JMC9owH/1sT229noHlAir6SborXo4zMUkZmVUbImsJYa0ZiRfy9wORzKGlnr7uwX2rAvW7D/8qE86qH2ic2WFeEttdcMM7gfpiCN2dC02SMe1xGbk7ttmY3Iy3AoeCwzvvovFFG7V0Hm1fb4Qw3CLgO8/kAGy9mY0V6ChsQSxq2ZjogPVJI3x8r5XEqJKmbiGwTyfkRCVVdvrdh5nkBSUMrV9MweYCua2XotFABaX30CB31j1LQL5Fx0eE5VlWrEaESyb9O9wblwSQil5d0vPG11QQsk+QaTxFwUaNnDBHJvvMeidcWwf/RQLhF4BQ7/2cduKfBeFLE605yYNAouE1EeHOrGUs2oU0H0BjJ4UgEBR3hXxp0IqT0U0CsgxY5EbReeXRnjiDCW046HkE+4GCUQuURp+FdyyWEqxyNGxaMESW1BkvJPErPF7WTHxu0zBRkndhCt1j5F5ipGeRB/RvqKQUmS96KhxSgl3Mwzgp0fFyOq9V2sQ7rzRoaHzgIlg1wLg/FMoRATmwS0F10h3/ChIel7hF8+fQre+pErEI6rVIv+Oj4bhPBNQtrM93IXHbBqQaRy9D+xTbCH0yUrnQlkhky2bTaURjQSbdDmlTj0FA/sNwzisWhCarRBBaGp7DSO4zV3BMHnFw0R0iSc8KH81YdvEzDzwmE8zoiEkPMa6h/moKscti0gwwB8RiIUowcVvKDWO4fw29nzmJpYJxOskmsdfYg0HSkvRoytR3Yvnf4Wa06LYl76lwdzjs1+J9ZaFw3YyAL2zFDF3nc7R3EUv84Fs5MoUi7+v30CNazeXimDcerI1vdjoFO/COReKSkq1Jz3VhLGoOV7kEUSboi7aYwegF/9I2glD0F37CQrruPd8QjeWTV9JbUHeDRYn48BlocbPXI102SzkW7W0Hfw1VwSUCMNY07uma6I2qZNErx0hpOoZgf2+fRA/JIaAZJpzxSQPepbq01kjEoO+bvSRPwWmf+fmH0SqbZo5LyyLDpB75GHpUxsP73PqCD50cH/904YN0/AgwA07gejJviOMwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Estonia',\n    code: '372',\n    iso: 'EE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFQzE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFRDE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUVBMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGQzM4QUVCMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+r3fpugAAACxJREFUeNpitCo9wkAbwMRAMzBqNP2MHgWjYMAA4////0dz46jRA2I0QIABABDSBIkzwazwAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Ethiopia',\n    code: '251',\n    iso: 'ET',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRjMwQjczRDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRjMwQjczRTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUVFMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNGMzBCNzNDMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yFhTVwAAAsBJREFUeNrUlU1oE0EYhp/t7rbJJv1JMaVJbUuLP4XowVapIGIv/hzUIh4VqScRUQ+CevDkwYMHL4qg0oJXUSiK4E3QQ0V78eK/TdVG20hjbX43ye74xYDgpRsRKQ4MzM7Mzvu97/fONxrHti2yDM2Q3rgcwHUsUzP+/BcNVBkcW8YKdJ9MGdXxPwHWRBzlQi4hOpngj1aDKHyuBuGPyLxR3VMTcKrBe5eqgBbA9wmiO6Frr4x7ZEEHewpmHki/C/kOicWS7g1u7BqY9zaC5tDizjCujqPWnCTvNLOuYQKrzuZpdoeQ34IKRdjvXuRb3UpcpXsLqJIh5ZlTf4p3ySFWTzyU73mR6SsH2x4Q1HPcmN2HTYvIHWFy824GovclHa2eOdeceFh5saU+xeDkPRLpGH1Nk4TMFBsCbyQkxYt8D3OFCG8z6/H5Znk5uB1KAWFtLi112dWW3FBv5MhmozxL99Em3LY0PyNipLie3EfZNTnSfodF/zTvJIBXmbXMpntpt95TLrX+/T1WYqKAyLpQCnNzdj9p16okgIKwyrv1jM4N86XQJV7L4lSMWMPVMrygXWURDCSIBeK8tcPkZe51vpuj7bdlTeNpJoYtZmrSCnRZH4gE4ygn6EnJ0MOOB1s5wXI51z/KnsfDdBpxOsw5LsyMUBbGI+FxLMNmRu/k0sYz1HUUcHKNotHS52rJsz2erta1Eq12ghP+81weOgVFqVbFuKzJ4cYqCBQ5/OgqY4unpCx0iNymt6unemOeCVEiZdDJ0BZMcGXTYcb6D/BxRYhKmYim0hx6fovTT64x/z3Md6MZTXO87/HHrX01FVlH02lwikQWPpHzNRIP9Qonje6FaRpz35hrWUne9KG7Tm0VuFbgX+w1DV+5iFXM/XR2zvQLYINUIvVvX6cKgK2b2P7m3+b+q/c4vRzAPwQYAEGjBC1vMOsHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Falkland Islands',\n    code: '500',\n    iso: 'FK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YzMEI3NDIxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YzMEI3NDExNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQ0YxMEIyNURBNzM0NDZBNUFDQ0ZCMDM0M0E2RUFGQjkiIHN0UmVmOmRvY3VtZW50SUQ9IkNGMTBCMjVEQTczNDQ2QTVBQ0NGQjAzNDNBNkVBRkI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oe8x+wAAA+dJREFUeNq0VV1MHFUYvffOnZnd2Z2dnYVdWaBAC8rWsqBESa0KbdKSRh+agqYJ6YNGjWmsTeShryb6ZOKzaW2JiSTGB6Ox2iaIP6VQK9BCKa2lrMDS/SngQrvL7s7uzNx7vVvbmvhiQuQ+zCSTfOc793znfANf6OkHm3MQ2LSD3vfMDh+Q+955OtTRFL1Hx+8K74alM1/0frjdWi6rjmJdF+FxT3y4KXriJS/S1FzB/k9QyBlTgI+sPb6zL9L7zO0Tu0I/HQufjOJiYaEILEvXnnSpe6+P9jSr6+66D1xN30TyMH5NVWXKiyEgNrNsBh/CMcawiDCGjD34go/tDqY9rTNyTpsc63xO7nyrfearxDTIbpHo6TDRJS/oPjC+Klhnr74qk599SiZvy2KpXhAAhZQwgBGklGKuAOIN+PsBNpzV64MFkizSGBVtwJwgzwAxUQDTFQEgpteYd5crQK7BJSTlwNudvSnZo1qFtdX883vKu3dXZrIkRaCEBV9AHRmK/vBdzOtzQQgZb5Y41BNZzueQ2NyxA49PaBLJCK7pU6fqD3aFXmyeuzCZtmG8sSX55x0sYlAUBdPkWpqmrXqdtdsCtVhxerxAkFfIvZHfFm2LPlIcH3XuCh9pP7zVajRurevSl9XPNgr5+k8/znYfPPfK/r2vrTZOjJ2ZWu8vfyrqrsCXxlykyEUVuLOoEMmSRCzS8ERdYjG6Rk1ZVBGC/0AfDzu6lr6VJ2OfTRe/15vODi3018bbgX05uvjm0YFmD3l9T9Whmvl9yanPR4f67BqKJQkwi1JdEht09+nBQfyH4lXdlUFNhEEkSAzy2ZYaYBiLf/LLld/DbcNqGY3Ew35zOCUvtr6RWpZDYnH+avK9K7cHuto6/DUW+tFJCgZ280HZFHLiTgZfbtmHjby2NaRWakuzFw3L1ID4N2thytE5WtW6tJINmBldlSTbml6jI6GdkTuGy8jqulLukWevLQ5cTk64ql0Skhi57wDBZMQfyOKc5dT8C3PzkuYZvJBKxtcVRSyx5l6p9kq2vY4ULh6ilHEHlTlBWXoJOHi9SGgJx+9T/CXrGoDwKHBPA0VzzNzMJi6mHwumzg9EK30gY9DJacOjKxDQjQedo2cLsGtLdHvs11tzat22HbnyNufJj1punjNVD4Fo49AMQAcrpCzfiLuFIKWmeT/K0CkQJMEgNgz4KI0bWmnUpeDz6YriitVUxRa+vpTLgBuVhwXEfGb6fvaFDUKXNKGsXC4CGSZTbC5BJdlRJmcgYbQ0CAA3zPrhPio9HBJwSKX8cJnYvy5HkYSY9f9uasY7oU39FWwe9F8CDAAMDrLSTxhgUgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Faroe Islands',\n    code: '298',\n    iso: 'FO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YzMEI3NDYxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YzMEI3NDUxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQTQwRERENTE2RDdEODBFM0EwRTg2QkI4NUIwMjMxMTQiIHN0UmVmOmRvY3VtZW50SUQ9IkE0MERERDUxNkQ3RDgwRTNBMEU4NkJCODVCMDIzMTE0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qirpigAAAaZJREFUeNrsVM8rRFEUPufcNzOM8bMhiiEL/gAxUmxkQzayUChFSvkr/AMWUrKwkJI9O5ONhRT5uWChNKWxGIOeR71373EfjSbewlU2cu7m3Hfu+d65537ng1wux0E2tnQ82DR9AvEzqBpunBqaP2RDI/g1+4f+DC1EMDoict5nBtTLFLq0NBwYiAhSkvPQygoZV22NLx4RFTOqgqqQUKZy0c5EnZXWHOKS+prtx8jE8gGz8K/wTWh3YfXZdgWJwq8KVVd9befdlYNFui8d2Wtva+M+fUMmZMVTTCi+JwgXFqM7S+A5EHugqAKoUE4MbAkWAxv0OuQflp9y8lv59h9WvoNGuH5D5lr6bcezyILCTIZIQ3Uye5m83CWF+y3de/FWJ32LJjSxvNnREooyqA9onS8Qdh7L5OZ638U2gdyPN6cGRnorbcXff0WwNmbbAIu/BiZXzjPXNxJIc/opnekpf1mbaTfjtW27gQHXU0Tv92dEIV3zkfGkCgxoVfzorHZM3/DvKZ+eGvYFCt+o+CN5CoeD5YlFCJRWRY/02GueCGEK/SrAAFuW4Upd7P7AAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Fiji',\n    code: '679',\n    iso: 'FJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjUyMkUxMTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTBFMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTBGMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+scF2nwAAA6lJREFUeNrslH9oG2UYx9/3fiW55C7X/Lok7dKuxNqljii6abVzdXNQhqNanUzrwGq7yVxRJwMdgyEqYzgGKipDNgs6qdCOFf/QualU0ZVBdO2SJgWrTVuXn5fkkkvuktzlvLLgxL/GxvzLh+ePLy/v++HL8zzvA/s/mgC3JhBwywJ7I7XU2LXmi4z57bG5hTNTwGL9dLi997P3vt6++8mxNCiWHYyy31PZ3dMst3pfiFVKBYHE0Oty7X1/8ZXh8Sfiwcs7nUeP9TkeWJMpA70oFXA97WIOekuhZ5v29q87VGxlTyQT0aSVIq7TNXzqpVHJ1PAwU9kFlrHersKqtuWx7+DzA+DjE0bKsApkwUPdI8HSxAdnER2gOh1VBEBFRRVFNJJ5ikEkFUAtgYKitJgjhaIm6mhx7UbNY7YgRyWo8gWbHqkqtYzBxAh5PY5wNlZNcI1o1e4wAIYZGtybpBlKKsmkgV6I2hfiFRON6AGEKiZWUqw712jBpWq91vPdW7JRTgCIb0OHJZ0wFXlOBKmRUfrpPkdnu/lCKFWBl1gPcyVGspSKY2i1oj1LQcP6jLTvz7dkfzkV1VtliZgGH/r3jPmG3NJiHX1XiL1327YDj9/uoTh1cvpYjPa30neOfz7T88jE+q6hQYUKXgqfjw7zTRer9KMV0ULIkgKwfBH6nDNre2uZpDvI/eghSls43msjufK1CTm62bXHHsVGfjgyHn5nUc/JtlNDrBVDhYuRXc9885rf9vqOO15lsU2Ni+/+nPipbZ2I6CCoGgtFfoPr1H07LReUF49/O39466RfuT/kQ05PAbvxKho9vP+5X85PHSwyJ+kWxEq03GNpbmN4koy0ty21WAQ+fS4Sn7nb7+ju8BpLEYiVUAxT1YyV8k///vKhUfu5QCH1hy8obD8dn8vxgWYnVZXrrveFs7XOjYws9ZMQw91Akady8tnHdlDZ9OZNFOhxK7Va7Mrym5Oqjl3tEEukrNQgxBGcy8eiOrUBejgxXasmjeJshR+AqB4AqY52GwhQLGhKWKnSSotoLVMJTeSyCgAr7TbhhAnXbgia1rgrJ/F0oP22niMHOgAorh5s+cQhNdkuT/SScwFA6+roG/vEhAmVsvDLr0Jmq+yCSzPf+46bH/xtftZl1ikquCk0UGGDCQ+EZ8OK0jHQF0k3F7Koyyhqn+nahNzw9tF64DQQEoS/NjmNecFZK/+Te1Poq3XXFoqFz//dg/9oqf6P/lf8JcAAQ7yON3YEhEoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Finland',\n    code: '358',\n    iso: 'FI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxNDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjUyMkUxNTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTEyMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTEzMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FFmzagAAAQ5JREFUeNpi/A8EDAwMnxlwAJO4WQxn915jYJAWhAg8eMPgE2PFsLkvkoESwAKleRnoDJgYBgiMWjx4LGZkZMQiRrnFjIFlK/9jk2BmYmRgYmJi2HXiDsOHV8DcxskKkfj2k0FCVpjB2UyJ4fvPPwyQ3EiGxQwi2dh1ggwEycgIMTBwszMw/PkLEWdlZmD4+J2B4ek7oOuYQSaQabFpw/8RlbhYQEUg/qAGFpVcaEH9CRTUH0AJgeygZnELN2fAlbhAKfrIxUcMn959YWBghyYuoKWikgIMlu66DD9//SU/cf0noNM0fjbDmT1XUSoJ31grhk29kbSNY2zu+v9/OJdcoxZTLx9DwGd6WwwQYAA8jFV5xASNJwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'France',\n    code: '33',\n    iso: 'FR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxODE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDQjc4RjdFMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTE2MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTE3MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NYcTvAAAADBJREFUeNpiZFCYz4Ab/L+fgEf2q7YTHlkmBpqBUaNHjR41etToUaNHjaad0QABBgAMOgSHJZqdhAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'French Polynesia',\n    code: '689',\n    iso: 'PF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0I3OEY3RTgxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0I3OEY3RTcxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjlGNzM1RDc4ODNGRUI1QUNGNDFCRDA4MDk5RUM0M0EiIHN0UmVmOmRvY3VtZW50SUQ9IjY5RjczNUQ3ODgzRkVCNUFDRjQxQkQwODA5OUVDNDNBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++fOASwAAAW5JREFUeNpi3MugzEAbwMRAMzBqNBpg/P//PxHKbjMwrDyd8VIyVkDGWpiBwYOBQYOwpp+/fv3HC37/Wv3jn+S3vxK7mCXPx6r/+S/17af4r98LCej6/YeJAa+r//y5/fNHPzOjKAeTyf+/Ak8Xv2dgUOZgk/j1vfff3ztgJbi0/8cX1kBLWVjWcfOe+nmX59lZCY1+SZlkvWeXFV+fEefmvczEvIoBb1iy4I0IhgtXJFgFi9gPfn/z3IC/Opmb4e/DpZ8E7+7+p2b587O8vPR/kCIyjAZq2nHE6twT5xDRhzK7Jq75o/BbTclv9aIr3Cp7F2faSX8i32ggCPfl5zt0//5Pdg5LO3aGtx/ec/ww0n/HLy/Dcd3GRAWPuSCX/fr5k5WNDY+K42dvH7v08reIOP/fz5oinBvvfhNk/G0ozuHrboBH198/f4hK108ZGBZsf7j/1D1+Hk4uLs6SBH19TiKyzGjJN2o0XgAQYACA4seGjOuQWAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Gabon',\n    code: '241',\n    iso: 'GA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozOUMzNjM2MDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOUMzNjM2MTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzVFMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5QzM2MzVGMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XUVjwgAAADFJREFUeNpiZJiXwEAbwMRAMzBq9LAwmvHPRbHRABk1ekCMZrFbsm40QEaNxg0AAgwAqCcEmp2Ti78AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Gambia',\n    code: '220',\n    iso: 'GM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozOUMzNjM2NDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOUMzNjM2NTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzYyMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5QzM2MzYzMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9VNdgAAAKpJREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERp7FLD/e3x0Qixn/11R/ANL8QPyPjqH8kfHsy//vgAxBIP5Dr1AG4veMDLxtA+JjFlZOZqYBSGhMLExMjAOTqn+++fEfyv5PrwQNsovx5tV/74EMASD+SyeLmYH4A8vZb50Dk48lE1g+0bmCAIHPLIriKqOVxDCvnaBNHl46N30+AwQYACKRKLCtBsdeAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Georgia',\n    code: '995',\n    iso: 'GE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzNTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzNjE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzY2MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM0MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6i4DLgAAAqBJREFUeNqkVllPE1EYPXfu1ASwIqEErCBRQ2Ki8UXjg5IQE/UJWfQXuP0+EzHGWPRF9MEHDRXColIBbbSWFlptO53l85uFhulMZVpPMpm7nu/ebzm5goi+A0jyV0YEULWG/IWbMDYy3JOQQwNILKWg9PchIuL8ZVWvgQN/wLIA0wQUhbklOoJpgZhD2PulEjCuhO75uo38lSkYq1/QKcxvWeyM34WxvhE6HzCspRZQuH0P+soSijMPoT1JtW1Ue/EahUnmWE6jOP0A2tz84Yah66BKDUJIJ56k6e1flzlQqULA46iHcHBylagJxqcM5c5dJ/3javMUWZUq5c6MUxYn+TtFP4cukZkvBNYZmS36dfEW6cvrFIKSGnZgeXYUA5ypEMrhtxMidFiODiPx/lnLeTXgBiInm0VMBRmc2brZ2CyOxFy32WvYkc44t6luuFv3uXwcPKcbgQOI3NhEyVdKh92OS80q7LrlZvfZgNJ3nK8g3TKMhrLIIhndMMhxv9LLYqFIt28fZI8PQkZorrYyrNrqEx10gJyaikN13R8Rqhw+Ed3ufky53Bpu5TGZHHRVjig6lbVb8rva4s0xCdHTDfpTdRND8ZKrNw7rRx47V2dgZDZ5gLV6MIH+t48hT4+A9sp+jm7mqPg5Gq62yUKK2zXU0xXMxt6j3hi567gtjsUbB/OFxQrnQKtsMDPb2Lk8CWPlc4SwU1O8PY5N1uprszDWomr1/BsUpu+jvryI4p1HrLMv21bM+vwCilPMkf6A4izr/dNXEW5cY23d+83eiTl/W2vbBdU0J97/5Gip1WMTpKdXOtfqjS3Knb9B+tJaG1rNGZpYfO5IXqeQI0kk3s05Mhtax96TJ+57+vCrQXRJ/BdYQoUqWz19yn8FGABqxdXVw6EGDQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Germany',\n    code: '49',\n    iso: 'DE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzOTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzQTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjM3MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM4MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aBEH3AAAAChJREFUeNpiYBgFo2CAAOMNmhnNxDBq9KjReBPf/3OjATJqNB4AEGAA+2UCvgLMJf0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ghana',\n    code: '233',\n    iso: 'GH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzRDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzRTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjNCMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjNDMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nJIV5AAAAbxJREFUeNrsVstOwkAUPdMOCEJ5BEwMiS4wwbhRP8GNxGj8AF240K07FyZ+gq78A42J8RP8CMJKdia68MECQcqzls542xBkowzEoIk2venttDPn3Dl37gzLxzOPAFJkNYznMsieeNdB33Ms4Bp+6Pp7wNyq6EN3EmQBjXl+W8iR2POp9bbT9Z1hOvp8BEy3/SaHxXQjdZgsJqvkRMi+HkF2hdEJLaHj4qwBm6ju7oWAF3Ioco86Gwjs/mFyUdJYX8PnyUCgrYaEbjD4ExyX5xZMUxJwFHZZwCb6kyEGIZSiZlyqTnCQeDWBrf0qcoUOylUBh0BmU89YzOi4Oo6S8AyyJr83qwVFG0wynByEEY8w1JsSrbZEKABqMxCe1iHq6nprrmQq5jEsS6TXgshuBHoDrKwGsLAZpG8CmlQbyzWOSC8tB9MlDZsFC9V8A/fXYRj0fnhURymnI5mmZFWbZjeXJNs5Xa6QE1NZThN+hrsHB4kYw9I899pubjsolgTmZjgstaXlLqdXhu2sqbxBeJWDCBMBmOKj3NsESHoPUUlqHHFrtJqX6PP9rgz/m8Rv3Z26Rx5jzEef2rsAAwA2l4mM8iP6VQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Gibraltar',\n    code: '350',\n    iso: 'GI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDdFMDYwMzMxNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdFMDYwMzIxNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iREFEM0ZBNDBFM0ZFNjU4NDVGNUVEQUQwMDAxODNFNEIiIHN0UmVmOmRvY3VtZW50SUQ9IkRBRDNGQTQwRTNGRTY1ODQ1RjVFREFEMDAwMTgzRTRCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XVIZMQAAAslJREFUeNq0VGtLFGEUPu9lZnfVHXddXV1NvKQZmeEG2QWMoiyIoCT/gFkGUZ/7Af4CwQ8JRRH2pT5I9SFSAqFPSTco8pK7Re6uu7q6V2dvM+/bpG142VnF7OEwDMOZ55z3Oed9kMfjEUWRMQa7B40wFApRs9ksSRLsNhKJBEYIwX8AIQRvJ4/viJ1uJyng/v5yoJ9Yik3U2Hn7libiv1IvuN3vHj2ke6pJkfT8ydP3Xt/Rg831h5rl+YBvYvr89V7LvsZ83NFolOsg4PO1mwxlAMNDj59dvnQH4MXV7qHBuw6AY5IUm1/g+vD7/fm0NtlLL9oqbmpax8Ihl3s/gPzTUyIIPQCdVVVKWenKGHQHgbSuzbm0UwEGz52tHn1dSIxjdmvNsnw4nnhbbPaKuH0hQlh6/IizZ+yNvaAw93gCAV2tCcA3Ig4D1FDsWgx+QuwjEWbkeCSu+ESDL5m2M9DjXUU+QTpOntKeCldqAUsMLYNq49AEFHElA9DVeWXnG+L5MH4BIAJ0XMAtCmpUYNJAFc4aM6xG031qMj81RpD7NgZmpmZHXu0FaEonS5fj9Uq6vpCZ5ThLyAeUVC2Aa3Qk6pnVJUaIKouLEAwqjK+phnBlhXfwfofZWtB2nKqqk6ElY8LbEO/6XJIhVHMyK0F1Xyfm+gekvj51bo6vdzdqEJRYFLmudZN7DzZskHYQYrGgcoeqKhxYUZK5HeJEHXa6UZU/GTdirSmEMfMHIBLe/K+mcrD3BgXGtGVQNpkGC4eRFtnsghBFYFCnZTXK0RoWPS/mXMEEGdFKEl4fqwX4yrsMwkKlYGmgjihKZL/z7IZtiD9sRMAcbeFrJu10BvzljERsmAHb0oL/JlCiZmi2VE5o19KWSp0YCsgVv1NEfRHWbjTKpGjM2Qo/ToO9XM+WtT4FBtYlZhCFUBtHKtvSvkk4lGpp/SXAACbxTzWqruOZAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Greece',\n    code: '30',\n    iso: 'GR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0UwNjAzNjE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0UwNjAzNzE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RTA2MDM0MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RTA2MDM1MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KGW0OAAAAblJREFUeNrEVL9LAmEYfj79UgqtiCQoHIUobHAwiBrdG8JBqKUpAgkaoq1F/4aG9E8wxLHJVqmla8ghaDB/QA13lVh6X+99d6lIRHRH98DDvd9x3PM+74+PASc1APNEDWgim03h+HgdxeIdNjdP6fUk0QMTOlHAJoLER24FGHp+A2YJtondoUT+Ls5/992HFM/nU1hdXUCz+WpXGNwo7wA1CGH+VNc7RkUslx/SZTw+h6WlkKRdsEzmUv0qc6v1imRyGWtrYVSrT8jlrhEM+uH1MkqIUmh30evpYIzZ1dWYEEL9ub8DRKOHUJQrimw71nipVO2fVLVD5VxAJDKDRuMF5fIDxsc5fD6vdByLbSAUWkEg4IMDOCDHB8JkUmQyF8JAoXBD5x1imrhH3BeKUhcOQeXmnn6hTf3zy8jjMQZ+2trjnpzqev0Ni4sCtZrqxFR3R9ZGl5EwaivPg71NJM7gFLh5OQxfFMPwWO/YSGLM/jrd3rb6U93pdBEOT2F2dgKa9o77+2dw7oX97bG5Tk4K8+3tc7gBKuKWO47T6V13HLvW40rl0a0eH7njGBjTLGHtn0Sl1qcAAwDRS+VdNgkmcAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Greenland',\n    code: '299',\n    iso: 'GL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDcxODhGMUMxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdFMDYwM0ExNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTkxNDkxNjg0Qzg2MzI5QzUyMjkyQjk5NEQ3QkI1QkQiIHN0UmVmOmRvY3VtZW50SUQ9IjU5MTQ5MTY4NEM4NjMyOUM1MjI5MkI5OTREN0JCNUJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jNGGgQAAAtNJREFUeNq0VU1rE1EUve9jkkltmqS2IU2tQhXB0FoVArYLQbDFgi1uFP0B4lYEl+KfEBHc66IFhRYbUYTqQkEpLdovTDc6adO0NWY6MZP5eM83KU1tkknjwsswi3fnnXfuufe8QZxz+D+B3RK89FQEq7XoFtQtIVCMrYw2+Vyfm8VaDlqaaW/cP3y1Kdy+ezQ6AJvXCsOylAf3lo/65hEsEfjmhUUMCwDJrubU/btmURff2IzXD1SttWUUlSsX9dcfpKhMggEhmvMNEgE8m9VXde+lgY7JNz6vrz73SmgbQBkd1icS3p4OZCPmCPNXiQgwRsbXNenyhWNT0/if2ph99LAwkfCcCnMHlVURAbEuxcJG4t3Wk8e7ojcGrU2OU1lgUHAbSkccQn3we+yZWTrOVRDRjHKysJJU4ieJ2NwkH9B7vQgFiHz+cijW4zp8hmFIQnDMEZHzqylb9uDWECdS/blCzDIz6WJ6VY71ILtYXSFjiK4NxR0NkW0rGc/gSLeyzVUNbPMAaEIh2Jq5cyt7+ybu7KyQxZGMc2osLhBHE8Y2uBX5RLGEg6EG/cZmZ1nyJ+SyFdAOUwSUtLUR7nTe49fNlWVtbqal71wjuNr8nJlcJN0B8PoqWomckzjeGx/ZZ6eLhZcvGqS8PfaUpfJY9ruNCErGIjusS0w00+Ltifeh02fdfCY8RQDUpYX1wX4CJvIHa42249z9cx0KIDW/eWM0n0m5cRG4+bSyfm2Y/1Jx6HBNy/CyZfaSpi2dOCKtKD/6z2y+nareZAHkpl+tD8Rh+bt0vJNbVm0pyoJgxzS8XIloLVM2zJxBh877R657e/u4P0BVtTA/o02Mm4mPJCiRrjAYtvvd7QiyX+tyOZhgy7DSm5bKIYC4j+CCDTlO/YCibUC9yLbq3tcONC1z3VcOY4ApjUZoVKhgIsZ4M4YOygGLPWCzOr+nHcuI1x8BBgBBy38D0GVnSQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Grenada',\n    code: '1-473',\n    iso: 'GD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNzE4OEYxRjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNzE4OEYyMDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTg4RjFEMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3MTg4RjFFMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RYghnAAAA/BJREFUeNrUVVtsFGUU/v6ZnZ2ZvU13S+n26gJ7aQPYEhKJtOqDIU0IJPhEY0I0RhMNRkHwmhh5UNPYENQ+qvHBRHwzPlCiiWhskAQJbi2l28u2DWxLd7tAd7ezO7M7M7//LKWm3PSFB0+yD3N2/u985zvff4Zc9EfxcILDQwsH+1V4ElTLZoksQAIoZRlw0bfynAvjx3wOWPgPGWKjkXpogkSveZyCSQkTRNKseIsn1KM+7svk8+4l3ckKsH4IB2pWCbBzFh6UoURxVhTf8vli3dSP3m2zBU3ibNahUunD1o2ndrV+1PjnwS1TPjEN3YOlagEX/afDEmGJOzOMbk0F0jLK8pej4bcXtndPzD0zlklIbhvaAmk2tdyw+9XBrhONkaOPTrzcPg1PDjmPmRZA6L21tAjvNODLIyV9dXlL/0h0PFWPJkeroVG7qarW7ChTBi4NtcVkVnnldPdnI+F3Osafa5vhvSpyXrPMw0H5AOMA8waHCuEFE7UFaM6T8VjfcOyvKw0QKwjk4JYZFF0dIwuRs6ALyHvAsLzFxGLg+cEnT1yKvNuZ2B+b4f0mJE9hSKAG8T1VRlmFRr4fDX8cj12YbYJgoDZnN8f4UbLGISzSmtiy/npEKZyZbIZUsgtQMjxf13s1OHB505u7E12fqJnvJOae+n3c+cOB/tNtv061gKM207tA10BPFlzdLelvHzvz+c87Xh/qgKzbx5RlWNzZTOjssXXxX37b+vVNyJh6VtmT3Ukjfig3wHq9F+iaKyPyVsYjYhAdo0toKjPElf8ZI55C5wydcH6Lq7NMA1Tl4LDuO947WLf51IF4eN/i7p/m/WikECx7uAU3ykJHaP7Ie2MbupYv7a1lgrQcVU8+fe74UPuFZFVlJt0tQe4H7XaYyAk/qI+gQYNuoOhi029rzhzZOvFiexI1Opq9pJ7AQM2uSq883RtIfTO+sX84OpIKwlmxC6Dq+ruhK8z5oglnETkZRW9zQ5aZ7+DmJNxF291zMjOfv0e3zZfhkK3hReNAZ+JAbOaLsU198dj03Hq4dPtlshaaPfKsqaKIRSlYn31jZ/y1zUlRKTAvmln/itwUZvr2AHhqGjyu1/DOykvbR1+Izg6Mho+PRFIL6yBzDIqsQrM1cNUhuTu193uGmQIOKQfLjZsKZMq7jOouqs579aKvZorsqMIH9UNtFw/tnfx0JPzB4rYr5ySuKo29nmTN+iPkC+1Rn1CuacuubEmCxZhWr6llc7SBTPKgDEcCku7yqr8XgpOnPDuS+ZLE2dC3lqpVwgLkqjPshRk5XOBEOt7nE26v0H/NEJAGaA7JmveIK0v1//eV+VuAAQAuXtAy981G1AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guam',\n    code: '1-671',\n    iso: 'GU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjBFNzZFM0QxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBFNzZFM0MxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODAwMDg1MDRFMkQxOTdFNEIwOTkxMTdCQ0ZCNzg0NTYiIHN0UmVmOmRvY3VtZW50SUQ9IjgwMDA4NTA0RTJEMTk3RTRCMDk5MTE3QkNGQjc4NDU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wSFE3QAAAhxJREFUeNq0lU1rE1EUhs+9dyaZTjqZVFPTRChElEJUqAGhHyAuqrSgLsSFiCsXXblwqSJuXApu3PgTRKU7Feqi+NVNQaulC0tqbUhqOyGTmSRNM8nce5z4AzKBSc/6npfnvLznXLI6eTUprGHXBiJDP4oI15SG8rIuJUX1fXh8RT9FxX5fpAVTM87W9cZP6Zgw3w2MvTo6D+2CTxMSIOivLSen7Nfz+58pHFpJAqS4Z0W7SNp7Xd4xABcUIEChiV3RETHBay0i9USNFFyMnK5tTlrrgqvIeqP2EQUPE9GNpO3c3dmBmBp1F9ZWtDMgH4Cf7bQHZEWvGLezjZfn+KOTpVsTzXStgHTQt9FHmnjITbiQsNjl878No174m5+bmRltQbWJQQ0hFOzy2LgepfEbViYWj0RF1BwN0dyuGEwA8gCGIBA1vJUvHthGJtYq/dgofMszuyQpUmekINSdKA2NbPz6nvn0cDGcWvxSuTmxWS7OutpFgnvBvPbIWvWdI5fSiuHw5WdPPr6YW1uqXRHoIIigCSHQKEfYvaXnD064d2K700/fbNMklY3AhvzfRCJK1ePJx1/vi7e4zM4S7Q9yifSckK7b6+2fvPOhkQVZZqFtzqkvckeaomt6+Q+lwHe9FE/Oi9uIN0bXy5cymMYIP8zLV2HRaSfnmAuU2336CrRsc90iKlmdujbMq7pbBSL1CZfXacRg+j8BBgALAtvzf7DSbgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guatemala',\n    code: '502',\n    iso: 'GT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjBFNzZFNDExNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBFNzZFNDAxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODBCNDU1NDY3QzIxOTc2OTNGMUNENjM0NTMwOTgyQkUiIHN0UmVmOmRvY3VtZW50SUQ9IjgwQjQ1NTQ2N0MyMTk3NjkzRjFDRDYzNDUzMDk4MkJFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+T8VYKgAAAklJREFUeNpidF77kOn/v3+MjAxIgJHh/4Mv/0NV2NuspBhwgwNPPubsfyPKxcKMohuk/T8jAxMDw/9/jOh6/jMwMjH8Y/zPQAgwMv7/hykK1sfI8p/xL+N/JigXSRYizUAYMGLoBbv6P9Bx/4nRTxqAWMVEnNPQtREDiDL6719QgG44dfjAtQuMIO7ff//+EWE0I06zmZiAFjPMWbdg5rqFQMbreydyasN+/GO4cuNK7ZQ2oAg7GxvuGPjPhMeD3JxcDAx/lu5YziMg//nutFSbXU1RgqktZb+ZWLcf33rn8hFhQQ5cMQsMORY8PhLg4T1yYjMjK3OcqxMDg+L7PTeC+NRYnKR+Mf8y1TPbcmZXqK4NIyMuPzMy4UlTrMwMT9+95OBgBXLffeR49/URw+vp3N9WfvnBqqes++Hjhx+/GMgxGhhQ337+NVE1ev/u06tPv15dufiem+uvX8H5Z5yvXt05deWMopj0f0IpBCf4+OWTsqqRpqqGk7vKdyY+E5dlX9lSv/7VntVb8+rZs/io/C/fGPAkFXzR+P3nDyDZGFpw7+7j6CqPR88eHjq3a9LksitnrqT7xjEwcHz4+gmPy1gIpmpZVfWTp64s37r0zbt37H8ZC7IbjLVMvay9COYfFqb/wFKIQBbTVdDWzW6DsF2tXYnN6P9JyLqkAWA0/qOd0bQCLH8YmZmwlat/gaUQIYv/MTL9YWD5x8CMWYAApVg4GX4zMvz7j27Kf47//9gYWAi4699vTsZvrIwcLKgRBjQaCAECDAAobt+WaLkKAQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guinea',\n    code: '224',\n    iso: 'GN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MEU3NkU0NDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MEU3NkU0NTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYwRTc2RTQyMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYwRTc2RTQzMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+S1dzKQAAAJpJREFUeNpiPCeo9pSBgUEKiD8zYAF/PzIyskr8+6u55tN/Nql/LED+f2zqmFl+M375xfFX4ZQjw9tvPMwMrL+wqgMCXiB+xgJlMCDR2MA/KM3EgB/8h2JC6ngJKUA3lBpqiPIBzcCoxaMWj1o8avGoxaMWD22LGamkBgxYoE0eXlxNH6hhf6GVPAueyh6mDtwSwqMObBdAgAEADjElH4U24o0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Guinea-Bissau',\n    code: '245',\n    iso: 'GW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZCRDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZCRTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYwRTc2RTQ2MTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkJDMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NfA1TgAAAaZJREFUeNrslbtKA0EUhv+5uLlq1ChewBvElD6AhfgOvoKFjZVvYClYpLDVh7AQC59ASGOh4CUiGIKGBI2S7GVmPLMSBCvjbtTCA2f3LMPwzX8us6w8UrwHMIgvmNGA/8RNYfdF5dfbUt0KfNck+TR+wTh5q8c9hjyIA4zfUvx3wDaXCcYgwML4x8C8S6dH38E6bHGGHBOY5w72Ow3cKA8LwkGK8XA9TpPdIEmpfdQBKkpjgkuU2nV4pLcoE7hULgo8AZe+NR0uyzWDDCCkiQ62aodJbanziCOvRfNisEfwY4q3M5ME4/C0orobNJRQOc8x2hMsMrhlFEaZxMHQLJabVzhXnTC9O5kprDpZXFPabV3mSPfm3Yw5OR02rOZHV2w72Cc1FQLY90Yqj0P3GWd0gBVkYaVZd2it6juy0U4LdNzo4Hc4cEH13EqPE3gMa84zykEbdf1xUSnCDwllMEBqZRAP+In+AksyGdb61H9FQSSwSM1VI7AD1p+u7s6WZwweTBA2W5Pqbgc5buj/Xf3j4MEe97DPvfHd5qr2CDfhVEWEvwkwALDLl6s6AZ8RAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Guyana',\n    code: '592',\n    iso: 'GY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZDMTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZDMjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFBNUE4NkJGMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkMwMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jfKcDAAABN5JREFUeNq0ln1o1HUcx1+/e9jtbnO33eaUXDl1DqVRmYqohSZWKqhFBCb9WZhgiQhJkA+RFEmBf1RahBFSQU8gtc25ypGz6XyYJGqKc5t7OG+7290ebw939+v9u5umsZalfeEHP+73+X4/78/78/68v2e8XLW321nkYd+xQ0SazgLD4M4G1ziw2cE0+T+WMTuv2Hxqx2bWrp1Ng2eYvbX1VLXUEgydhIEQpGelgNiddxWE8R055hbCMCOP/btWM2/lE/p5GuVX0ygLtFLeWkO9vwb6m8GZLiAC4XRbW/X8dyBGMK/EdMQTvB1u5F36mb8cvt3pI//hlfq8BLqmUt2bxsFgN4faznEiIBDh8/oWFxO5akmmTjH+NRvGiZzppgsbxXYXl6PDbO4LUGF0sn4TfLhRERN1cMdcyFiqSmfRMHgPlZ0xfmi9wM8tR+gL1kGsR0x4U225zZYYp3OKk1Ex0Tbe5qDAcPK1qtvENcyZA7y/w82zKyS4SAz8CvQ9CLkrlGQBweh4fgwnKA34OdJ2kqaOWuhtgTQPeHwC4frbdtxIzEiI9Uy1p2GKyXfCIXYRYP7TsH+rj2mz0uBikFhoCIdeySwQkMfExiLMxAx+7fNS1h6ivLmWOv9RtemykttS4kzLUDbbDTZuSXx9xZXeraDpQnyub5AN/dc4nt7Fq1vdvPWCKM3SmF0aIhaLYiR6sSe0yZ2RApG9TKeWcLbHTXlogAr/RY5dO05/8Ixo7VNcTrIloya+viz6J9qcTDAcI/T7MUsG+eyNbFasVqKWOLFgAsNpiWtQGyIYYspmseGdAzmPSxdz6RiezE8RO6X+K1RerSQggY6Z2FqJkcEpFP02HbonHGG7ACxabOfjnV4KC+wkuhI3d08gpIdEt7xoGLvIIWNiCohbInUu4eJQgeT8T+ob6btVvUf0e7Fb3kZXl0nC+jDaCdZ4WTuNEeRxqX44qJeoeu3GJ1d0jJXUSpYnmieJ7tLOXjYl/HQVRfny9SzWPCdLDcSJt+vkJNWCE5cRxUzs1qneB0T1Ys35PDqHJlPTO47yej8VjV9w2V89emILpFNwZzhcNA/EWNXTTIXc7aXXXOzZMAHytO3SMLGhAUV1YwyocJdKz31EAtOoOebQGM2jIhilzF/P4dbP6QlJXEPh1B0gld+S2EwmNZksdbjF4e6OcLKfxUsTnN6Ry6yFssz6CLFTfTjUO0eGFOpbDePkcEjJ0XzKW3r1nKGq9RM53IURh1NchswlM+fGXN9iID7RWijnKQv1sVG0Bu/r573tbl58RmIZEJVNCswuUmXy84zFRCWSqoiNUs3u4bY6zgeOQ7c1u6rHkzumpzssWq2ySxzptIjWtZ1tfEWQNevgU9lm+hQh7pinl0fh/jmifhJHe1yUXmqgsvkbAu1yq8FgyrMt2/RN+Uui0YfGca+EkylUuzua2KZ+zVwIDbvSKVyg2wL5c08Jvzm9VAS6KG37neq2A9LQuT/NwGNRmHWTP9/eZWEctOWbWxLthAuz+OjN5Sx7/kn9XER1a5ZupAhlupvr2n4RhVdIDqXlwUkKbXd2LZZ4CsxV2zazft0SAt4Ye0828n19DYHOUxo7fyqJlUwKv6t/BF45+EF3zkP57Ks9RPMV64rrTVGY/OvjuKOqxlp/CDAALJ7xfKNmRxYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Haiti',\n    code: '509',\n    iso: 'HT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZDNTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZDNjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFBNUE4NkMzMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkM0MTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vIrdngAAAb5JREFUeNrslT1IHFEQx39vbzeunkYvIRH8QgJBBAXNR5EQkIASREhlomArVulSWVjY2CmiWKuVBLGwEYuASIrAhigkhSFgkDsQDWjirbruebfrrFZW9wTJEXDgLcwyzO/NvP+8p6ifTlMAM2WVFQJsUCC7Af9TcenbrRikXPD8yBFZ3oUj8YNDsMWvE51mgmsGh7L2PF501dP4MMGRf8LaxjrVVbU8uN/Ez19/Wf2YglLZgNIBK1sTLOS9E971t9DzqgqP7/SOOiy875QkjSyu7LL6ISngIgHnJ5vxQPP+CKKSXexYluTWDjPz20wMDDI55fL29Q6WkSNO1PYoOD9YfU48D/XAAd5BkpfOMrPZewy39fOlO82juVJGnGn6rD+stHZQXF4jks2vWbNas2IlYJMMm1vbpN/8oH3MYWg9Tue4y+FTh9RSggZ8crkDiY7lz/et4olWxUqibnsBy88q+NpsURnG8Q0TK8yyrzweb4S0f/qNaytCjTPWBkeWMxQl+8fY5xK3pAMGWTnUUDrhyde/U4YRhNc/xzFJmikv5vTy3/NNRDhd6NUvkGiq1MVI39zV/9Uj4RYCfCbAAH4eks60LgqAAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Honduras',\n    code: '504',\n    iso: 'HN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRkM3N0M3QTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NEM5MDFFMjE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFGQzc3Qzc4MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFGQzc3Qzc5MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++ppqvgAAALNJREFUeNpiZHDfxUAbwMRAMzBqNP2MZvz///8AuPrS1Q/4NV+98RGf9H8c4Pj1D3J+e68++IxLwdM3P+T9924+8QqXAnwB8vXvf25mRji3ZuGd7z/+9qSpM8LEvvz5z83CyIhDOwseDyGbC3TA1x9/P3/7C3QIXJSHhZGcADlz66NmxMEbj7/iUvDi3U/tqIM7z77BpQCn0UCw4/Tr/3jB9lP4FNAw8TGOlnyjRuMFAAEGAEq7Jwn/ToVjAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Hong Kong',\n    code: '852',\n    iso: 'HK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTRDOTAxRTYxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTRDOTAxRTUxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOEM1NEUwNEVGRUE1NkNERDAwQzk2MEExNjM3RDQ2OTEiIHN0UmVmOmRvY3VtZW50SUQ9IjhDNTRFMDRFRkVBNTZDREQwMEM5NjBBMTYzN0Q0NjkxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OzkpswAAAc9JREFUeNrEVUlLw0AUnknatGqhShGKIErVizfBsygVL+JFRFC8uJw9KOJycbnpz3ABF9qKeKwe3ZeT2NbisQoqNmm2mkyeY7RQEJO6FIePxzCZfPPlzfdesIGKNZiiMSNH4VtxbgJ/q5ry0tTpNJaUIoz/klpDSO3rVUOhjMdD8r7AahhfA3KgYuWuTgkgQ1FTTcxFww5Wz3QTYErOJm6Ex0cRQGtroSskd7bF64zFjand3dmJcb2jQ+c4cp9ifT60vS073crWpnZyLA6NaNaZsThWGRyWAUReyKys8fML4u5OOtgmAPA0Lbyo0ri6rDMM/EA1ioQILxDOhQf6iaJoo6Pg4F4mp1yRCJZlfWODRKPgdH7P1+/OdabTEGzFm1vg9RqNjcZ9qozBantQiSVKpmfYeMxtSoMfmI9FyH1+ydTVG3OzXp53rK3rTc0efxU3PQkNAWxu+JX5VH+llExKD09v5ltaVI4OhNSdfHur2znEhlqpKBfOz+hlPgNIh4fZQEDa36MWVOJxW2q7HsKy6PTCkRGMqysYH2NUjfT0osQ1Gw7/qhrzC4d8zBnqZamu9sXlsi1IbBTQmCAvFt787JsqfIr//ysoIvWrAAMA7mZQmc9OmukAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Hungary',\n    code: '36',\n    iso: 'HU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NEM5MDFFOTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NEM5MDFFQTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0QzkwMUU3MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk0QzkwMUU4MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JU411wAAAFRJREFUeNpivKSs84lhAAALEPMOhMVMDAMERp7FjKcZuP4PiMX3kzMHxuL/QDBq8ajFw8pilvgd3QNTgDBUqQ+MjxmE5UcrieFtMagF8nkgLAYIMACetyMUbe9cBgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Iceland',\n    code: '354',\n    iso: 'IS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkwODE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkwOTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0QzkwMUVCMTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk0QzkwMUVDMTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EtSEQQAAAU1JREFUeNpiZLCYzoAG/jMwPHg/dWtBFuup8/oOAqbGiqfOuNcd2TXnCIO8AAPRgImBZmDUaPoZzcJw5y2WFPL2zdvv/xi4mYE8RkaQ2P2XXxmev2L4/ZcEo8tmxWMx+t03dxvuv1fZgcy//0BiFXkuN82VGAQ5iTea8f/Hh1iEWZkZHr19uXH3i4ZaDlU1menTuBVEGAS5SXI14xURERxS/xnZOZgFBf///v3n7VtGMsL63/dvOEwGhjITMxMonv9///7/P5BPmtGM/1/cwBADB8jDty+27n/Z3sKhrCzd18ejKMogyMXwi5RorD7Nj0X43ffAOHNDNpZnNZUs7Kw8zs4LbzHc2vqAQYCHBKPbEudiTXwcSi0mot+BHmAGh0NLz847s3cyiAiTkq5VhLEYzcIkzMnE8BPkfWAgA4GSBPcdSbHRkm/kGQ0QYAC5z2/IQnQq8QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'India',\n    code: '91',\n    iso: 'IN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkwQzE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkwRDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBBMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBCMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OIHw6AAAAPlJREFUeNpi/D/T+D/DAAAmhgECoxYPf4sZ/wPBQFn8CUjzEqvh7cffDAtX32Xg4WZhYGJkZHj/8SdDTLAKg6QIGyn2fiY5qGdN38/A8OU5g5k2F4OxBicD59+3DHNm7CXZxyykKL548TGDmCgHg6mpMoObWz/Dr19/GHbvLmS4desZWE5fX5Y2Fv/794+BhYWR4e/ff0BLfwPxX4Y/f0BiTAz///+jbRy3te5gEBTgYrCyVgY65D/DuXOPGJ49/cBQW+9FUhyTbPGnt78Z9qx7wiAozMnAyMTI8OblVwYnfxkGIQk2ki0emOwk3MExWjuNWjy8LAYIMADBumJ9k9IhVwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Indonesia',\n    code: '62',\n    iso: 'ID',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkxMDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkxMTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBFMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBGMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D76wCAAAAG9JREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERi0etZhmgOXP+w8DYzGbtOQ/KPsfHUP5H+Of9x/fAxkCQPyXThYzA/EHFmYBPmYkAXoB5tHsNGrxqMXUK7mgTR5eOjd9PgMEGACLNBM7Kx9mIgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Iran',\n    code: '98',\n    iso: 'IR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDMzQjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDMzQzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTEyMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzNBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bVy5sQAAAL5JREFUeNrslDEOgkAQRf+QLUSUwsZ7eAoaOo7Aoew5AyWcwwNAsa0IWZRdnC3sXaPZxOxPJltN3uyfn6HD+bTCgyJ4UgD/P5hWlg+w4Bq49m93zA9AE5a65neByHP2zQDxxoU72B9fXcATA3XfQ1ujjIGIt6BdgqQonMDOO1YMVeMI0hpkDbjPUF33+3ClWQbB4LFtcWsaRFIitXZ/EC4nq1+SZYmVBzhWFUgI1/bBX6ovROFyBXAAf0VPAQYAymNH2XVfIfsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Iraq',\n    code: '964',\n    iso: 'IQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDMzRjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDM0MDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzNzlEMzNEMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzNFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A6ksKQAAANtJREFUeNpiPCeo9p9hAAATwwCBUYuHv8WM/4FgxAX1Z1I0LLizh+HJ1zdgNnJQPf76mmHDo+MMb39+IsaYzyT5+Oirawxy3KIMMtwiDOsfHmO4++k5XG7vs4sMxYf7GNbfP0yUWSzEWrrp0QmGzsurGTxkzRj6rqxjEPz7i8HOthgs13tpFcOWWzsZxJhZGR69vUu9OE4/0s9QdXYhAxcLB8OWhycYWJiYGTh4JRgufnoKlj/97h7DJzZuBlMFW4aPLOwM1z88Hk3VmD5GS5yjReaoxUPfYoAAAwDKmktuMenkLgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Ireland',\n    code: '353',\n    iso: 'IE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDM0MzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDM0NDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzNzlEMzQxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzQyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fGQZ6wAAADBJREFUeNpiZJiVzIAb/E+dg0eWodkOjyQTA83AqNGjRo8aPWr0qNGjRtPOaIAAAwDApAPmE9cHWgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Israel',\n    code: '972',\n    iso: 'IL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMxQzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMxRDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFCMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5PxNOAAAAaFJREFUeNrEVjtIA0EUnD3vEj9IiIlooSJYCmK0UAloIdhouhSinZBKIZ2dqIi1hZWFQRFBsJWUghaCkPhBBBsl0SIBTUhyBM391r0oClaXTcwNLHss3A0z8/a9I5QBNkDsm7uU2d5aZ15ZfLrLwxbFyKl8b5LvnTMosraXKPBY3eGWQAhBOqtwWU1YbXERKxqFrlM0OQUuYoE3I//SNQYWYlVkbBG6QRGJpiGpBk4fZMTYAlMcXL1HYMiNIss6NNMJSbSmxbLV5m0fXbxC7CIDV08zlme70egQsHHwjGyyiH6fG7e7w2gQiCWrYRJTi1BUg3qnzunW8cvPWSSaom2TZ/RD0WkFKFSUsSQSaKyoBPKrSmBf0JjlTkn4n4xNq8fDN8i9lrB5mCwTmlavRBIovJXgC8UR3xli56S2xAZjDk60Y97vKRdXePsRBiu46TEPAixvmT3rxpcDNS2uvxhkCnOyhsTRSH0bSL6oQWV5e10S35BY309yNQCzZZp5pjIKX69G1wmX4iqHhCzC47BnLHp7W2whJu8l3ZZfn08BBgBy6AUOH3COZgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Italy',\n    code: '39',\n    iso: 'IT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyMDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMyMTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFGMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oQE2+QAAAJNJREFUeNpiZJjk9pSBgUEKiD8zYAM/PjHy8Ir9fZK47D8/OzcLUOQ/A3bA+O/nz79Xnf0Yftx7wMwiJIhLHS8QP2OBMhiQaGzgH5RmYsAP/kMxIXW8hBSgG0oNNUT5gGZg1OJRi0ctHrV41OJRi4e2xYxUUgMGLNAmDy/Opg/EsL/QSh5v0weqDgSY8agD2wUQYAAUKyFbP8LJRAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Ivory Coast',\n    code: '225',\n    iso: 'CI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjc2MENDRjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjc2MENEMDE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0NEMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0NFMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qvgkAAAAAGxJREFUeNpi/F7P8JSBgUEKiD8zYAH/vzMwMPJxMbAXPWZg5BRiwAd+/P3NILuqmOHNe6CRnHy4lPEC8TMWKIMBiaYH4GViGCAwavGoxaMWj1o8avGoxaMWD7zFLNAmDy+upg8tWh8guwACDACJtBIpqc7c2AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Jamaica',\n    code: '1-876',\n    iso: 'JM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyNDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2ODE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzIyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzIzMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KsC74wAAA+VJREFUeNqsVttPk2cY/30tVAVKC1SRo3jAAjswnXFL3NwfsFvNlgXn1OjFoomJxgsvjInxZtNh1HnIZHPOw1iyLWEXS1y2zIsly2KiMcZjQRGwA1pBaEsp7ffs9/b9KhQ/AhPf5Pf1OzzP+zzP7zm8NdYe8Q/905sPt8tEVUECAkDU5SUuQ4GXx9FcDIw6sWJ+DIb5EHLhfglabpXgr2ABiuakUJE/lpaerQMZg8FYLkIjOVhdGsGm+jA2LA/DkACD9ALmMPDtvRKcu+PD3/9qBirzE2lF8386oHTUUhEOMsKVjHBjXRib/CG4PNzsKWUYlaCHUnHCQyMR4GKgGGdv+9IMFLo0AzNxQMkYGKd0dWk0bbCpNow5hVQe4sdcogpwLl6A/W808qGSGKAiWX69ZgQfLwmjujCB7qgL10N5iKcc8DINMOwpdShKafBRxIWG4jj2rgriyJourFocQ84oBUyiRsu3XtQ6Uu8Hdn0KbGniUzHxHAP2NaAq0S6HdhEqes9fAr44CVy78Uxdr9fq6cAOYON6PvgUZ8QIMbkG2AUqeochCNOgXQ7hsljkfeuPwKFjwNXr2UzJZDT4IWeOsqj7CNaAdBMsQumHpB5AvrtcLG8frpM3P2+Qr371SbzdSH+TduKRpfOEcqcgKxqf3z8T7FQfpK4WcvZLbVBtlgpYDtCh6B1Dnt52aOc6IMn7lsFByPctkMZXp953WsMZFBVB9uyADCkDjGj0Lg081FD3Y52QCO/37YaULph+P4WcmfTlAKt9mEUmhi7hZ+5OaCP1GIkCofDM+31KrxZVQpoPktZOi2pGLPc01Qn+xu5adUCakwEtk3wMOXUYUrvkBaiuKIMcOsDNe6y89Y4blC5I2xWPrG32y1sssB9+LxLptOpA5TmodUzqHP8MsrTG3nBWO1WV63ba+hGQV80XvdC9yHYCh8DPAS++5kT7s8eNeTlmemgMJ5x4p3wYm+tC+GA5czKPsoNEPlEGJINASyvb6SgQeJA9dKRiIbCTA2T7J8Bc1ex9lkGPNtjW4eUA8eG3rkLMdZqo5inmdOgN1Bjt4rSKjTnwXgUdaAhh/VI6kJftQIoOnDwHNHOAdHTSsMrhtiYrwn5L2Ksn10/tXnyjIux2I9cJLHKPpqOcPLMz79S4jCcdWFMWweb6ED6sfTLuQAGxUDtw5lLmkOjTEyZD6S8dHpy+OR9/dDNCUlrtZoQzOCQyDigGomTg3fIItr3Sj3UTGbAcMFTR2OXQ5ZQ0pY4XOBYzOuqAUSmwqwFDjcO2dvscmrP8IzCRgawaWDYA4/0Ty4auTJPD2S67GvhPgAEAIEVx8Ck6yuQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Japan',\n    code: '81',\n    iso: 'JP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2QjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2QzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTY5MTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+sXSjEQAAAbhJREFUeNrklt8rg1EYx79n3k2WrWGY363EkgtJSVntgguJi5UbbuTSrf/CHTeukDulUVJKCRciGVIYiYvNhqZmm9H2eo/nfWlcbW9sk5zT89TpfTqf59c552Wc8xsAlSQR5GYYSPyMwOGPRS5H5O+BeUKUNZhWmxtwYHqBxIWn00vicugbrbAMO1E1OpgdsBR9wYFjCF73IuQYtSghzZDAAwlHVVMPWrfmIZiNmQXvdfbBt72CIjTQSiO78vGFKTqEc1haHOg43FAF1qix8k7Nwp+E4gtUqbYiJjTi9mgT1+OTqnKtCny3sAyBImNpzHVkdb+0mhnw6/MTYsfXtKmZ4pJS9TnVvRgvF36IsejPwVyenCdrmf6cJdXPwEJBIfTNdYgjmMZc7vAQ8ustEPSGzNS4zNkLUUkzT4Fl5Fwcpf3dqhKj+jjttHXh1r1OnW1T0v/pBFNmCB6Ybe3oPNlVE476cywGw9i3D8DvWUM+de97s0G5QOKky2vtaNt2QVddmvkrk0sSfBNzCMy4EDu7oqaToG+wooKuzJqxETAhL/uPhPgYlT2BYDLiGyPyP9/jX/n1eRNgAFs4yk+Ai07FAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Jordan',\n    code: '962',\n    iso: 'JO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2RjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU3MDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTZEMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QGsVzQAAApVJREFUeNq8lM1rE1EUxc97M5mZhExNG6F2oTRtzKapdVWJICIuVCguigtB/AMKUlz0X9FaqQtB6S6IYkMKIoJIRRDUhSt14UcVTWLSNsl8ZJ53Mk7aGLtoMu2FSZj3ePzOOfe+YXf1w1/nawV91a5iP4uVDqaFJQRyZgUL9SJeWJv7A37Vn6pojOkJrqAqHDwkAYv1AlatvU2AvSYw/esN+tHAkJA8AcvmelPA8z1KoAX2F3wBwyTAoBY8MstYqFECAc9AB/h/AmqUQNAzsCO4TQCjFvydgaWNNeRiGpSp85AjGswva3AMY9dguVMKg1OtQdg2JD0Kid7dqX/fMJoJXNHiuEwidDWO8OwMkEwE5NgBBDljnEGYFpim0YKzdYJzcNOGsf4JHCoGpqcxNHcN4cyJXYH59hdhWbCqvzBy7wbGP7yEejQB6/f39hOOA0fmUOIp8MggfmTv483J03g7NonCUrY7MCUJAXKpKpAH+sEkyVvcqSROuzKFZMAuFCHqhhtXF1FTP4VlkhwJ8oE+2MUSWEj18m+doKhtQlU+NnXHzl7Aoesz6Js618NwkVquaGhsbMAof4YcixFIuDHAIeMy8YdKm2SUI3rxKtS5WeDU8a6Gq2OqhdOg3oWbjzdrAjKBEyW72ZdsMoTlM0egXJqAEn4H60EeTr0ewHXy7y85VMjhCAHdepLUsDgZRW6CuiLT7X58E6Br1211gP1IXaA7JvmUhjsEXBmL0JeEPBctwKad6CA96B28HejW01ENtzJR5McJqNBmiVxWGt6Qs94/mbIP9HuYT4WbDvNp6rFKm8WG5zAgYOty/OSjIuSIrR4ei3hA16ElAoW1OX42rH67nYnqK2m/hxR1OXiH/9YfAQYA1jgMxWJoPhoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Kazakhstan',\n    code: '7',\n    iso: 'KZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMzkyMjdBRTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMzkyMjdBRjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTcxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTcyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+44EnowAAAkpJREFUeNq0lc9rE1EQx2fee7ub3cSyjbXWIgFFS7A9FC+iVEWk9KQI9qIYPHjyJBQE/wSxh4J48qpQwSL2UFA8tPESUC/tRVotKCX+SO2WpMlu9ufzvRybZCOYDLuw7M77MPOdH4vwugC9MQI9M4lWIKAQAWCX0SaxF9OPcsZ7CNPdRTMKYZYVB7ACnLV348A14AmZGdbl9Q8psjpX37rjG8GRxoGWFgE3EOvDrKRAWAxNn6cA7Y50ZqB3mFiDtALIG968KWLDJJWriUJOX2Hov3AuvnQuWJEJ6HRAB0Bdrnqt1RDx6hDpp7TV+8nFMUO26VFS3giGlp3zQKIGvW2PEZdLdFXoyGlTyFQTiRNH4EeVLeAIkXpC+d5HPPFSlVwa1yEGumfV9WO0JJtwn4XpW0b+wYH5Vf/4G3dcKCNYy+7pT97ITGrhhp6HsD++jNpH/+S38BBA0PSVOpxeS3x4WJ2+V75T8LIKBvPOxK8oedtYeVybAq7GoRmKYeE6eoDB/jKSnQV7aoT+vptcemZfmq1eN9G2eCKn59+5Y6/sSaBWHFoBPynUFOhmQ9+LUk9qV86omxPqepZtbQaZc+qazbW5vZu74UGg2zFyM+FXCs3tqK9V5xEg1p9wYMkZ7ic7GfpzVP3sAz63LxeDDLAfjcq3j1pDf1Jb+yJGJtKBlJvlBlID2NvlxtPqNJAqhINyXjpxJZoDfg2GLDlgftwWk/PtygfZS7wjV8op9nUS6wEwlystRvF/1pO4a3LvQHe5vf8V9Mj+CjAATRXoTFoxM8YAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Kenya',\n    code: '254',\n    iso: 'KE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMzkyMjdCMjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMzkyMjdCMzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYzOTIyN0IwMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkYzOTIyN0IxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4JAoOgAAAoJJREFUeNq8Vs9LG1EQ/jb74o8kdWOktWuKSamUtoqnekmRQA71UKjkIJSeEqgtmEIv/hXBgz2mpRcRkh6D1IMVSi7iIVBBPFRarIamIsWsRpq4yeY5m24llZa89JCFb9/MvmG+nXkzOysB+EYYIBTRnusSIS/R7dhS2nkVhYllWYYkSahWq3/dZ4zV13/tXySGRcybQVVVHolEznXJwm89Go1yv9/PRXxZnGLEJlKpFH8+O1uXX4+N8cVA4BdpLMbT6bQoaZ2Y9fp8TfNipvgwl8PbpSU8mJnB1NwcnoyPA4qCd2truBsOI5VM1m09fj845019si/r60LVYLfbodE5VohohPRdtxvM48ELki8XCng4P49X8Tgqui7kj+WDQeFSdBD56v4+nCSrNhsljWOP5I/T0wh5vTimwhKJtk68u70tFrG1viQ8JgQyGVTpRfIkv9E0eAkOkk8Fg2AdLXT9AWGL8J3QPzwM3tmJ/PIyNkk3CC6rcoSIW+l63rDaKFpOZ95IJLXgi1UEDU8I3YRb5vmaUWezqBG5+a29Y0Vg2oj6Y1f7BoTf0ikzxH4eQTk5ghwKwd7TA3VlBc8cLlx3eaAbVfGIb25lhQxtkozqlV5Mvf+AnfsTdKYcEqV6kPaCiwtwhSchH/xAjRtixLcXJoQMy0YZ1xQfPN4R3PAAiRwltmBDnKpus7aKYiKBr4ef4WAOIX8SHglOpzIwOjiKQtcpcjufkCzdg6PGMNmdgTo0hP6SCxt7G0CX6HR6Kj4WFUlBSS9Bd+tgGj2o0TTqox4v2OHscELjWgtjsQXi894x+0a2ZOPCc0Hilvr4D8fGfzZwwwekaEXczl+f4pkAAwBDiPf/eEPUkQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Kiribati',\n    code: '686',\n    iso: 'KI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzJDQkU2RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzJDQkU3MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTZEMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTZFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pmFxjgAAAoFJREFUeNrslE9IFFEcx3+/N292dmf/NLppIWJpCoKVCcUWIltqVlAQdOlWdOkWnQsEr12DLnXp0rlDkl7yH5HQHxLLKNTWrDZaXXd219kdZ957vbFT2k6HrVtfHrzffHjf7/B+82NwtP6QzhyoJI6izsGAgEXNtRVCXPWgwyOMpxX8roIiKvksRaV1jgU+cpBxR+yzw5eyIUaJwcsWL00GWUojLgBWjA5zh64TVW4VowOCpjRnSYUa0K9Y67O0cD+CMzoJcukGXtEnY3Eq3uEXjd7CnGIz4tINcEEFqmrCy5USftEU/CXNBeIYjnG1oHe5XhNfq/m7EbpCweD+1j9Fl9EJ8NpBs/6irRYpEOEmLbWRrd7YQUsKBIVfdDk3rzJKtbh8cO0sg6IsFAj/JGXbpG1mrBeUrxBSorI7VjYfTcJKc8Z6FQsyQ7Zru0uSsuJg/vYdnHiaGpkQnO852RM72weEFB+PeYTxxp5kzWA3dDuwNg7fxkBw2J2E2l6YCZo3ny2PjQvY5trMwb4eHBpdGGg1jmoFEOKFExtNFTmHgeZIYpO85NGRNyU7jWcS+rH9puz983fG8HSJxNmpTj1Bi791STIyb2L/9QeLmXUwDDkILLfW0RAjBN9+Nn8hiLMLeYY13sjwtQMtUe/MF9PH1bJTp9cuHG5uMBY/ZzkXrU3xdKYghGioj1VJltImdl2+B1y0743L1859XKEK8b6Dy6sk3v3ml1dLtjs980lwkehs2lUbljSTs6okekhFo//W6e628yfaEfHR5IeHT+bkjc4db6+SDE+9RzgyBGYJyhvelGvyX6F7Ra5qYugU9IC3tij0FwiBf6b/0Vv0Q4ABABynxPRdAJihAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Kuwait',\n    code: '965',\n    iso: 'KW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4RTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OThDMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU1RkY5OThEMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rNTKhQAAAX1JREFUeNrElktLw0AUhc8kadMmBhcttN1Y3IkguBC1goKPRRHxN4jiThR0r4KI/82NOxdaEZWKD9Qi9pXX9aatIhQhixm9cDfJJGc+zpnLGJgcrWJz1UExD9w+Al4AaAKqK1IgWClgfQVYngHqTeC5BuiaUmGdew+eb+L0HLh5AEaKwHAB+OAN+EwvhDLid27n+4mVBjaYvjwNNNvA05sS+n7hryqNdTcwlFPi/e/CUdk978sl4KoCNFrdL5QL90qbG8fS/q5vhiAKQvFnwiZ3q1YnDFoEScyxUkPJJF7dhuitFzI6dlx9CqWmWsM/VXxhyWfZiLPIDT1QJkud8SopXLGEF3UH4dpOcGcmKSBSf5wMfn1g57CVyqD6UuGFnvrJtZAYwJGdx1TCwkXQRp1TrUOo8zj6eSQYUbbZ0jO/yQkUUkX7hOeZ8phFJ5jykikbkin7LgIR0SF7uZ3O8qAgXIduh1LlPcSYTdj3J3bBmepQuuxloIzyZ30KMABBFnf5qa4SdQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Kyrgyzstan',\n    code: '996',\n    iso: 'KG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk5MjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk5MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OTkwMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU1RkY5OTkxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZagutAAAAeJJREFUeNq0lc1qFEEUhb/bVT1Dz2gkShZRUQP+LDRushNXvoDuBcGFa0EXbnwIX0BcKAr6Ej6AgpsoYiAoKgnqxskkM9PVdb3V4nKmZwan6UUXRZ976px7bsnO8jqLefyxpTWR7L/jqkafZX4RlI2uN/ipWFcwEgRyxU3Huqk6BBgIVv2QEmFfUplCyUnLCVo34I4MWjhesV7KpWDf+t7z0fPVpQJtReeDDjXu+SA3DzgV+OGsmFwu2XH6vOCDp5wEMFFlE3e1klv7xk5fdBiKFdNXhekgt/ucrChlLkHsvKbmxcBh5YuTtaBPO0SVa0N6wopi9O0cYSzGeNZRjKxcKPnsWFZOV3QjS8pq5Gjkk5eNkiJSyeystX5bqTH0ZcFKJQ97tNFHXXYzuT5INkht9cxaZ5r6wZrhXGAAW16ujGRjyHdHL+Ns0HeefobT2VnbzgG8zblayt2+Pu7ogyMJqFC50+enYzNPxnZ0rg6x4O06fVaYb3J/j1aKjNzbM4f1SZFauzUpMxLO3Bgb9L+RMaNO1JGxbjHpN72+yfnmUtzHR6Yp6PZbG8rUfIalrzUVMxHKGjRnQhSb0kg9JYxdN1maJgn/ljTgJuhph7VX/IxDNcawqKvg1+/tBV1gfwQYAP8yvkoLLzQ/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Laos',\n    code: '856',\n    iso: 'LA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY2OTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY2QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OTk0MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjY4MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vPM0fwAAAXBJREFUeNpiPCeoxkAbwMRAMzBqNBpgMRJ3AlKC/35hlWZkZGBgZv7w+M2/bz8ltOUYmZieX33IxMYqIC/K8Pfv///o6t8zsSGMhgqx8OCwmpnhznN+LZX2niR/aw0mRobtJ++Ulc57c/4ug6o0w5+/6OqRnMjIoJGB00tANz99q6Ald3l/Kw8Hwjm//v7Tc66+efYOg5wow7//ZIU10FF//zaVByObCwRszEwd1eEMzEwMv/6QG43ffjDLiztZamDKOJir8ShLMnz5Qa7R/0FBwgiKSoygYmIEif//T67R3Bx/Hr4+fPoWpsyRM3c+33vBwMNJrtHA5MHA0NCz7g+G66o71jD8/M3AzkKE0UysWBAjC4OS9I2T92TtalafffAFGPgMDJsvP5F3rr944DqDigwo7aJpQQ40SOLj/P8XR/Jj/M/M9P3BS4a//yUNlZiYGJ9euAdMcByK4kz//v/H8M13RmaE3tFCdTgYDRBgAIXydkRRgS1WAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Latvia',\n    code: '371',\n    iso: 'LV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY2RDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY2RTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNjQyRjZCMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjZDMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+92Hw/QAAAF1JREFUeNpibBNT/sQwAIAFiHkHwmImhgECoxbTL3F9f/d+YCzml5MZEIsZf37+8n9ALP4PBCMrcf368nVgLJ6sbzUwFn989GRgLOYUEhwtMkctplkL5PNAWAwQYABbtBShZM+mNQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Lebanon',\n    code: '961',\n    iso: 'LB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY3MTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY3MjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNjQyRjZGMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjcwMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KNMpfwAAAapJREFUeNrsVd0rg1EY/x2bNWab0aLEBWIkn+XChVJSSv4AKXfyH7hyq5SvcqeUK5I7VzIpLnxESzOTYhOab5t3693hffc+TnPP+5Zxs1+dntM5T8/v+TjPc1iqpZTwD8jBPyFL/GdgWvRFEtKuT53AcnIBmwNjO1OotpVgqH0QkDmIx0UYJr28cRCRRAbhjZ4RFlsJS13U65uhGKlGTUiGUx1O3GF0exJ19gaUMSe8vlWEX68yX+MJ/xIu4xHcJO5FtjR4imsxf74GRVMN2TEbUQ5Ew0ioHLL6DpclX5TUgsBTEIHbAzS6qjDi6c8M8fLFOnyPpyjKKwQXDihKEg6rExXuepzEQuCpD1iFM79K7I9eQjFb8fB0BkkQVJd3ICSiJVIR4G+wiztJkX+feP8xCL8gne6ZwLGQs3uzcLjrMN42nK65U6R+M3KEgcpunZ2ps504aRQiOb2fu9ogzHsIC00UlK7TZymxDpMRklSuq50YJeWfB4h4vRARwcSwFd7FM4+hs7QZ06crqCgowXBNHywWx1ePKBzQhD5j3w4Qlv0Ws8SZwqcAAwBwcmoqHHZSowAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Lesotho',\n    code: '266',\n    iso: 'LS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMDVDQzk4MTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTdFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTdGMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0nsttgAAARhJREFUeNrslc9Kw0AQxr9Nd/uHNFSQHEqoKCrWIsV3EHydPEz1Fih4EfIMOXnOQTA3D1FQ6ik2K0hJ6o6rB8/ZHCyUfDDsZWd+sx+zuxz7c8IGZGFDasDbD2ZLWUi9OlUThBBotYDZ7ApluYbv+2CMoShKE+4HHzjCuNvnp0ck93dQSmHxconDowl6HbM6vI5Nijg+V9An/tKedWpZXQvseR7iOEae53Bd9/+GKwxDpGmKLMsQBEG96SIiSQaKoog45z/P7F/oRshQ0gi8zN7pYDgip92j6fGEzk/OaKfbpz13SG+vCyMwL9S6kjNti0PYXQS3N0iSB0gpYel7Zds2Tsdj9HcHv/uq1mO4vmh+pwa8XeBvAQYA1mkQ97LOB/MAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Liberia',\n    code: '231',\n    iso: 'LR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMDVDQzk4NTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTgyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTgzMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+G0pyRwAAAdFJREFUeNrklM9LVFEUxz/3vZlyZnyKNNXkGIhDmZtEaKEEZuBiFJfSJpyCgpYGEW1cuHLTP1ETCOqiGYJxIUgMtBpoIUVgPxQdTcksnljjNPOeZ17TIghqcfEtOnDfu++eCx/O93zPU5wf2gAsfkWlAqYJSv1cEpnVIgMHJdYx0BUBWa3ergZxHCiVIdQgGYFU5VuOw73dBIIBGl1XI1ipPUzDYn0LvpVI3btJemYeVopw5qTcMOl4niYilyOgEVytova/k7yWpL0txsMHt+hKnGXp5Rtmc3lJO3xJZ6nEopS0gkVLt/yDyqddJqbuEhGZ798eZezOJG5N2tBxPtxIkcDmPUobWNE5bAvBYvk1T7KP6O/p4m1xi8ErKYi2iL4hXlwf4VJLE3saK1bialsMZUVbTzHY183cTI7kyFWBb7OcL4AAV9YWaUdvKOIDtjwtz9UfdzxpPWefaJZsbXxcFnovcjncwGetPT4WrG+ln22nwaiNVX1sTMM7tp/mKIu1dnX2+J29b//2A/lDxF0HmWwcnVKLc/8Kpg41dEr9Sl3AjwhYQ/2+gP9Zau0Vf32c8afiAsqfis9NP/vPerw2Om75UvESiU15Nx41+FCAAQBN8o5alKABbgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Libya',\n    code: '218',\n    iso: 'LY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4ODE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA0QzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTg2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTg3MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oNTByAAAACVJREFUeNpiZJhqwEAbwMRAMzBq9KjRo0aPGj1q9KjRtDMaIMAADHgA7Vx8bugAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Liechtenstein',\n    code: '423',\n    iso: 'LI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMDA0MjA0RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA1MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDREMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDRFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aIartAAAARBJREFUeNpiZNCuZ6ANYGKgGYAZzfSP4Q8bww9mhq+MdkrXpXlfMXxgZ/jOwcD8n2yjWaD0T0525k+V/ruEuL5fvv/fQuqfig/TpP12V+6oMPB8pczor1yqGje89e79ZBD4+e27vBSHjdb7C4+uX7mswcDDyMDwnwKjmX5+/iIgIi4kJ8umqcbHzsbA+e/7p1985BmKajTf94dvZIsX60lwXn736jsXN5OEpMrWG6YMPD/INp0RmviY2RiYWBieMTF8+szA9JvhPyMDGx+DNBsD2zeGv6Snon8/Ea7m/vOV4f9/BhFmBjE2BkZWoMj/f98Y/n1k/MVIhnu/gk1gPCeoNnSzzKjRo0aPGk0UAAgwAEdbUI8xqJtmAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Lithuania',\n    code: '370',\n    iso: 'LT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMDA0MjA1MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA1NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDUxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDUyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dE0CWQAAADFJREFUeNpi/LtTmIE2gImBZmDU6GFhNAvzRsPRABk1GjdgPKiuOxogo0YPiNEAAQYAG3sD7LiMQpYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Luxembourg',\n    code: '352',\n    iso: 'LU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDQ3NDU2MjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDQ3NDU2MzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDU1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDU2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HeS18gAAADFJREFUeNpifK+ty0AbwMRAMzBq9LAwmvH///+jATJqNG7Awrjk3miAjBo9IEYDBBgAMnEF8ALV3YIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Macao',\n    code: '853',\n    iso: 'MO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjA0NzQ1NjcxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjA0NzQ1NjYxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDExNThCNDE1MTY2Nzc5NUQ5Rjc0M0UxN0MxOUIxM0MiIHN0UmVmOmRvY3VtZW50SUQ9IjAxMTU4QjQxNTE2Njc3OTVEOUY3NDNFMTdDMTlCMTNDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bj2DXgAAApBJREFUeNq0lU9IFFEcx3/vzZuZnWXXdQtX1z/bWuimGIFU0EZUqEVgEFRQF0+JVws6ZRGBBUGnTh0CIfJQhzynsUFiKFaHrBC2XDVXd7F1c2dnZ3fnzeuNXoIabc0ec3j8ePP5fX+/933vIXgI/2ngklajtW+70RypA8uVgMebEw2AAoApHKmTzza6JBAhb0UQ+ke0AbVueb/PCau4p4k8Og6CIda55NZKGaiwVTQXxQBW4bBP7GmSABe7RrI1A6qW0tqCuLtZYRmTJ+bakS3AziEMnKIUcpHZLNPyBYbJxd3dPjnwePp+Bv2g1Ah6iF6ks2oRBGCsJNVF8Mv4VqsIOKenaW/TlYH2B/eOXnvSPuhV/HrS6G0Wz9c7mQbMBkBs0RLMZPVLEV3LWxVUlFWuh/eWh5a1BP/v6ptMgffCBXZse9UMkCntlEI3DtwO14fHFycoozw8Gh+tFqpuHrt+wn/O0B2WTxgqsdcatPhaJi5MKKKiF9WR2Ku2+g6FyC++vAy66xp9jXxJ31jfndF+Vl6qahGW1KVoaoZPHaKrs6ETMXNRTZzc07bOBRM+rk4xe4AAZ2y9g4G8TYxLTFIM1wpNDX0dGpkb3qGU0wKdTIz3T96NxCMqVu3k2W+jCV63J+RuGFt4/W7+/TJOz2SiyGQfUp8DjhqCCE8ccOxK5hImYn/cSbJBPXF1YcWbOVV1mtK8pMa8gseK4kKtw18h+6ez0dlczARm5xC0yaWqwUFfa1fwcrj6UJnTKSCcz9Op75+ex54Ozj3jibhHeX1bQq/RwQHtNR37KppFQuZXvg3HI8vppAUltqb+OzR3LTd0du0KZFZLQAGQN4Ju1utfzo7lAfdvwe19ZUoaPwUYAKgQ8M86ceGrAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Macedonia',\n    code: '389',\n    iso: 'MK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDQ3NDU2QTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDQ3NDU2QjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwNDc0NTY4MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIwNDc0NTY5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+x/HZMgAABhZJREFUeNpsVmts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'\n  },\n  {\n    country: 'Madagascar',\n    code: '261',\n    iso: 'MG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ0RjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1MDE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwNDc0NTZDMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDRFMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9rDjCQAAAKdJREFUeNpi/P///1MGBgYpIP7MgAP8+/6D4YqOHcPPe/cZWASFGCgEvED8jAXKYECi6QF4mRgGCIxaPGoxzQALMYoYgZjv61+G30DI/OUP/Sz+D8RvBFgZvr9hZ2AVYqOfxT+AqkLa9Rgefpdg4GfjpaOPgWH9SYKDgeE3F8NHFk46xjEorD//ZmD4CcSsv0ez06jFoxbjzE6foa2Pz/RqfYDsAggwAPr+KDn2/fllAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Malawi',\n    code: '265',\n    iso: 'MW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ1MzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1NDE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5N0U0RDUxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDUyMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+taggYQAAAP1JREFUeNpiZCAO8DAy8TEy/2dg+Pr/36f/f4nRwkhQhTATix8bnz4LpxAjM1D1x///Lv75vuHXx9f//lBktAELZz2X+Jv/f+f9ePvm318mBgZ+JuYEdiE5Jtamby9P/fnGQB5QZ2Y/IKCcwCEEZNuzcldziQORCxsvkBvOLnBYQAXoFTKNns8rW8olCmTM4JX5L6r/V0T/j4j+fzGDhXxyQMFsTpElfHLMuLXjlLJm5ZZlYm389rKESzSfU+zwn693//26/+/Xg7+/XFl52RmZur+9Mmbh/MfAABTEHtYXBdUZaAOYGGgGRo0eFkazJPXyjQbIqNEDYjRAgAEAy3xInECTax0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Malaysia',\n    code: '60',\n    iso: 'MY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ1NzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1ODE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5N0U0RDU1MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDU2MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WpzGZAAAA1RJREFUeNrElF1oW2UYx38n5zTn5Lvt+pE13XLhoNPNaZirUqc4BTdBBcdAwSlMFId3YxdjoHgnCIpXohcieDFwYAteCFZFhcKYFVfHKhq3Nfsg6dIk2CZtkybnY8/JWTtEbaMIeeDl5YX3ff7P//9/3kdhz2gWiLAaiuPthT5YNiC0DB0mBGX3r4Dt429DixJayfP9ucMk5Vhk/dBkDaydfBZUgzC7mYf3j/PC41+RySa4cCnJmfQOSgtdUkRdwFXvriYFOYr3tlxG6QyQOD1GTDcxmqnXB66sMW7owrSfd06+xfEXR3n/1DNMnr+HuapOh18AFRvqOnpkgYalYdcCYIgSjqhQX0HRQkQOPo1fsvpbYHxb4twgrz3/IcePjXLgyBuMnzoCW6+CXqezN8/Ijinu7JtlXlS5kE1yrRinVvd7zHt6sCtzpEM6SbNOUVkfWBGPy03GKwY+8c/6/Am++3Enj748BtunhaRKv17l/rt/5s0nT5O6N0P64gDvffkU354b5nKpF9sFXrIIb1KZeXuQLt3GRG2R8XKIgaFfoBc+ndwLAZHQ50rrJxRuMLItTWp3BsTaoVSOAzemODu1Rwq71WyOg6IoqLEYPkPBh69FYK3B4lK4mTgZK4jfHZ6nmsV8OcaVolS0JPc20dwz+T6KlRiolve+qwt7Kc/MzqFmVxdoVWq38hsJfvjgWYZFTmVkQpKKUX15DEslLt6+8tDXPLj9N9K5BB9PPMavV7ZRNqVAVaReaBCJG1z/7BGiQdUVoEVgt7lKPXR3Fyl9cYjpmTj7jn5EMS9M++cIR+expQAVm55IhcJilFrNEC8VrzHFmXAnXDwRoNtv0djAYwEe84BxvMqlWwe3/M4nr79Lh1Zl/OxeJi9tYfraHczO9XtDxFGb1jStaA4cAVfDBBsFJtKvstVapLQh8ANnymv/2E3ieuYCLMs3ue8nEvEC2esyY/Kbb/u5etddqwPkD/nngwEq3wwTZuNQTvTuL/9pZN5KaonnC9LplqkSDlYxhKniMvsn72om/qjO0Zd2o8kE8bG+yYqzb+ivwP8l3EY0bWYyFWzb2Zix4zj/D/C/DC13+DnaEZqZy7UFuH1SZ3bd1R6p9VQq0i6ps+2Q+qYAAwAlKDesr1W8UQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Maldives',\n    code: '960',\n    iso: 'MV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNFRTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NjMyMTNFRjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0VDMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0VEMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+25GwywAAAhZJREFUeNrEVktL41AU/u7tIzdarUU6oGNFRBlm5cafIAriQmRWs5jVLCoMzNI/ITO7wY24E0Hc6x9wXXQjiCBi1YKPtEmbdGqSOdemjG3iow/rgZvk3pyc757vnHtO2MHAdBbAMA0d3ZE+Ghdh7wGP7l0B53gnCT+euAxgLtBfBrhTnbcj0pZDNnSF7rw6DwSuvbjpIUU575B3Ubse1AcsPb0m0C9fIzhNAAkz2FCIh2BYRVjGLZRYAjERg+PYPr0CeZosAjubFaQ0QFOf8VjSqyXokuS4K7oBqBGi5AzqYBxzC8vInGaQuzoGIsKvS0CapJkxcLeeQx4UF2bSRYKWGoZJH15cYlCM4OjnHhbjn3CdPad1+HVLng3T23xD3JrLavseuLew+30NN8U7LP/5BruUpyCq7WX1i2LmMTQ6hemPn7G08QMQvURnnLh0mgZu+hxzVuXMfkim1vO+OWC1H9mzAxzmTrAyk6Y4UqqWDcLnbwwsM5qHMb+exuSHcfxOb1B86fxVrPaBH6qVeGIoFMuhYZxrx5j4NYv9cg4jqbHqunD9+jLnlJrhV5RMQeyBnFMDC0gFLDoK47aA7a1VhPqS6FF64Vr+AmJWyIbxvz7UHVtqi4VaZ2LexvQo89XWVsT1KI39dRtrv17nsSzonLRTBaejTSIv2MtNQr7TRKfag78BtXyOO9mPdS/G3fz10f8JMABK7r8EsRKWRQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Mali',\n    code: '223',\n    iso: 'ML',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNGMjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NjMyMTNGMzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0YwMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0YxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uyeEmgAAAJtJREFUeNpiFNlq9ZSBgUEKiD8zYAHv/jEzyjL//nte8sF/QZbfLH//Mf/Hpo6Z7z/j79dMf6+H8jH8fMjEzCL4H6s6IOAF4mcsUAYDEo0N/IPSTAz4wX8oJqSOl5ACdEOpoYYoH9AMjFo8avGoxaMWj1o8avHQtpiRSmrAgAXa5OHF1fSBGvYXWsmz4KnsYerALSE86sB2AQQYAKnHJTCzkNpyAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Malta',\n    code: '356',\n    iso: 'MT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNGNjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTVFRUNEODE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0Y0MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0Y1MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uPhVmAAAAQVJREFUeNrs1s9LwmAYwPHv5hvI3AvqZrrK6AcFDSSoTpWHIqi/OegQQYcOHaK/QNtWastY6jJ0Zeg5OmwR7AsvPLcPL7y8PEoURQ6wMArDoO94aFaZjKbxU+O3Hve1Y4YNB1HM84vk13HFdGDQ8eXd5RV2/YDCxjoxJ9Vx+M7Hs0/Te8DJqjy+vjB8ajPqD2KVRc91uT2/oGNIGq0mypzAu75h5+SIvL0VH6xVyuyeneL4bSJFYXNxibW9fbJmMdYbq5OHpK9UsYwSZqtL1ZhHX11GSD1eeDbkTIPt+iHSqpBEYjZkchqFmk1SqfxRKZzCKZzC/w+e/NXBdAsJEjK/rU8BBgBwJ0VJGmmDwgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Marshall Islands',\n    code: '692',\n    iso: 'MH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTVFRUNEQjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTVFRUNEQzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNUVFQ0Q5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFNUVFQ0RBMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YGjCSQAAA6FJREFUeNrUlV1MW2UYx/+nfenHac8ppT0TLVAEZoWxwZKB4OayGJnL6p2axa9NEtggMcZEvV6yxBsvduONMTF6MdR4sSg6wleaxUFhDM1wLMDQ0CHQjkJp6ddpT885vgcKsjijI9mFb87Ved/3d57n/3+e5zBo+gSPZunwyNb9aAZQVO3ZzVLBKMhaEC81M/pzZUPkvt10zsgbZVnJiTkU6B8CS6EZHqKD5Rc7q75uc/c9zUV3oHP0m/KeQnMyk4usZ6DXQc9A/S9QDqKTQjuqutop1BaNR3DjjnELLcnEROr2F59sdgdXUlf8gWAornEp/d+gZn6ps6rrbHmvxxKLBnF7ASYX6zz+GtH0TUk05PoDj19898hz9U+kxFxlCf/RF+OJpXXYTA+I/S/oYuferray3uqCWCSIqTAsnnpXw2nu0OspYieQVZ43VdjN3iY35dKLrIm8+nzVyMj8TaILJrKSrEDH/D3Sjr1ftZd0VyupSBizhcR69JT7mTNsdUv+ZCqrCSIrqijJsVRWpSZvQNaTUiKTy0iymg+YbqibRm1AL7UJ39bIiCUQKK3hT5x5suENYndtZ5VKS4PDAULzTaal6XVRGg7UewRvs3s1Jn72/eS1O2FpLQ2rAXoKtSFjt/CL7RVfvs1drjMhwWLpqVdsTa3l+05uE4P3Er6x+Z6hwMD4H+HZVSbfjTRrhhEc7LGDruW19OhkKJPOgjDIUmgRZ5s/J3x32jq434FsWWmy7h370VYYhE3irZmVfv8cdX54IpSdX9MqzWmhJm1VCNHRV+G5yFVa3FSKaAJEoJparb+fdX7a6hytrQRqvDjygaHkmGHjxk+/hPquzfb4796cDIGWEy02hwXlRZoxqiYj2W4lrZCthtV4WhE55IotBVPtRRfbKm7ta7Tj8AUceA/gMkDfUKjHd7v/+t256WVQxTgjHCw8ezRE3pd8PZEdbUpf2ZUwVffnTqH7/WcXSl9qRPPHICeWgX5fpLu31zcWWP1thTYt7GYUsXiMy4PUB7QW2YAC2ULEDCbZ/2HN2IWXC/CiF8KbU9HawYH4Dz39V6/PSIGIdpwG6LJp+f0zccdAOvg5wlIxP3H+hZUOL4/K2plkyzfTxVd8kzf8E1iMwKjXbLEYtAgeZnAxDcfPv3VYbKnVKWzZ5YVDl0akmdEJhEIay8li0+ddjULS0sguGcpP/ej6dfwelgdg1Wk6eoStlHc/r5n/5V/mTwEGALOVkZrh0WmoAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mauritania',\n    code: '222',\n    iso: 'MR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMUYxOTgxNjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMUYxOTgxNzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNUVFQ0UxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFNUVFQ0UyMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I0M3dwAAAo9JREFUeNrEVjtvE0EQ/vZednx2/CDGcQiJLYMQ1EggRMkPQKKiA1FQIaVKRUWDxA9BNKRAogWEoKCFIgoSBixix1GwZRs/78W3xyGFxmcfyKw0utHu7Hwz3+7Mnth4fmUfwBqlh8WMFKWuBQqOfRcCrkTZpQkPA09BnyL1KGMuYEFxJU+2jrxio0DZp+7M62gWey8QOSxPICVcZBUHd5bbuJtuIUc9o7gYe+KPPaGshWUowVTSKSO0KR1XxfZyC1vZQxp4MFyBh90TsGhtENLm1yFyjGte1IwnBD2tWTCF54Mm+K07OnZGJtPiVq4/GydQs2JIkgnXt3FR4h4bIjrVMruL8QHW6KhLXWZgktoi5cbBJq7Xy8gyGFO1fVBpIwO9vNRH21GiUz1wFZzVx1in45c/0sgziJO8UK9HCbSDQOR5F1T7V6CWgavpIxQJPuA6VCdaxrJU3pDWe5kjnIkNUZ3E/YPXOS/BVilGUE7VSQxFBrlF27cMTA0ps6nABUb+tJfBnqVjb3PXp/EznR44GvpkQ0qTepVzeWb3sbSLBjN93M1xrx0dWJcGiodbjTIUOq5V3uNBrokLzEyyIeWcPsF9zh1WPiBJ/XajBFfe9pCiEuzV3WntUjqXNF4i1a/WPyGeoDlvcn8cp2uBpDEE4kN4wySufavgBY+mrI/YVKbe6p4WVugOS6ZsjPFusoRTX85jm5fnptnFhjHyz7vOIJ60VvGos4KmraFEUDeklGbK+Hjm33meHTo3eX4llS2D/r+yZfY4t8y5FV422xOzdMzwjH8P6TAt26PhYES9xkbi1zUbRo6MeIHNzA/NvK+KBJDtMCacuXrzX71O/3L8N2At+OVJLfjXp/dTgAEAlE8F1+TZHx0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mauritius',\n    code: '230',\n    iso: 'MU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMUYxOTgxQTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMUYxOTgxQjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxRjE5ODE4MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxRjE5ODE5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lva3PQAAALZJREFUeNrEVsEKwjAMTduIbjIcO6h48CO865/4j36QCB704BBHq4iMNWbQQ78gefBo6OX1JSENntfbGwBsmAFkUDHvmALIThFxC0rABf10hB+mjCmOQppjliMe6qOO4yc2NnuJFCya+NVxTL7QEZ4vvUpzmfayenFQMwchYcfsDPUTLzy1RgQculKnxm7a6wj7z0xncu1Oe0oXJGiY8PouXNZtUnDYKNVY7z9OK08lvPqEvwADAH3qLsG8TnJFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mayotte',\n    code: '262',\n    iso: 'YT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTFGMTk4MUYxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTFGMTk4MUUxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTg5MzRERTk0QkFGMDJBOUYxMTU2OEFENjQzOEYzRDMiIHN0UmVmOmRvY3VtZW50SUQ9IjU4OTM0REU5NEJBRjAyQTlGMTE1NjhBRDY0MzhGM0QzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pK5/OQAABEJJREFUeNqklMtvG1UUxs+8PbYndvwKiZ3EiROndVJIE5M0BSSya0slkBBSFlXYtGWBhAQCsahY8AcgdlQQiQWwRIIltI2g0ECqkHfckCZ2bCd2bMd2bDLjGXtm7mXkCkTVOKnEuaORrmbmd7/znXOGwBjD44H/uZPwv4I+gqsjtLeHWUonGXDYILIBPQGCodFyRCvlqbOD2uIKBkQgRDodmKYIijP1nyaeQBNHqMaodu2tymrEdO1NlM/o0TR1fkSdnSG7gpgAmufR1qZ+LkzPLAAF4sMHzJWrtisTlME6UTXCupbaJfJFvL6B8lkIDuB7s9zgGb23D6an6edHyM52+vKrWLBXkylqbp7UFATGKSepRhhUTYWNda7JUcmlye5Olub19YfMaFjNZbUffmQmJyGXpZub1UJGUyk2kVR5gho6xxBPYcgj7TKA2TipcTG1espKXS9z1AtHoGPR6KEoGldfsNfpdH337R/xnaJVYCsKMBiZeCKTq5oYeOfdlzEm5ucWLRYzb+WDhl3He722vLK4tHTh4oXt7djuTsrt9tyeTn/+RQTAVq+TWk8JB3uo9z+8mM2kFFkaeHbg9q1b+5n9F1568b+ox9ItFgqxrehwOLybSICu8RwLUHN5OIPb2mZ3ubk2n2N0zAtg6gkKAFWEsImlY1tbw0PhUqEYi8UaohVFMQvWUH+oqdkh2B1iRdKqUjqrG+gSwX/86eDNr0cl0g7QXKlaAB/mCwW7yyM02f3dfofLWZEqDQ3J7xfaO7yFwl6gJ2BsC8UisFarRTXBDk6ZP7uR43i0/qfEAbI0+YAQ/P5OlrNyLJPP59wtnlq11hCdy+cye5mJidcl8YBlOIuJ38HE297IDfioGZh0glRA6wS9CrBlfiNy+FoXxRnDKIlFl8N+f+Y+wVChgf6jDRk7P1aRlampb6bv/LS5sc6wNEfS7Nq2k4bvJ90uDzol6Hcm/AIPrbGdGgaKoePb0V/u/vrl1FeJeCIcDjdUbTFbrl+/+tvM75WK6O0IJJIJ5O+iSDanwaqF7eX5QBHNeoUACSzBIKSl0nmXu2V/v4gxfenyKyc0X7lUpgno6Oi02e3VWjWSy3pA9gB8cDOJALFAvvfJA6Njorr2lyS6SMpmszubnYokl8tlm8123Mjc+/muy+0Ohk6TBJFMJDPlsu/wQMwfMCarVsxg2oQ1XM3vmtva1eEhLEqhgQFZVjKZvXg8Pj4+fpxqT0uL0doOp0OuyLup1HOhEOU8Y6uPclySkKZ12Gy4PjzmWnVufmE9sur2PLOTSDYJwsmDvraymk6njNJ3B3pdbs/q8tJ2dLOttVUURU3TKIpS5Gqr1zsYHlFVZXFhThIVn6/jbHjoqX5PjyKbzao1lWXp7F7GarUKVmutVhMlsVQq+3w+BKQkiX2n+hp9fhxa03WSJIx19FNNk2VZeMKHf+NvAQYAoQ8NT92b0fIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mexico',\n    code: '52',\n    iso: 'MX',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczNTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczNjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxRjE5ODIwMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzM0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0LwZHQAAAaBJREFUeNpiZMhw/8SAD7x4zODm6M+wM6+NgVjwKKeS4enUTgYOQVWcaliAmJdhAAATwwCBUYtJAv///aOfxf+B+Pev7wzPr51g2NwWydDkb8Rw5dQR2lvMCMTvX19guLWrleHW+bMMBw6cZygPtGV4fvsyLSz+D2f9/PWK4T87N4OgmgvD1TuvGBz8XRnEeRgYVk1sRKj+/5+giSxE+ZKJGUy/fHmLgecfJwPTh6sMHB9PM/z5+oXh4zdWBo+CLoZf/9kYnr+6zSAupsrAwsJKLR8zgskvnx8xHHv0jGHJ+a8MD8UcGFyqehg+Pj/J8OXjdwZbHy+GJ88voain2OL///6CaW4ucQZx9tsM/zS9GJZ8MWa4zf6HQaK0kYHZ0ovh8/MzDCJCsmAD//z9Rd3EJSGlyyDCI8WgzXKZIUDoFoPj48MM7L/5GYT5XzJwCIkxKMqaQf3LSJ04RgaSKk4M/C/OMdz8+53ht0kOgz/7WwZhEXEGaRkTksxhISc7cUsYMRgBMcM/YOplYhyAIpNMS0crCboCUOL6PBAWAwQYAIwVfZVkoDrqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Micronesia',\n    code: '691',\n    iso: 'FM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczOTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE5Qjk1NzM3MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzM4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pVbFKwAAAjtJREFUeNq0Vt2KEzEU/jJJptMfu3+u7ML6i+zdXop4JSi+hyD4ArLghe8h+Bi+g/gCXgkFvXGFdi1ut9NpM5N4Tqq0CGmbcQ1th+lM8p3vfN85iTh937tAjeHc/CoEag1F32uxkxJCy8vKg7dTCfsnipg1YidIAj3PDW5uN3B3N0N/PINMRC3GUWM0q3BvL8PLR4dQBPj2wzd8HU6R6QTifwJbS2mlz1Y2n8psZ5VDU8etI8hcUQKVBNwl0FY6ZzgxFsO8hJbialPNUS0vyQCjosT3C+vvOYCGErAuPCcamI10SZqya1OZICUANjCnt5vJRfodOx2Ylo7Sbr3r2xSQdTWAk9/uPb7RxNQ4VIT4c1IGHcw677U0qMjQbUh87k/oqujObV5O/OrYVLhD5fL8wQFOnxwhUwnGMxtkUJDWEA6vHh/hxcMD3L+eITcVQiWerBKXyWn64TTP/1rvwyaVlab3kzUtLehqnjig5nBy2IYhsQpK9w9KvQqk2lCq9zvaS8H6fjrLvfsRCDaoMRtqv5OiNyi8ftwgON2h9tigZ/1Lg6K0PrjtplrZSle6uiKmvGCmF8EwYWbH9cuDA0ql8M+41LSUXtd1/XttHf8tFbPfIjY7rcUuNSS3L0uwyY4VvUlMjfWsXz+9hTfPbnvG+Qq3X1mvFoSqiBKnm9kyOUUp3qRb/RNwh/bfL8MC7z6e+c7GjWKXGkfsnhy/OxEAO7Y3mHiWOy1V6yDAwKM6xx52+/IRKHb8EmAAirfmzWzPA+cAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Moldova',\n    code: '373',\n    iso: 'MD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczRDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczRTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE5Qjk1NzNCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzNDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+UdXXEwAAAipJREFUeNrUlctrE2EQwH/7SDbbmI3m0SpF2iJRaPEQ8FJE8OJFD55ETx5U0EMFEfInWBEFEfXmQfAmCFqhFKHSg+2lBsFSNAj2UFqatNQ8TLN57ToxBy89rCUxODDsx+zs/Ha+mfk+Bd4W2VVU0YM8u5fiauo99jc8iXYYKq985G+EUKOOGHb300VD9EBUeiR7AquKqPoPwS2gT4pTrYN/PwQi4Dptm6J0C9wQmCG9cghqsn76MMT8bAgzKjb5AUPeuY0ugI04pD/5uH39AEGBf8+FWVi2KLtwU2xfMhpGtAtgRbJa/Kzx6EUfM48tEopNJGsz9SDMk5cm6SVNxsc7WPfsuQPhqM7l8T5G5n5S2qgTUFwSQzoXT5lYluRQ9Z6KN7A0jr0Nc2mNuGUwGxvm+KUVlKbD/Md+Brc01nMqTkECxju81a0uNnwFPuQd7gYusDwcZHpglInCLcqObPs+G0UazHE6CZYGUiVo8ohJrlbi2sgb1jMx1paCXBmdweovELH8KH5oNrswTlZYJ7xR5Ky2SKigcsK/xmTiNdsrVfJV7XdJvM6z5+aqb8Lp8RLJ5zD1TmNhuohhNomdV5lIlRkccqhvieNAh8ENG6KW6BicsRxWs3l0SfLkOZejSanFqtxKO94DegYrArFlXNwMjB1zuX/nR/u8NgX4Vd7rbZ+uXRKt4JWsPKV7Hal7ZbMN/VvZwycCap0VtT/r/+o+bmVc6gX4lwADANw8m6+4QijQAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Monaco',\n    code: '377',\n    iso: 'MC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QjA3RTdDNjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QjA3RTdDNzE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCMDdFN0M0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCMDdFN0M1MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+o1HuEwAAAEdJREFUeNpiPCeo9omBgYGXgb7gMxPDAIFRi0ctHn4Ws/x5/35gLGaXlRkQixn/fP4yICUXCzMP92iqHrV41OJRi8kCAAEGAK++Cy3NEBqaAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mongolia',\n    code: '976',\n    iso: 'MN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QjA3RTdDQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QjA3RTdDQjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCMDdFN0M4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCMDdFN0M5MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XDrqKwAAAkFJREFUeNq8VT1vE0EQfbO7vrv44jgKiZ1YQRb5ATRRJCiQkKADGn5BaKho6egogQ7xExBlJBoKUDpEgyhQCiJSxBKREcaJ4yS272OXub1EwiYFEnuMtPJ5NLo3b/a9OfpaX/4GoILJMHxoPCW0xnynjacPn2Dj7jqW9lr4m2gvLuPG2w08evwAB9U5aCmhON8YqzoFS/cJImCwaQOTwnkIPv3JpO4Rpq4lUBc19DEKCTGZSH+SBVx6eYLwVoykJ/4PsPAZvEM42VSItiRInldVBOMYKF/nMddTTN1MIEO+40HRwCwiMyKEdxIGH6F6L2JxaZsrBphy+yQdATVrkHYJgw8+hh9Z9iv8f0Aw0Z/2+pdQv3tWNTIVE+JtbqAuuAE+P1hs8xpU4prYMWN9SCDfoPmpj9qzAQ5feWwpgT7/qkWNlS89q/C4Kxwz1nkLqqYRrKUIriR23N7lFF5TQ8zxmeUy7W7cY3esE8JoS0BWDfzVFIYnEW0LW2CGTq/4lPHZeh7xy3lNVu9HKDVThLdj6CNyq6pz7cSsM7ZJSyBpSwRXU4jMx0UDizJbmTf3/gsf8Q7h4LmH4zeKYbVz4DE7kTBQC8A0j1g1mCmryVzK2ZJX4ALRvKHiXcLRa+6HDIbvJQbvJEwCKy7njMWMsWuxtVaxGyreEfi+HtovVfY93l2dsb4uXeCRd90BVyxvfmfEVspGKhd4TbKVbEPMNvqs+FlDBW4Z7/GYK9m4M8CzhSLK+XO2KmUtF5dxqLFfAgwALQ/bbU/KwEgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Montserrat',\n    code: '1-664',\n    iso: 'MS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzRGM0JBODYxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEIwN0U3Q0UxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRDk0NjlGNUJGQkI2MjlGQjlENTFEMUY4NDU0Q0QwMkQiIHN0UmVmOmRvY3VtZW50SUQ9IkQ5NDY5RjVCRkJCNjI5RkI5RDUxRDFGODQ1NENEMDJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+w2IgWQAAA5FJREFUeNrsVG1sU1UYfs69l7WzWxlt1466spISNs02ZLgExpeogAmbGwEyg59hQKiO4PwIKmqm4JQQ1MVERhxkGfiDRBf/YACDQBgyzDbiGMOMwcCytdCt++rXbW/v8dzjiIs/jJnun0/uj3vved/nvO/zPueQ3u0vOzesrOtMrm7suNvSDJg/r3DtOPH+qZJdq4+KCA6KYugVu79225wxZ57jjc4Rb4AgCX8LCogihNlfeDY99el63/mOyozde56dkZvjG45DVgdUMXmG/gXbrbYK/d7qJ/YLRZlf0RFfgGXhn4CClD5TLxuMi/WDbsst83NPe7MW9dZ/Pb3y+ciez6jTVRjrxtqNje3xYwePR70DzRf6Y0qc/MlOqFZiAhAIBF7u/aoFtvbITISj92TBM0rjQwGHxaBEYr+FFDOoIUUYy3DJXl+6MjZrdroqiA/++rhPTSeI8Hy2wTAQBh4AotBUMhGobIVTE6nVmD0QGR6IhnJLltgTY0l3ro+y0HMt+kcLZi3Nv/lDc9DhaDG7bof9ZJoUI9MAhVfGeP1Wi2l3zebs/NyermsfvPetp+8OkMGb4B1h+uvOskU7X1ywLT8uN538qFOX87D1yaqyK2/W3ly7udziN176vq6p95MbabcVC9ovExoDJIqRh1ymtw+/GxGtKf4O0V4gRwP73R92dPURmJlKTBBx7ztVDUtjRT0/1lUdeqnR1/STtDpzZFnf6XtZ88sqznzT0p06x7Vlvt5t8iVdvXxhCImEntcVOHJoq3NZXs0Bf/jSzvPXjavW5a9faKtvOAOwAEEgVHIEB7989ViD39olZ4MGWc7JX5TQ0LxrbTGkSj0Xf950sX1fcfGO5UW2tL6kRCQGA9fEVLTYebYfqXYb1dkDROftx4rCmYAFiEMbKSFAGZDJvxUCiVVEtUwrk5Joium4BwJ87HYWRqBwH/hPn6qe+5jdXX7YYDkuFWx8a01p/G6woHAXYGTUbIxsGssZHdFUF8bV10Ykcz+xF8qXkqE9bG/Ky2H/5Lar5LXS4XKdu3VUKMnrXpKRWryl1+u5QbS2CBOExW3FZCBSDM7NmfdxZZhEznqiC498l9badoXABKjjvp4s9R+HZRSwpRj0wVAIGGIG5w2NHxkJkwTlkzBShDkvuA4Tt9YcSvCvQO4fbooJVFSlEhsl/huQiTefIFBJVVVMARLquOGmBP9T/wW/CzAAKWlmnQeZkEoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Morocco',\n    code: '212',\n    iso: 'MA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NEYzQkE4OTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NEYzQkE4QTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQTg3MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQTg4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AgxteQAAAiBJREFUeNrEVktr1FAU/m5uMppOY9up2rEVVCgtFEU3iooVdNWFe3euXAiCf0DsTty5E6VbN+5EBdGFuFGLG3Ezm/rAQseBthJppm1y8/JLTEREnHScmV445Obcc853njcRDQzXAYySHPRmWaSverbBb8+egGvYptUWcEjaCZFS2Caw3o5SHwGXjQhaDFQCAdWLiImFIardP+biwREPFciU13XgXOHRGYVnJ3/GKrqR6ogkSbsJKVMIDctmgG9eBE8JNGWMaqinuQhIq9SICzjTEtikCZ+mbhxdhz0cY6oh8WKSHFre1GNcnlnDqUUDtWqAUZ5dq5mpE+p/gUMaSWq6x9Zw62oT1opA+ZPA9GcDygBejvl4clZhoxzj3k0Lu+ioXaDqgjfX2r8ujzxtVfq4YPq4cs7Bmwkf9bkRfDcjjF9awYX3Jdx9bWG/kmhkA9Yi1U7LiHMDdVZwYtPAbK0fM+M2Lp63UwjLFZhd6CeonsrITs9x3s2vRhSEJvB2yodO5Dggb6/C8bq+pREpLGtkPf5w2oN7MMb87UE8vzOI5mSMx6e99FR2A7hC0adDjPYj8OF6BYeDEk64Jbzj3lsE5vsUBrYw0S2bK187aPRLKWSTSexTGpZY4QRmjO9L5K9GEQ4EEl6xe8wpXOMNGjzErpVpo4W/miPZD/AiKfMkkel4cyUG3Swa+Qd//S/8rnwWO7H07JfH6vGvj/NDgAEAfcqvgcMO6pAAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mozambique',\n    code: '258',\n    iso: 'MZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NEYzQkE4RDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NEYzQkE4RTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQThCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQThDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9o9/QQAAAvpJREFUeNq0lt1rFFcYxn9nZnez3x8xGpMl6xpMNCaglCiliAqKYEVbCQriBwreFEuhsVAU71oopRRv2hu19QNBBEVQLxTxoqEgGsvWoIwSFzdo/EjiZjOzu2YzOzOeXan/QGcHZm5mzvmd55n3fc4RP36yafzYlmXteFWDt2VQBA2+IvJ+KRx69BvJRGTv9l6mkjGYKoFlg2joAgzlQSLMxvECmVPDrPlnHOYFIeAF22mobEVxHEaaQzRJlUOX/uW7axr4PZAINBQuRuL9es13S1obNi2WFMtcSs/nwJe9FFvDMGE0wnrjIxg5r20J7DmFFbM6z8J+dm3tZXhlEkomVKV699iGp/a0cFjgeGkKCp63ldBex+gtV7h8YYi//AOMHvycuWmdRXgxccd+cT/Ur6dVf+Se/g5t5WsGj5tktqW4ZZT4DJU1/hAPkgEGDI2sWWSpJ4QiB9r/V3FHK/xdKrBTH+XrxRXuyBn/CE7QZXTS0T0PTa+Qzs5xWoTZ40zwhJI7VZ1IOAz1P+ToL61sWNXP+v0ptvw8wPeFCuGDj6nM+Hgqq7wvsZCxlnUcCaTcAWsZL7/mekg8DbL75lp++PZPXnWfYPhMH85PUayKQAQsqvV/KwgJ1RWwpyUOhx4VuGsFuX6lg84Wg7F3xzm5Y4p9083Mj1dpKwuy1jTrqqNocgmugHXTpll20/nfX7Fs7AhPNiX59HYWezDK5OGldM3EuOrz8lVVo0hUDgm5U9WZwCo93a5EnNVTjF2OY8358KVKtPaYvLmp0jbYQ+6bzUzmDTodX731HNcCRBAxdR+epiqqv4qRj6N6qnSfzBDbL5NL9i+Wu8lVD5CaBF+sgl1RKOajxJdP0nnxMb4+E/ulfD0rk0t1N6vrYKE4mLJtTKuJ9l05Os7mPoh8Vqv7/75yGSyk3Nl8UO7/Fl2/jZA4lKeWEdbzxgA/gsuFMOH0jLRWw79a2v1GWltuLLQOXvDFCyN1LhtRohhWjg87kNpQZu3oY7wXYABi1iBcy/DE+QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Myanmar',\n    code: '95',\n    iso: 'MM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VBQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VBQjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQThGMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQTkwMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hqhQlQAAAbNJREFUeNrskrtuE0EUhudy7L3E9q7XlxDZEgbFCRApQkQgykjpeAFqyrS0afIGKdLTIB4gj0BKBEWaSFEig41jiPBtvbb3Mrt7MpZF7zWiifJLoznSGX3z6z+H7uweT6nCGXUmAjg1c4ppqI4T2I4vwljTwCZaKbI/9I/Wov6I6WRhQY/l5OV5oZnP7WyVp17ouaJSMDdXUp+/XA8FumnFpWkkhBIkScQ09BGJ50fP1q0VDfZeVw72X77aLjNG6zXTdUOyrJg8cYxFS7vpuiVLf/umvvk4//7d8yePTCFiXQPZXR6NBKVHy1DqD43u0G91HBn9Rs20TCWXSUfRP6Ald2h7ugqN9ohR8mKr1Po1Pv3aUdJ8NA5kdzk0yPEwxnyBV61R3lA/nlwYWaX9exKE+L3t2OMgVchiuAwdfkJxQlUosW+NcROw+oD/uB5UVzN92+tcMlirOah7CLF0QOJk6EP7U0j4rNLp4DwQZ1G5oP85d+c7HvXQp6CjrxExpWoiNPWfptjfhaWzkc4WRuY7r6U4ieXfLSgLwnkS49CE1QWf8oSBMPLfdI++R99F9K0AAwBXEavacm2ESgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Namibia',\n    code: '264',\n    iso: 'NA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VBRTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VBRjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUFDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEwQjc3RUFEMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rnH82gAABORJREFUeNqslmtsU3UYxn+n7dq1o2Mb7OJUBGZEjck22ECHiW4EI4iiDEb8IoPAMHFsA+/6xS9+YAheEgNjDBkDhiSKSKJhExmg8cKQXbgMAxHGGDCB9bKu69qe+vb0UBiXgOhJTtOe9LzP//c+z/89RyH3g7NAupxu/uthNMBgANo6Medn8dX2cmYca6HjpTIGunowJtjD/wp/dJv0L5ELSkhujIEBCyhyxeKDmMCdiZqM0HlRlu/j+XXlfDkvC+tHqzn45ttSKxHLiPsIBQfBYCA06LebojeGRd1xWG0D5GZ2EAopNJ+8H2+/FWze21O2nCK2IJuNG19jTqAb58TptBxowGZ9FKPVpokqhhh8jm5M+IkIiyZBI0mpl5iVfYzJGZ0EVAPj7u1hZ9tDXHDERxYWPm9G6RxgxtoythVnY/24isPL3sGDGXtCLiElqAmE/EHcnhZGpzxO+qYqXTjcV6GdOqmNwuyj5IzuxmIKMirJiddvYnNDHsR7hlL6hPKQUE7JpraulKLBszgmzaDl911C+QhxYUo1IJVNeC+fIQYHefNXEqoqY7Fnpy4cMGIa4cTljJUAKIzM6dcux/QKjMOKZaQDn0dabvGLqE7Z59Mo6+dnM+yzao6Uv0WfRplzHWUrGSlPkLppPfunplO0+1XO7/5aFzYGCfTGk5joJeRScRyK1YhVZ4ikxH58l6XV8RK0gCqUp7HkZ7Jp8xJm+4UyZxq/HGzUvIxSKtdSroD15Szq+551y6dJHqS7o7J1YUNIC1DD0QyS4rz0uIcRCCr80ZnODx0ZIipt7boErgFeqC7TEhu7cjWH33iffilvTxRK1EhcdC81yq117M1PZnbDQi42fQtp42C4DdQgV1Mt2+ZidzK1eyZy/NxfsnIDv50Yg7vXDKc6sDydRe3GUuaqkljx8pDupS1MGQpe46WTvGKhrKlgsXcXayufEcqQRomqaqJaLqPCsn0Y3ifb0EzjgcdkIRKg8+clRC6eW1PKtvkTsH0qXlbcxMvBMGUbY5MnkVa/gZ+npDOroYSepu1C+bB0zBYVjG6IIb/C4lZpq0H8bD+DpSCTzfWVFHo7xcvptGpeXp/YLqG8TN6CMGUZC13fUVM5TaccP4Ty1sJX9qXLx0wpsuWVLGyr1nDk9feEUrxMmCBrU4cmNlW8rP+JpvwRzG1YJJQ7IHXcTSlvFJYxhl9IW09jfiqTOklskXoOR65Mn+YGIdQTG/VSp5y3HDYspcSzi+rKJWILN3h5a+Ew5RmhdMj0qVoSnT5Hlr2rUcZHp4+e2L7WiJdb97G/II1C8fLvpm8iib0N5VDh5pNYp4zXKAs9p3FqlLqXtuunTy95C1dBdelVL33qHVNeeygza5pddQsm2O2fCOXSCGVcwliNUlEUVBmNfZ52xoqXaVs2sK8ghaLGpVz4UU+sxfavBPXDrYT+POG69HKp/bgkNu7Kk0QKKYarXmYVfwhfVFAi06f687LI9EkeE6EkdDdPbrfSbh3t8np9dmviA1LiCqVfEtvOgyl5ktha9hYkM7exggt7dkS8NN8V5RBhk6rEE5sUG/HSGMOgq4eAv4vJxZLY9ctY5JEZu+JZeTm4Oy9vGS7FbHZLsfBbiDvodGKxJzG+ah2/znmSFxtLIl7eI17abf+LoP7G4/5HgAEAvGpSdeM9fnwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Nauru',\n    code: '674',\n    iso: 'NR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VCMjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VCMzE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUIwMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEwQjc3RUIxMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+zsfIiwAAAWVJREFUeNpiZNCuZ6ANYGKgGRg1elgYzcLwm5l2RrMw/KeJ0Yy3N2jzsP/BJsP49+8/oKUszEwM/8mxnEWQ+xcvx290YWbmb5++f//3l4mRke0/Izc/J8PffyS7mkGtCU0A6E6GJ+8ZhLhs7dT//f9/9PAtho/fGST4QaaT4npmBkFnhv+MKOjTT14hntQU+wmV3iFuOv/Z2K7fev3z408GFhZ0lXgRCwM7amj8/cfC8N3PX6+n0JqDHZQ0uwusvnx8u3je0Z/M/0AeIj9d//vPyM7y9+cfDnYWaGwwM/3+9YeRjYXh33/Ksgwb8+8//44cu7dh3w2IwLYjtw8cvPXj9x8GmGVEh7WYA3rMcrN/eflp34XH7Gwsxy8+Lu/e9ezxO0Zh3v9//4MimYQUgrUqAKblD99AzmRiZPj2G5haGH7/I8lc3GUIMJ3xcjAAnQk0kY+D4Q/J5oIzOh7AyUpJRgcIMACUJouaxkAcBAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Nepal',\n    code: '977',\n    iso: 'NP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRkNCMjg2OTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRkNCMjg2QTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUI0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGQ0IyODY4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8vLQDwAAA4RJREFUeNq0lXtoU3cUx7+/+2rSR9L04SNWbdX6RuhGcW51uKp0FXVsQ9gfUphTBO0/goj/iCCICBNREJyzjk7ErlPEirZqnYiPWtOVRTYb1zZVY9NIjbFpk97eR+5OkmL/atLXfnC53PO793zO+Z3vOZcZhoHRFvvspyoIGYeh9rlhaFELxrOMpspR97hEH64JPt9W4Wt0QbL9ADGTPEUwVSshOFcLBard1eKZzqqzOcq7eqTOKgQnTkkACcG9fDoXSMnBtrfNuOc68eXWHspezNgHshF9+PofwDwiUBkHp9kOy1AYZzuquQvtp4/OD79ugtm+ErxpwtlzSQWi62DBPnjkMJwaj83eJtx5dvyT3a/rHoNLOQLT9GEfxtSBmSTG7xyHxbUXUHj5N/xjzoNuMJzw3cB118n9RUFXG8wzyyCkjSv7hGDF0430VcVY7LgJ25ZNsH2zASue1EP9Yi1a5AhKBrrQ8O+phQde1jQQ9GcKwBJ3aUwOzEkSQm1/Qw8GP7gy+19hZmsj5qtBqLwAW2QIh15cgufpwe3be267UxmrABOTgoWEm9NyoTv9cH1ejuklJXiZYsPvjjeYwS+AlF9M9ddAp04SZChQAigP/JXdLlmr71kWVULX95CLhxMCG6pKgysTgibg7YMbyCDb/SV7jdb8DUcQ6q4lsp0UwIaFQBHQ+2pQhBbOp2dpwhmDRBVRFOjyIDTzXGTrg2hs+5F9F5G/vZW37ijCXmdMUGxklGpMmHyNoxnrggJL6RosvVmD7DvXECndiFrPuUXrfX8EqJU+Hu65uKJjqh5bWyXMWH9HvmfnY9r5UxDsM2I2ueZX9K0vx0XnSW4LJzbdzfm0GIM9zmilx/MT4ZINDzFv9gdodJlybQgULEc/xXyl4xdxtb/5MbXRsrG20dgmF9VY83mhv+kdqaE/AL3bDS9vRYhG5tWOc6ZVfkczwRfGMzYmDxaybJC7OvGiYjcGHjlil3vrLoSfP4OJ1N4tWSDT36qusyqtONDaQvCCscKFZANEVHj037qN/gdPYj71UD+ktEwwQYBAovISfI7yHvXtZzLKCne2/Jm5ogiy79WkwCZtyJrDwuBS06GG/fFg0mgmkw3KSFYq42FXgmhpO5b11YIdXXVZHxVBHXg6YbAjNc/z9bzvrTITjGSHF4XPpcxVQ7dS49dSdKVk9o72/n8CDABnj2XIyb5lqQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Netherlands',\n    code: '31',\n    iso: 'NL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRkNCMjg2RDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRkNCMjg2RTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGQ0IyODZCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGQ0IyODZDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dLNUtgAAAEBJREFUeNpiXCej8Z9hAAATwwCBUYtHLaYZYPz///8nIM1LZ3s/j8bxqMU0AyxK7j28A2Av72gcj1o8/CwGCDAAa10IGBJ1C8IAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Netherlands Antilles',\n    code: '599',\n    iso: 'AN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0ZDQjI4NzIxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0ZDQjI4NzExNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQkE2REE0NTQ3MzVGMzJGMUI0MjQ3MkQxOUFBQTIyNDciIHN0UmVmOmRvY3VtZW50SUQ9IkJBNkRBNDU0NzM1RjMyRjFCNDI0NzJEMTlBQUEyMjQ3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZDn+FAAAAexJREFUeNrkVM9P1EAY/aad7UK72RZkNSgmROFiOHEyZoUQIgkJRw/Gm4khMfHf8KxnxRMQTsqJAyEEDv6InkiAhUAWVrbID3cL2y67225nPmd7U9L2ZGL061ya7703r+/rDEFEiCxndcUcGVOuXAVKW++cez/M7tk54/GjaKIEf6z+VWkinl8LW4vEEmksItWj9YKflG1GBBglCj5A8loiXnpxaSu8i1SmF2vfTuQ7tKmf2S5y7OhUuXSSWS5pZIdxH5CEfy48i9y7KXwDyQBWHj4fNvS2qReLQNKAFkA1yJNEBGKEWRbMtKE4VQ/9BoDf+G5VLIFngC5Au6aptRpHZGEDkwGGgp1/Wy1pVU3OTI8XCo5ZPBbed7b2c+tFgDRA/fatztdvRj9/PD6vXAT+LisQIX0/JCjCGG6sl/O7tuuKyQnjqpgfgC1seq68mSvl9yqMkbBMhHQ2dIjIT0/LrusamY7BwZvFogPgZYf6GCbKJevo6IyxmKyt2H9f7e+dmBz49GFB4B88yb57v3d4kA9a9agDMfX2S0Rblmgtt119+SqRUj1seaSSz85t7emkeu8u580oSxhb+1+Ft3pKwes63tAbeltNsFbnY3nxp9EpVE2gSrILWABWuAdm92HD+F9vvr9R+qcAAwDK6wIXIkUhaQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'New Caledonia',\n    code: '687',\n    iso: 'NC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTc4OUU5MjExNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTc4OUU5MjAxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOUZFRTg5QjJBOTY4REI3QkY3NEIwMDg0OEVCRkM5N0YiIHN0UmVmOmRvY3VtZW50SUQ9IjlGRUU4OUIyQTk2OERCN0JGNzRCMDA4NDhFQkZDOTdGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xxyn+wAAA1BJREFUeNq0VVtoE0sY/ueW7CZNm9oY0jRFihjFC2K9HUWOCoceUEShL17w9tAXwSfx8qA+iFpQq0/KkUKtep4UER884PH0CK36oIiXIN5trVirrYk1SbOzu7PjpFU0wS2t4DK7MP/MfP83///9/yKoPQ+/5sEjLyOJ1OfrTjQmaDoisCOxDp/KIYOACHAYBDnoSXDEaNy4QTvACPTFoO9jxZS26TN6YxH+wdDb2uPWqxkwAYGvH8TwVeSYoB3EvPJlZdm4jsYjf69dfr+sCrc0+X5flGE7/cdb5xxu3gQlUyDSBaYDkrqhI5h1tdjGMHSXxSMX2s41xiapeajpoDx5CrVdZtXxDED6yqXQsi0HHd9cCPYpGm686RKSKAwEeDPBlKez9ezR2CRqvAlpYR7w04aN/up4LterUaL/ufL9X6nGE1t3RoKOQXIgkYsEZtYWSWbwCX2yq3PWngx/V8I0WxBt+w5obkmdaQ7VrxU8aTEvNkvTD+pD865XQtR2ZZ21yfdzv0UeBQ36h9oecKTEHpRNsbsJ6S3130ug+vytsJEFX6kOdfaryzI6npl544+gOS6A1kw2WGWGK3E+RQh4mgTCvK6Odb/1rVihfHEpdIStfOhqaM84EpWYEzTKkkFCSRjL4QhKxZ5AqDyn00w0DGBr6h2SBFJHBUIjyBsTKQsGE1ovzfWrbAqFThmy0vb9BDAvu9YhgFCJkMx7leS1E05KC8lihK+DlqVFgS/pzO+mL/4hUMsVYRpw+ru91/7nj5+nb9wMrl/nMKrOgQmi5KIWNxBkLN2tZDbUVxUgI0m5N/ks0PL0VkWc2ykWmkj279UPHIHD+5iTNiQGFrT+veJp8kyr3qZZwKWbQs4uCBbbNAxdFatbjasNd2iNOud52ulEInrimblwKcKQftnONv9X27OqCkqMoei76BpOrim2KRo+Am99s82uQ4sfntndc7r9y8qFY7rvt8jqi1MHYtW0NCW4Sqhr7/wR9DC64s4D0DUAt5/T7ABYlk08EK2E+TUQooAHwRJIVZx7C3TpfEpUXOnvI0zWYMFcAIEt6WHYNAGSWRCG0h3kFfrz/RojzmUvtxH+cpV8mkdiOmrofG0MNbZvIkBy1H+ZzwIMAI1PbW2aWDCwAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'New Zealand',\n    code: '64',\n    iso: 'NZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNzg5RTkyNDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxNzg5RTkyNTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODlFOTIyMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3ODlFOTIzMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ycsmVwAAAzVJREFUeNrslF9IU1Ecx3/nnHu3uc3p5lbOWDk1VDQj+muQgVREUJGFqEQPSf8IqYeIiAyKngojCiItqLCIrIewsH8WQf8gJNK0P6LRTJ0619y/u927e+7pbgn9hR7cY7+n8/L7nO/5nPM7qOvA8ezyOS0e87EbvZ9bX0CatXlv/vqWE/c21FVe84EgTk+T9zmFHRW5gs05++ib4LAXjFr4uWQFCAYEvxVX0jS6/XZfw+5Fm7c7GldVHm/3BBlNpVI0xZiRjepI3561OUa77fCg+dSdkYhrFMz6H90YQFS5KUCjoEGg/IJGm3ZcVczWckt0G3Fp1pUFHYUDN9uhtgqfv2owpcxEXli+4lJXpLXpoRIT27rHYkERNGSyO0qdDmN9CW7opj0DAmjxL+hA8Xw143hQdkUw8wesOhxTmFdnNIf8Wh5/tdrZmCeLSPaZJgnrbdFVAaYHJE12h2L5eemnl/D7X0mdH/zx4OquBAFLoF/vqg+6v4YYKSorNntHTILPI6Dei1dyayozSwv8L3s8Ev40bVbG+Agy6JY/5UICAx5AkOP9elUxiQuRIxwHBoM2HJZkVX3CO2nka/pXVyzbV72gNIuX0UnNPFi6qOjO5Xd1hx6Vbly6ZaUlP+PdGDvod9ZHciXXICgxjEnBrNQZthT1rEymQEUIxwqzTTfWpD8fUzxu1UzcGLmwv+5MUWB2x+NzR25Xt7ivPwlUO0Jzh54N2udWbG278vijwWKtylVqU93W7rftblAYxkh3dhlf6UDN/RyNicATwChCWV+AdY9EJIXFnajoDQtX3G1s29lBLg1ZfN4wpAND0PtFfIDsnTHk6+htbX1/U++UM7N499DdL1GFaJgidQnk/jAb9gnAJa6Ox5JI+11hSWWqur+7Bt0esGQAjYAeAc8BlWFChvRpMOEBEwYNr+aEoQlQby7TBnoKLKEymHCdyn2n/LUQ5NXDFEuicSd/jAyeElTtlhQwpAFlyUYLSrHTdKtcXuw0QpQlFS1RHY9zTDyvPgmR/v6HTAltJB0DoZJxEwhBMOKkpiYE1JHxjoMsx9fJTM2YOiyg5SbXyUz9r+fzH/1zfRNgANDBXQHER7G8AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Nicaragua',\n    code: '505',\n    iso: 'NI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNzg5RTkyODE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFCQTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODlFOTI2MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3ODlFOTI3MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KfyaKgAAALBJREFUeNpiDG7/8p9hAAATwwCBUYtHLaYZYPwPBANhMQsQfwFiHuK1vGFg+PWD4d/rBwwM//4yMIkrMzCwcQLFhUmx9wsoqEny8ZdX74AW8TDEPbjBEPrgHsN/NkGGb+++kOrh/yyk6uDiE2Y4de0Jw+VbXxn+MTIxHBN8wGCtJklWUDOSlBo5WBjkud8wnHQMB2v8zHwbGAIkW8w4cIkrpOPraAEyavGoxVQBAAEGAHrPMKYO1i6mAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Niger',\n    code: '227',\n    iso: 'NE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RjI4OEFCRDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFCRTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGMjg4QUJCMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGMjg4QUJDMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+d5ixUwAAAKxJREFUeNpifBDExkAbwMRAMzBqNP2MZvz//z+NjGYhUt2HZV0/b1xmU9EUjKsi1uz/RIBnpWbXFRjuWDFcV2J4mqfz/+8fYnQRDusfl/Z92XuKw4CRRZKNU5/p68Er385spVI0/vvLAI8ORgYQ+98/6hjNoevEZ6v76/z//y9//Tz/j8dSmcvYk3opBKhkaj3DrSsMShoMOa1Exj0tEx/fRp3RjD5qNG4AEGAANauB5CbwRkAAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Nigeria',\n    code: '234',\n    iso: 'NG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RjI4OEFDMTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFDMjE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGMjg4QUJGMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGMjg4QUMwMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qCpo0QAAADBJREFUeNpiZGgPZMAN/leswyPL2BGER5aJgWZg1OhRo0eNHjV61OhRo2lnNECAAQBu1gQALTkVbAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Niue',\n    code: '683',\n    iso: 'NU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUQwRkFFMkIxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUQwRkFFMkExNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMERFNDlDRUIyNzJFMTE3MjI0MzM4RjQ4QTlENUY2QzEiIHN0UmVmOmRvY3VtZW50SUQ9IjBERTQ5Q0VCMjcyRTExNzIyNDMzOEY0OEE5RDVGNkMxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gBm+VQAAAyhJREFUeNq0U2tIk1EYfs/Z59znbbPZ5qU0nZp4qbRES41IMLooVn+meIkuNLtQGlhmhFj9iDAoyh8VlYRgJSVeEiSzmxgZeUMWbqNsOi9r07Xp9rnLSabkj5xp5MNzOJzDeR7e87znoJ8tje7RUXUjdMO1xkCRJ8eNHbxBmDCstLT2qtMT36qwVWtUDE66Ra3JovpC+FZ9Aq37oWBhDgCC+UHYbNP4WBDV1SxNrH+Wmp5WyQs7V1wDtnbxqaLdfk/gUcVXj5uSu1MwpKZZzve314Yci+odjaC1+UF+nfA3GI3ZuGwgAJWN1Z8or4p7JW/ayRWljkoZSAa4DIyZABYWxUxO3rCIT2/LrIuIzGhX9CpgEWCBK7Up1rdGJjkVI7B8kaav7x+SH9IBp3VPXU8DbK5ap/wYumpEYIpOyW9knn5u9t0WG7A2EKDbLncYiH0gpHv80KPtjdXMGV8ppPgarmK4xyn+okZGeXb7f08tW6MiwXyNwcBuH/UI8AaCLccrkb+S5dB31lo1kAdjOdnEvrLyQVsKxAtKISDj+nYFWZcUnKwGMO8H3VmYOTNN5h3bTJwIQY4J0xxUHqVMGQe0kfF9Cj0d4R0pDoGg94W84NyrfTEFbfdK072yrkBzE+Pr+5bn6mMyrFjBdREVs0EGC1VtDwsRXFRv5BcajgjETkdyWSpzm9yjevWuCpFcCbWBNHWLHwc5kpUT0KpiQhvDvC64dI6i37deyJqFscGGd2TG9oi/hd8tKcms3lLSX3mp2zkPu5eDeVx3klsWmtIm9Usq2mt95/3cVd+hMbIW7OFc4NRtiUgg/dBypjPjpf+IRQgg4/Jp+IThDqA0N/ARyt40hSf2557f+aBgg2Frl9ZtAhYHNNFx0MV6/wUdrelThQucGBsIRTyR+gd0D+uTRVI1sJipMY1RPqBJ2ZcSxGNs+tfABTxf1YTYQ0a26Wl4SAI6/eGZnv5B5GAfFngeNtusakgloYAgx9khWCIQmpNiQmA5QGwE/0Npi7NGeFmM7YlgWDYsozUFaGoxH3fpeTDUhCEc440WC///9ZNw6HGTKfSXAAMAWGmKZjQmfUsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'North Korea',\n    code: '850',\n    iso: 'KP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzJDQkU3MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzJDQkU3NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTcxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTcyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uqrYYwAAAdNJREFUeNrUVc9LVFEU/s69982bH82QzUjOiDjpNoSgraNIuGhR2apVG6GNJEJBLtxIiP4jA26CLCFwM/4KESlaWLTIhVIKJjX2Zkbfu+/d2xsJsnHz1N7Cs7hwDvd+97uc7zuXcGsa4QRDaCF4VIL0/wfWJLwDERbrxz1Jk5+gTf61gCvrq2H8SQOHv932NJULhSScfw4KgUoFW1+RvQrG8G0Hba1IJuG6waEtRMSv9U1P2cf6yrS1r2Q18eSZ6ClAK3dltTY1QSxKTVfgeQHRq8wU2qejIn9rnlI/tlMvXpr379ozs6hW45PPjb7ecn8/NyKIB22M9qEbSur7rjnwgF/LV4ZG5PwSlJJvV6KPBqMPB+1ikeVaz65rLS3RdZ2aLntfNuSn9/LzB3f9I11KiJs3tFc7l2WIxeTiMs+3x8dGCQaBx4aHeGeHLC34/T0XNGvJOaWSM/OaDCP9czdTs1hzxnkz57ya5S1tp9M1LEsfVwjnxMX+vTuJ8QmzOaNB7tq7ytMRIKalg8ODwJwdKnd3+7pGo64tbO8gna6ne3vIZZFKQbrBKdd1PXV71BQnhwhBa9hHrzFN0OnsWHejqym8oRrq5Ds0Lt5XECL0bwEGAHp0quOMFme/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Northern Mariana Islands',\n    code: '1-670',\n    iso: 'MP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUQwRkFFMzMxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUQwRkFFMzIxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNUVGNjQ4M0M4QUNDQjhENUNFRjMxODFCREQzNUFCMDMiIHN0UmVmOmRvY3VtZW50SUQ9IjVFRjY0ODNDOEFDQ0I4RDVDRUYzMTgxQkREMzVBQjAzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++R9VmgAAAxxJREFUeNrElV1IU2EYx5/3nG1nX7rtTOfH3PxqFplgH1pmRsaILvpSiYToA6qLIIhuveyioKKorhIyC8NEKkyCAkspjKJyRYZWOtfcMbe57Zx9n52zc5rV5cwZSM/NC8/D++Pl//yf50Vw5hksT2CwbCH5WxEBJAHiciDVJimjmqVzSEWc1LyjJeBmQRUGKQIB/QMaAceDqsCq/bE3fKmpkuQshY+mvA2qIIXxPUWHuiZNEPKBGkBMfx+HuiPpdWKFbMzQFps9T15u3C6Mq7YMSNb0fsfyDGTrqmBz5F5RYUF/yAxhFmRoKWgexySJjprkSfZqrL74uOdC+3MmOmorFvmnocp+OJCn4VqUQ7q8xifOJIhC2pYtgA4kju6oOCFe7AwKpwJnhx7PyIXxmy351Sb1tWH3yISuj9iKfC+aYw7aZP3o9IBMkplDBIQUWbv4Yczvvc7sHxudhYL49Ewov6pOX7XV6+YgN0HbHTeCzVPI14A7gCCW0EaklbM2r7+0zC23rNLOtB9dQ6oqSHMBCaKt4zAdiZy89dmFVgDOV2qHteQu2keDLJNXI0Csn9NUs+XH4lHPl4DyxjOnMUf3y4yYWa9uH3B+Cag4YHIte/32EohHUrpmJogIUqW+l7qNy+3bykvEJHa3j+qxzf4udr93d/fPiEhcX2R2Ibbz9VscV6fFpM/FI9hYQiOLfD29MRc8THZd8Z4Vsvtddx50dzWvVOhqjOCN7ysMrxbc+Q2bmUBwKeZjo1mGtY15aMfKxChR9uGtnXC+iHuogM/z1OYYnJA37a64UmVPZpWesxspigEFljFaipg5cTSmtsq/HaxgCb2JcjpK9QSB4yM0YW3cdLN2MsFxLYO6VyN+yCFAFDNGp4KAH17soUuxU0+1WuZcriDNy4I8vkEbbasPjrnYlsH8l58SoJcsNOlokaUalZYUa2pDA+uSjnJjYYryYXruo8zyRlrjnWZAgxbcIIujMQTh1NxLyrIpM07zIv5JMDIRHWARUGILYxddqvOTKYIydXB2MNiThj9JVWzeRuL/+wqWEf1TgAEAg8xMLtJFnKQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Norway',\n    code: '47',\n    iso: 'NO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0MzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0NDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlEMEZBRTM0MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjQyMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9564bgAAAchJREFUeNrslc9LG0EUxz872Wm226baJKKHSNNTwVbJQRC9xmsvvfgHePEmiH9Jj14KCgrtzUtBsIdcpLRioVINliIKkkMTxehisma3M/lBG9hoXUEP+mDZmfnOmy/v+97jGYcvB32CrFrFdxye/tzg7VqJ6ewMPLJY3nzHaydPaSSLSKVACMKY9ipz81YW3JLdPWKT8/NgRJ+3MMP4e67XvqpH123gIYvL9IrFYKRSwT89VSRe++ORCNRcvDMHtG9Y4vjWl2BEE9bU97CHXreg9ipCV5KqnsDgKMn9PFhRLUE44qWCFYxoSQ2B93Wdj6vr0NUFUcn8wgo/Rl4h0v1wpFPhhyI2sN4cq3/swltPbOjrBk+RHJTAqVy7j1Vx1S6/5nlNBfyG/P/jc1nEc5/3giNuSf1rl9XcNz4s5uCBZGpynMzwAOJZf7PqQ0ldNvxiB2KvWVy9z3n/aZOJ7KzKsc3G9hyZdFJJvqP20fZWu4rUpRfDF7ZT4uSAgqlybEiQEfblYzLf1/g9NIaIJ8O3k0gk6DidbLsudz36ltVUfiMSYdnUfcMSY5qdC6qF+f/kUa+1vFI28GuMxfvpdGPEsVvgjf0RYAA4FZnydWrl6wAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Oman',\n    code: '968',\n    iso: 'OM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0NzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0ODE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0NkU4RjQ1MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjQ2MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oZcAewAAAahJREFUeNrUlbtKA0EUhr/ZS7yu5iIWIoKN2FioYCPBS2NloRaKlY/hY/gSVhFUlGChWATEQhFLK61EEhW8JMRks+OZbDotLDYJHhhmlx32O2f+/8woPz11B/SitaZUhP44WDa8vkB3F5RKmkTSsveyPWYmonBkjPFVhpFRUPLmxgQs//c86BTwzRUCJOoQsPog1uFxew3La5LGOOgAHu7hICOJuLJERQ62CGpQqcDKOvT1w/QMLC6hh4ZhcyuEVqtNAJtiip8QF23nFtFeH/ryAnWahfwT2KK31YyKjZE6OuFoHyWVqcwuKncGs/OQOzfmEkHcyHV2CILQTOkF9OEemGF0TaZgdQMkEbPV+uRYvC+GQ0cCVn568h3b9erb+VxotJMVtlNC4DFJoiyuL+SpJxkR2Kn3UM0Xg/mhuUwYQDwBfjV0uDFYaiDqdmqE7fz8aoz123Mk5mpTOH/OULcaLPIqgaqiaB3o8FhtBdiqaiquYjvdw1u3Lb0etAas5EStyb2xMyEXRkqWl4IWbrVMg+818qbXy8H/dnVbwV67+vixHfBvAQYAQ9x1aPT3zwwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Pakistan',\n    code: '92',\n    iso: 'PK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0QjE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0QzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0NkU4RjQ5MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjRBMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+95KRfwAAAndJREFUeNrElj9IW1EUxn8vRqpNrS8xoKnW0qBQzOTgpHZQoXTp5OBUOogIlcbQTScHpVAdhEKGDI4OUsSp4CLS0rFdirqorTXSanxIbXwxMXm9793bJhUpSB72wOG+c+6f751zvnO5mmVZSeCW0GPOydSbKcZfjUMTbkqN0D2v+qBkvAqp8fCfxFPWzh+gmRqaV7sCYE3t2oHOe530dvRi/bTAUv6c0IxaW1DrXQG2d3yB/gf9zI3Msb67DnkFIEB1XSfoCaKlNKp8VXKubGD78H1oibSw8GyBmcUZkh9FU9xU8ycQrguzPLHM2OMxcpmcS8AFGVX8SdwxE+8SEEIefiZU9EhXSxftze0MdQ+Rt/LSf4F4LwWcBv9dP32RPrb2tiiYhWITVsgwEm8T1FbXsp3aplFvJJlJugBsQmtDazHtXpWFCmULzZ5lnRKcGCLvdcLn48J0ey5PaknTcChMW6gNjL9PyRfynGgCtEEYlbhUY0HSzf1NzKzpmLFHMaeX7Uz8OUlTgPZ4SpHxZQHfgNRWiqUPS445eH+Q4aFh+GzfvkKzimRp2XLNgWYC/oDs7bKAPbKeE4sTorQFxxUfiDP/cp6mtqYi6HWYfj5N9GEU49BwgVz27VQPG5826JnsYWV8xan5QMeAo0fmEZWeSnzXfKx9W6N7stvpbXS1t6ybyw70Nqy+X6V+pJ7Z1Vl2jB1nSq/WMXMm0ddRIk8jGN8NyWyr3Ih/R22T5Q4cHBww+mKUWChGIBggk82Q3k3LKBskGd25QErBbbb6ZRqtU4vDr4cyf3ZagyVrcBO49Adsuab0vJ9/Ax+r18fxVb0+bKxfAgwAbIbG6d67HZUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Palau',\n    code: '680',\n    iso: 'PW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDdFNkQ0RTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNDdFNkQ0RjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0N0U2RDRDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0N0U2RDREMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ffmgGQAAAhdJREFUeNrElc9rE1EQx+f92GR3ze7G2pi0sVKrJ5tLEVSE3kRD8eDRixcP6kVEEHrx4v/gpdCDB0EQxaMHBQNtb1FUMFpbwYrWxJhks5ts3J/PtwpSaLNhK8HhsYd5vM+b2e/MPDT3qALDMQxDMxqxh4Dxr+WnOr7KGBKJpdA2hoDxnX9BU+S2vZGanT8orc+kVijyq3Z+rVMQSW8s+dlndOAFtB/3mz0hIPfm1Hwx8yCf3OAc09WW28W7n268tY5Nye84PRqNtsvIU255o4zhhem5Qq4MNoAH4b8hACL8tKTLr5+86pyclD5E03eQMQDccPffPnylMFYGE8AJXSGaX2CCKPXuHD2fFhqGl45dIT+c3Cnt2ensY+juoCx3qqp+IbtQdSZiow0/fVwrgQDg9zkUwAntuYy7ASNx6xqptBUVTwB7hfoeYvgQG806nhadqu7uswIF982rD1oh7bI5G4pG+h56Ycx2/RRBMdGjiepSq7j0vQjy9nyAO3umfL92NZv4GltGHkuaNm99XFyrT4MCoZ7o9+JJKBA45Pr7h3VnXKPN2OiA4Uxik4+OS2+e3lu/1nQyYc9ScIJkafPcxZelFf3MIWl1N934t9d5Tzac7BG5MimvEuTV7AMVc4Zgfzy5wctulzOEm8cEleiqpOveyHLzLAMs4W5O/ELBGxjv4KH6J64UMfjaOgb+/1MwRPQvAQYAH8/QWrO3BXUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Palestine',\n    code: '970',\n    iso: 'PS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjQ3RTZENTMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjQ3RTZENTIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDdFNzEzNzU3NjNERjUyQjNBQTU3RjQ5QTU4OTk1RTciIHN0UmVmOmRvY3VtZW50SUQ9IjA3RTcxMzc1NzYzREY1MkIzQUE1N0Y0OUE1ODk5NUU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0ETvLAAAAYtJREFUeNq0lT1PAkEQht/Z2zvDHSCgiYbOwsrGvyCJhbGw0tbWCDQGEwtbC/+A/gBLeyu1ozBWGgsrGhI9SbRQlBC8G3fv8APouHUzuWQvm2dm3/lY1DJZSIF/WFadqGM7dWaEoWE2k83S3vUyEKZjb0uHlQPb2XEzsKRJ9LtGk6Y7TjmdhrCMo4WmS6eqlJGWSXQIEcR0x9ny0kaUIYV2P3uK3t9DebFO1tcmanuu/xQEgYGoY+vHPp3ny3NOtobRsSn6G/BweNDpdsfjhmE4LIiudFBU4UET8J5fCoX8OO3CPNwmqiNjbis7mbq5HY8b5YxGtY5qfHGZXxNKzXLQlba7HB3tFzPNY2o2OPrzRy7+Pjhwe4wcIDVBfrRm0um7n8JShXw3QCPhbIL8jZdxPYtSBe1cgEdgJglYgIUU3N9dFalUpQ8vgK9mbeJWhJoXekrzxRxWttFLMXzWJUJJJ7X6SJtxNi9WyxZI6RDqeImMPATydIE2NpU0EC1iy9IZ5uTPi772lwADAA1uTobZeCdSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Panama',\n    code: '507',\n    iso: 'PA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDdFNkQ1NjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFEODE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0N0U2RDU0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0N0U2RDU1MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IRlRqwAAAbFJREFUeNq8lksvA1EUx//3TqcPtCpSz5BYioUNESxJvGJBmlhZS3wCH8CChYhY+QhsfQQJCemiC+xKUDSNKtOhNXPnOvWKhZFcOj3JyZ3JzcnvvO65l0kp0wDaSA0oiFMwcdo9BesqDS0aVTENk177Pj7wba2GhLnbjiTNmTaEIz0hu4ILRYHl3UtkDevLEc/BRxcmxjdOsL5zjunNU+yfFcCqAe7vrEV7OcTDLJop1UNddRVPtc9tY3S4CTMjrSiUBCQ5wVgVwJaQmB+IIeTnKFoObIpa15j34DLkExTUuWvbi4cH2MgDeXWnfM8Ukapo5IxlUxZaYpQeG1pDvTq4YymhbJR7EuiM6kjubaOeVkH/yuC722f1AtHZzllB8EgECGjQAn+pcVhXtyq3eB3Z/VJakX+EFqZjqHG1yfVnoaZzDBOZ1S3Y2Tu4jb2Kg58Sx0hNL+BmZQ2p2UWYB8kfM1NxcE1fD1hrCPfIgDUFUDvYqza5/iMNY5NojMfpzqbGLd9unHkPli8WonMT4KEgnGIJUthgXPcezPw6lfQdxIOBX0em8fH6MFAdeWO9CjAAKGmKMiin+isAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Papua New Guinea',\n    code: '675',\n    iso: 'PG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3RkFEQjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFEQzE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUQ5MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQURBMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A8tj8QAAA/9JREFUeNqcVUtoXGUU/u5z5t7x9s5MpjNgbLEzNYyEJkwqCBJTG5AiLUJXCbgRpBBSQrPpQhSSjeuARVG0rq24UOJCu5AuJAsfCRFja5OGpLE2tslknjdzn7/n3ljJZGbMJAd+uPd/fed83znn5wCwrBDCp9oxvCipWHBqcGiSx8GNEwB7gwNHh8U4A3Nb7/XvL99xTZwpLOF6LY9uMYwY3eCAHQyUbrIINNzpQe1x4Brc/20v/xeY79xI+U+MVh5AJ+A0sdAuuB+ZU+YgdjBkvysift6CYVD4/nGudcR19sn2Jl4rLuO+a6FXUII5ryXiDr28DFQsCUdesCF1m3CK5AQtOiUOrXxvKuVPjoGXifobZgG9RL1GPDZE799JU8aGgPAJF+lLFYSf88DWJCTfMJH7IQ+1y4W5JQQyNEhDo0RDaxXUmKjjvehxGMzDqmdBesIdgVoFAR2vmtDOWtBOOVBPu3D/5iDotPisi+2bMhYu6gFlgsqaa7zXRFHE0+kTuMaV8DpRv+k56BHCAe3+FWaBR+J8DSdv5pF6uwy124X3iAP5B2bRhg0eyrkaOscMWCbfQHlL4KGhITy4t4yxy1dwy64G1H9rlZEj6hWKmoUYBI0h/5mKtdEoqr+K4LMuhCiDuSZg68sQaj/K4DhigFDZHmCxFfDi4iLm5+dx9/bt4D9PqXuxtIJJNYWrahJR3cXKFzLWP1dgkf/F701kuxyIzzvgH/O4O6rh6AUTCO0g8gLqwPfVuJldkI/gmtaJDvL7jmNC5Hy9eYRiHrQzNtLvV7B6NYK/bijIvFPBw+sKvAqBSW1ovNdCoRAEQQi+v7FKeKVwD7+4BvpkBSLv17ALe4vD+lcKFgajMB8KiPdbCFGSKWkXToVvrnEkEsHk5CSmpqaQSqXqNvn/c3NzmJmZQSwWC+ZWqc7PEvgH2xvwW26ckWoUsRpzUF2izkdOiJTJhVsypKNeQznXuTEyMoLx8XHIsly3ybIs0oeB5/nge7ddoU53iTpehIr1JL/T7STdg7nCw/iD0opkri6IEBXWuo4zmQwSiQRmZ2dh23bLMnMcp2G+V1Tw8VPP4LSk4DebHhrCUY97sB9zsDd5iHrdo1HeN7kGBwcDGaanp/fPAyqdDwn8zXAcy/TwbBoeJIFeKz+zGdprIE9M13Ukk8m2EtAkOd4qr2Gc6O/gRGQiEhzZa9qvD1VO7dhLUgQfUfRdlHi/u7Wg4/HtRJzL5TAxMYH+/v5DAc9QtxsoLuFrq4ge0t9PPndX6C2B+/r6gvIaGBg4dNQFz8VQaRXvVtdxjJfQScPeBV76t+/XDU3T2PDwMKMsZ83WDzrOyRpbjGdZNXGK/RzrKv0jwACqn6gx8GMIaAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Paraguay',\n    code: '595',\n    iso: 'PY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3RkFERjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFFMDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUREMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQURFMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8tTVLQAAAOtJREFUeNpiPCeo9p9hAAATwwCBUYtHLaYZYPzz+csnIM1LtEsZGRj+cHMzfL10ieHn928MAmYWDOxA+u8/knLlZxZmHm6SXPoXiJ8d3s7w/OAJBl5uPobv314yyDj6M7DQPKhfvmQ4MLebYfqfNwyb5UQYLqxbwvDz6jXax/G/X78Z2L7yMjAKcDPc+v6I4ddbUHyRXvgx/v//n6Q4BoFPGzYy3Nm7k+Hn/98MqrZODCLhkaTa+5nx09dfJCYuJoafnMwMXw5fYGD8/ZeBy8mYgePHP4Z///6SZjGDxYrRSmLU4lGLqQIAAgwAPdxSxGn7ZuUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Peru',\n    code: '51',\n    iso: 'PE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3QjRGQkQxQTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3QjRGQkQxQjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUUxMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQUUyMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b8OOOwAAAGlJREFUeNpiPMPA8JSBgUEKiD8zYAF/gJiNi4tB7/FjBmYhIQZ84N+PHwyXZWUZvr95w8CKWxkvED9jgTIYkGh6AF4mhgECoxaPWjxq8ajFoxaPWjxq8cBbzAJt8vDiavrQovUBsgsgwABVWxD3afjyOwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Philippines',\n    code: '63',\n    iso: 'PH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3QjRGQkQxRTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3QjRGQkQxRjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdCNEZCRDFDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdCNEZCRDFEMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RLn3GgAAAxpJREFUeNq0VUtME1EUPTOt0JYpnwJCVBQh0agLZWsgMXErGze60R0uNDGiK6IICiqkAgFjRFjgl5AQDX5CMEDih0QSNBiDIJRfpOVTSqG00EKZ97ydwWKEhXx6k5np3PfmnXPP/VRo+Dhmy7k7YOz50APEi0CiEZAZwBFSEzgZYEfZEzvy7vfB3T0OpEQBxm1EIHToInw/3ehPQ/ZZD3rfncS5S2mAZxHocarAGiFEEfsnZ5mr2Sga04GwJMXZ0TWF/IpvaGwYIB/JvydSlZ7zLZV6lp7GtRbrGodxvbwTlnaSP8GgXksshMDcTyvawLLyWlTVhYKH3zFvmQFSKf8Rm8//CjCbp4wbFCcbuQDoj0CMywputE16ca3kKx7V9VEN+FUCWkoD4xssrj9BLgxB7s0A99HBsosoieDOWrCh04FV7IzXo6YoHZ9fZeJ4Ziow6AFG3HQCqSIIm5OaT5jBHNUETAcKeiB8N8Qd+RCkY6s+rG2WcbX4DYY7xqj94oFI2i/L6wT2WYzMUakIwO0l5A2nIvIB0mGIUSfAtTEQt2cvC0TSOosBkwcMhShr9cJc0MScjikmSvr/Dl2rRApZjRKBitWo0gWO4Ax8yakS+dvkOboZFBpXlt4iw1rMZ20urpGkDUo9eQ9sopTwvQonQZcKMalcKbR/baalG7aci3B9aUWcGA1dVCT4uqUmYO7tBhs+A01yDZidwKSjJDcV2VwbxJSXwQ98vRZYc+/AXv9UEUUXnaoWGF9ff2uDDMJ2QbP/03JLMQhsEULCZfp9Xm2xOS+seYWYqKjCot8BfcReiDod4ckbmmhrDxCZBoVGCvKyVz/GaKEZnl8/oBMToY0xEeDSpgaIdk2vJlp5uJpaYLtRjOn2FtooQYo9SMHJmwZVgf2jlNNKCKZT1LqH1Dz2D8KWfxv25zXKuyFqH5ERtwRwBZjNQVh4TaBZYD4G280CjJc+wOLCBPSGZIh6/XIe2Rb/LXK1MhzPXsCWdwvuwU7ohARoTbFbGuGqiN1tHaPWXLNx+n09jQ4DJNMBGigspKAB+y3AAHmPY4VHbneXAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Pitcairn',\n    code: '64',\n    iso: 'PN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0I0RkJEMjMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0I0RkJEMjIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDAxQ0NCOTM1MjkzODNFQzU2REU1MTU0ODY4MzQwMkMiIHN0UmVmOmRvY3VtZW50SUQ9IjAwMUNDQjkzNTI5MzgzRUM1NkRFNTE1NDg2ODM0MDJDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Q37dSAAABJRJREFUeNqsVGtMU2cYfs/p15bTy2lLKQUL46ZcHBlIXbEo6hwE2QZ/lhFcFsMuWWK2OTez6eIyl2X3zR8z8bIoW+YSF9wCGeiUjdFNRRJH8YroqEIr0AKFXml7ei7fTlGj/Jibxuff9+XNk+d9n+d9Cd8JmzaFHllY8t33f7oHXabMtIoSQ6HHEdWl2nnlhcHJgFpnlseqmLGMesvvw1y/3amh5XBXROI4P0OJdrUMkCf7N766siAgbXWT579oebFp6f7er4Yrqt6asF7/pXttBrO+4RFUuODzA1ff/7ov6nCDmro7NYTCL2woQyP5pc0OOtIb2FqT3thk7fzomYBn6lr7jrjG+M4667I1kSWNyx1S07tdUz+1n4yyDJh0IEXzmQgAPO8ZFSS0ihj97Etiz8GxtFzExpDTubi6JBbhLnbaZZkpi42qqAT5MvLGTg+ohFhpjrp+orAjaAQUu80jkMDLgOQBxQETNz9HQy+/YSYxoFnMeZ3XWI2Srlnpd3pCvhDISJJlpcVF4TiesPViUxqj13AYGIIUyQBh8FMwrQaxTj0t154xcJOIwBCXQpgGjIBINIG2+TMOlG3ZvbWqtpCDK0PNnS65dcljTQ2B6scPfvLpCta/LDzc3372wzOsTWryey8B64W4urLSiaQx29FSbb5v1cNUkk/dZqc4SUS7aCToNQiYFPWTT5Sn/7FWtcF94ueNuy2Nh17afu744XOmDEk2JWxqaM4p372tbeahTH1rrWpPuCct6geSAg5bF81kF9shdXCBlqlbFWAMPl4Oe7f0VK7oERg/sErAGOn4+K/fdG2a4s5CFgRJ0ET/GvK/HTIHLyEQYnB94uPNLTvXmJ+vy7XoUgwSj4enZMmRFqcriiSg9utkKveoZ4S5UL3cUmMJa/9W9+nk7mEBE1gioyt3dox5KCPgKKgJQiWbHJrugWz7OBf1emGBGpLp+MjU6bZzbQ48JVeClAdM+mK8CuSvr55dmtvrHqx7rmrq2NBo8+GyJ82xI71ZITdeWmkgJfokkEiAEkBGiA5hDgsaOaAgiCapKGAx8AJokiDPAHrRc060kffJFkuz9j09Ubga2+hXYjnEt2PvaYrMPsn5+s0Lx90qoHgxjuRcIolb8bwjm/jOsN543MovoyooP2UL2Ndvf63PtaG2fuAKm3Zx/M2mErRvx2HLo1chqhCLyXmE/xN09LducySYWmAO1uR/IHinny3ZFQk6HTFmxptz+XKmuOoiNYL7gIRhQroieYXCcMQb7jrUF9fn9ZlJoq27oONoMhemQBEU2yNvdE/8F25PSoRCYL2K/a1F3tGAy6W1LmMuXDSaaOdTBQbOsxCUs4kVFVcGJ2Yo3JtqHkNyZJwRMidyBpzFqYrj9mMV6aUzWB5ObPxN88SlnHMIYzz/xPwr5ipFSdxMmDp6ihZz9ePOdaCd/eGInkQCke7HrMgpiEUoEZLEWPC9CRcvEeKBToQMjLGEyiSRjwCR9xYVeUew7g/E3DGaoyPm6UNCgAEuAC4EDxCsTwhEUEl5+qqwxZisfIDM0wGmuNT0jwADAIjDExM8WLDuAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Poland',\n    code: '48',\n    iso: 'PL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODVEM0U5RjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODVEM0VBMDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdCNEZCRDI0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI4NUQzRTlFMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2uLYNgAAACtJREFUeNpi/P//PwNtABMDzcCo0aNGD0ejWe6K2o4GyKjRo0YPBqMBAgwACfQEVtJhm9QAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Portugal',\n    code: '351',\n    iso: 'PT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODVEM0VBMzE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODVEM0VBNDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NUQzRUExMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI4NUQzRUEyMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bRhArwAAAq9JREFUeNrElslPU1EUxn9voo+W2jIUKjiEIYpaNQRMVDYuHBIT3JqwIU5/gDsS18SlJG78A3TDBldiDEFNZHDHQjTBGMCWUQZpSynv9b3rrcXEBaCFoie5ue++m5fvne98Z1C43TwNVMuVYCczVHxph6GRZQ7JfUWed2l+uWb0zQd+2/+F+VX+k/09sADF1lDSKoorz8p+Aisit8c9IMEqA+vYNRaOoqDO6rnrXXKm7wiakdcplabILL4qm9MVKcpr1/g+6UGT8lAGAihBcEw3x0JhPJZcxlXaIws8OqtTM1DJen8Ja699JN9W8aWjjOTdNcSyQHUKSfWSSdu5aZ51zLHWB92jLl1OA/FjTaD5SfRpJG9tkLyxLL038o65vp2QMFxawkkocWkcmCHc1cPgtevYNpxv60drv4lDEC20RCYsXzr5xXtrYEcjUJYiXJzm8fMQja3fiFlTDL5bRQgX24qiX7IJWbDRso4ynMEbK8LxunukWmQLlYumC17NBfGO+ilfMLA8DrbpYEYNDk95SJQI+SOSZXWTpT3HWHdZTJm8j5aSCWaIJi1OuaNcbS3jSmsFJ+0xVsqS1N6LY370YUwbUtmiADHOplLCZHG1mCdtn+h+0MDxF0+50DtPrKSYNwdeEu4sRzszjZ6sQIlJcTVYeXm9fR4H0/SOhTkaSHG5+SsP6yLULw9zZzLFichBMtZnJu/7CfYcQK2zcfOkWpHdKb5lg8h6LUskaYOLdYsUSbHVR1J0Tkilj3iwl7yYg/Izv/NTVHkWkMT2HguZmIbMEU0wNB6S9TLNUixF/EMxR6IqiRkPojKDMETeVWtnqn+BZz0vTctarTEx78cYt9CQ1FbbuZi6+9mdRI56YUoPfQ5CspBv+uy+LRbY9M2Rx//H0aeA00cW64cAAwDqlwCQvzogDAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Puerto Rico',\n    code: '1-787, 1-939',\n    iso: 'PR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjg1RDNFQTgxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjg1RDNFQTcxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOTc1NDI0M0UxMTY0OUU1MTE4RDY2RTdCMTg3MDk0QkQiIHN0UmVmOmRvY3VtZW50SUQ9Ijk3NTQyNDNFMTE2NDlFNTExOEQ2NkU3QjE4NzA5NEJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+giI5EAAAAmdJREFUeNqslU1oE1EQx2d2Nx9NyKE9tLb42WNFW8SP2mJPUigKCl4EIyhetD2kJgQrgopoRCliFUE8eyh4sBXFgwcvSig9CS0UayqpFcGmSUiyyTa7mfHtpmnwtmQz/GG/3vvNvJl5b3G/Mv+Axkfg6y+AFIEMiNAckxbp8Fn4ElZimuTrQYFmQmRoAl/ESIwmchck7mLoPH3IVGANTDY7RAuChBVAInaBBGf4dbR9cqBvPZF0qyo7RNP/jxDYAQ9vp8eueQA8xFKFqg4acUOWRHoNgE0LYWpgmL/9YCdWR6NIC2gApS1PpvITNzbUYoHZaACNNZCZDb+/HAppsZhIhWJJvDd279FfTBmnh5aAlBLtRERJlJ3tlVHUsLNTLxakvkP650+wr5vVkiI+pDbclm+B0U4FPk5wtJdWVthbRkWywa7OpCPH85OP4UCPr7UN11PleFyLRtzfl32i8a1loaXCFbgfgUeiIGUbNVQsPs/HfcELajIpZvk1lS9fktNpL4oPpmOpNtgL4JJrfmyhLQC2tXozmc3ZGbW/nxRZxCtzfVnGyZb3t4zxo7S6BIoOKNvcMtbVGB3N/vntejvTEryo5nLud7P+amt2dRWfPTXODS5AhYu8V5JQst3kVvMhWQk0qjFa9zqAej2czec0ZnLS19u9vKXBYX1uQW/SljFjFzlnXwe/fJVlLldHVExRA8IaV3SwOKthBKdvtk+dOPY38dNTLFacnIC1mQp04No9CAfpjThUV7fPKgemmAAZrsKTMbrTzYVlFhVEd1P+MgeVuWl56DlHAlRYJNS5vkMc2j8BBgDaEDAtyJBdYwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Qatar',\n    code: '974',\n    iso: 'QA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0NFMTgzRTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGN0NFMTgzRjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3Q0UxODNDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3Q0UxODNEMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iEFoawAAAcBJREFUeNq8Vs0vA0Ecfbs7uy1toyIiIvFxIiTiIOFIxN3VwdUf4eLiRBwcfJYEoU1VNUpCGjS+Qor0UPER0lJNQxUJJYLumm45UEezv8wmM3uYt+/93rxZTlGUR3wVnSN0cIjI8Tn8i16cbO5BEAl4QcB/F6GP6XvBcRxKaipTExx5d9UPoYNJkd8vfLNL8AxOI34ZhZSlBytkTlEyd36IxrAybIV3zKECE53EnvH6uBMLPRbEw1GY8sxqfxUGrP9k/Jp4gaOzD1tTLhBJUg3GnPHKkA1b1nncXkQg6nTgiaBNj18Tz7g+u8Ta2Ax8zmUIhGjD+GzHD9+cB8H9AAUUwfM8E8YZu2bnmFBYXob80qJ0qMiyNsDGvFyYC/KhM2SnUEEjRJsAuQqcYtvmpn2+AEdl5rSSuralGW29HahsqMPH2zvkjyR7xnJShmdgCpuTLtwEw9AbDenjpFWAJO4eMNfVTyVfAKHO1uQ4rY3a4e4ewWPsHgazSdvIjFGZVy12bEy4qLk4Gpsie8YpebetbtyGIvRWEsGqMlxd1ViPpvZWFFdXqK5WkjIzVz/9dHYSol5SfwLU1BLYXBKfAgwAZJi4vg1/oSQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Republic of the Congo',\n    code: '242',\n    iso: 'CG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGOTJFRENBNjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGOTJFRENBNzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MkVEQ0E0MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY5MkVEQ0E1MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aVFAGwAAAdJJREFUeNqklttOwkAQhv+2W0CTBuMNwlMIJirXvpByeAopXvl42kRQ8QajjRoVus70gKW03VI22RuW8GW+mfmDhtuLRwAtui7KHI3ugu6bh8GJietjE/iWWMjE9zwJbc+A0apZ89HkSdBHVvhklYa+S/QZekrQD4J64Vscuk/QZg2v4wleho6lo+xZQT302gKjc4J+SfwucqD2BM99B6JRgb6r3l7bhN2t+JX+/tCTlqKXoHOGDu5hMvRAQOyit9chKFf64aVDV3qnmA0cmEdVGHUBuZRbVhzTe0V67S5BP2U+1NcbVBpB+ejlempi3DWz9e6n642gxcEx6ID1KqF7PnTGUNLLUCzX90vfTi+tzLm6Un9luKcNgtY3oWpwAlpYb/8uWJmDdGg+OAbtbwGNpjcPykcoE6lToXAQaujIT6RgkOr50PSKY5Ve+omUBcUqHLins+G9Um82OLEyN7l6dQ78sKfF9KaDE3rtIj0dRdNbTO8meCPw1XoZOhs6W+ldByf02kq9YTgMORzKQYOpjgK/zXoLTK/9oAyHYhW7Mgz8DCj9rlalSptVzMfBnpbVu1Yx9dS1z0yLoO4GlI+hwTgUVOn0P3vrO0H5n477J8AA8FlP8fwgsDwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Reunion',\n    code: '262',\n    iso: 'RE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjdDRTE4NDMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjdDRTE4NDIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOTg3RkEzNzQyMTUxRDFERTcyRTlFRDRFRjVGM0VEQzQiIHN0UmVmOmRvY3VtZW50SUQ9Ijk4N0ZBMzc0MjE1MUQxREU3MkU5RUQ0RUY1RjNFREM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+w8A3BwAAA3NJREFUeNqUVV2MU0UUPmfu9La9LWv/KIsFQUB0FQk/0aBxNwFMDLAqkZiYrFljoglBFwOa+CZISHzyQQk+aDA+uEB4ImRFRQgQXH9YeABlN0tWYZdtC5GWdtvt7f2ZM87dTQjSgu1J7n2Yc+abc77znRl8ctXedLb07devrluzoPDOe5EvPj/49KZ/no/0xPqEGS25MxAJQUJzpnYQu2tB/csU2PrXWx9c7da4EwncwGkPYKOo0vtwJrBaX4xPAJ/89NqmjuGtWTveYlzj6ErZGDqB9AOLSzFC7O5CAITUQLPCxtiZW8vaBneeya00gtmQVhb/C02SKf4MsPtdcYhY/SCJyhE30kWXd1z+cNdYF/eXovpNqU4F9IxcmMzDZA6FDV6sVxPGGXPROey6JwgMZPfKQE4lkdCLPl9xx9jLG4a3F5wZD4QynBznxogo5yC5CGa1OZUJygwhmtosTY5Jc78th4DHOOiS379EIVkLqziGdTS34olqqnf2lx10TrR3a8+97Us9zhRx1y+JgYNwap/zR1mcj0qLMIGSpEqNN9AYZEjRcCZTmbm6v+vXndtWvdB522vMXgIv7S6yJfbGzdqDQYzqasO0sQb1hMQhd3Xdi4/diXubunDna/73eyg7OiWkZqCV2a6AgG/b+vl1x8Nr7iudMhbXqnbT0KZF0Zj/0VSw/uwpZhY9ore2ulalaWhEECRduk9PhCDh6bIpaAQ0gmwiLS8MWnVlqkw7e0H7e1SGQoTNQEskvZSAQPWT0a8ArFo68gAHhvqCFTtR5sRYY9DqolGxuaSVzPA3jw3o+14//Vlt1I6ze7rm/rxx97NVHyXTthpElTu/NwnqXELTYFWjuvR8pf04BUzML+sd7v09P/jR8jdWRhcrYfxZvLLr4v6L4/0Qm/vD2vDiefqRvZnll8rlVp3XH3JUx6K/EEfmTKz9vrp0AMwA5uOqCBZZOFK43P3TdjCSXqR5EzQdYw97lF8xx1OBFR8/tOeb6+/23eJ1WqISlj6ej1MiXVpz1J4zDsUIupoaGy9CCjSSUhKQ7YWGU4iaWp1mF7OOjLKeLanfFoZ5jRYAHA6FFqftl1L7jyJUxlxi6l4Td9zX0tOY5v+vRqaFAlqBqAK9G2I1WUtgarieOTn51HdQ9Xm4TDT1ygilDIfYqPWvAAMACcVzuqlUzzkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Romania',\n    code: '40',\n    iso: 'RO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0NFMTg0NjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGODE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3Q0UxODQ0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3Q0UxODQ1MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vo6AZQAAADBJREFUeNpiZNCuZ8AN/iybjkf2koMAHlkmBpqBUaNHjR41etToUaNHjaad0QABBgCcdAQtf60IKgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Russia',\n    code: '7',\n    iso: 'RU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGQjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGQzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0Y5MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZBMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9CATwAAAEhJREFUeNpi/P///1MGBgYpIP7MQB/AC8TPWKAMBiSaLpYzMQwQGLWYboCRgeH//9GgHrV41GKqZCdgXhrNTqMWj1pMFQAQYAD5egotBoZoiQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Rwanda',\n    code: '250',\n    iso: 'RW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGRjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDQwMDE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0ZEMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZFMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2RPnbwAAAbJJREFUeNrEVstKw0AUPZNMm0QN1hZq8QE+FoILdSeCoHt3bty680f6B/6BH6AbN4Lg1iqC4EZRQcH6wNLGvmxeM96OFdzoKmlOuJnkznDPzL3nwjAUS2UAY2QNRAZJpkGTKWWM/rtPwHyABTZNPnN62b3VdnTEOnHrGNQbWDAfkNXquHKn8eAVyJ8ics/miAMiDZtXsZPbx2bmhLYR4s6dwG5lC6etJUUePbGkkExgfegC29lD5LiDtjAxazzRaOHGnULNz1MhIiemNFMtF61bCAof0kZmzBc0wwFMpt+Q0x1axGIgZlIN9944BRfgLMBjZxSDWgfvQQYdaaj5GIhJucLAUWMFBx9rqATD+KRUn7XnsVfbwJNf6IqLzlws1aNVdO88lPIREtiydY08r+H8cw7XVF+pVO02ODw7BllL1VKOO4zj1qzqY9H1kuhURmCAD1gV8dME0dMTpdSUmHQiNb4pug7BXi9navSRIQvRH5Ds4fBRu6z/cvQLOveoDkmApw0/GeJqy4xNXH/3GgSfPliVv3qgX5C83rSSERcSqrGGhMB7Vx472qvPv1BcXwIMAIuEkzMvcwIMAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Saint Helena',\n    code: '290',\n    iso: 'SH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzUxRjY5MzExNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzUxRjY5MzAxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQjhGRTA5QUQ4QjRBNEYyMzI0MkY0NERCMDRFREYzQ0YiIHN0UmVmOmRvY3VtZW50SUQ9IkI4RkUwOUFEOEI0QTRGMjMyNDJGNDREQjA0RURGM0NGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bql65wAAAzxJREFUeNrsk1tIFGEUx8+3s7dZXWlHV921NFJLlCJMKrx0U2rdxC5GEfWWGERSUPSQRagVvnQheolACtSkMjQfTExDhcpiJUTLLrZe1zX35u6669x2mhldC32RpJfoMAzffPOd3/mfy4d+XC7VGrOeDitLH7zvbXoJoKkr232wsaIp+6Sx4htg1Bqd9GxKoPhQgle3Tl/U4rHYEShhCYbd7tA5W98UJmGnjImxWalfphWb9fjGvs7upEyTDc4lue8fX5uxI/mmI/pY9Yj9wyeRi5aCRkcLH8qjNUZ9IJ8dVRYYQBdvbnzlPrBXVfVYExsVMTkIBkPLd6rqboNjyNb8wsywFIBU9OU44S0RIwVgUUDEZe8Ekhl30WM+4ByOiDAl6aOcJKtGAYVaSUbHUBZrBFCxa8MpCR7ZGTfFKBAwAhhYgBU8QS7zUrRapLtF+lwIqSk8aXzcRqq5jQVblS57qM3i5eT2R43hh/fqUhP7W99DlLaHWDkwOYIUOIMwmOMiTIJfutKXscXjcam0uon29piysniaoea1I9BfyDi+reREem6MH168rrQo1iVGrzmWZ75R6dlj3EP4oKP1eZv5+iesa1IKr7uRoA7jQBoSins9N3hEU50+t8DCLwhNsdPFE8k51bXlOUfiJfD2SU11151+rMtKNJen6DYQXwfMBv3pzLz480dT9+2Ky08YvVf/9YyKJn1yURepQHR779UQQuXCLZ19GKvUYNIRAH+wE4AdTN7eVFFzsc1762PImN0LbECKocF+RxupNQ1Rw5+7a5/1tKMEf5iW+TzQ8n2aCcyiJSwdWGU1ObnsmdVnx+mcgdHMjkfPSWoagSJYENgPEAXA9x0hkAGwHMzwyQE4EcgBZGK7bOIkRIoO7GytASJKsq4R6fAxvD50onVqiKypV1PMFBJOiqoBtokOWHCL9xEC8HmJOxwSQoYAqMQ1F2ySsPAECHna+oYwjZW1mxps026ZqC94ZRBsWjiPwWfx5m+fPMJndRPDjrTI9CjbW9z+zg1AI0Fr8AyCIvhTE1OgccD8Qg3x2Szn/0pgGSbmIfMLhVrIhflBWR4d+5XDbyaBv2b/0f8E+qcAAwB+l0HjpzOhQgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Saint Kitts and Nevis',\n    code: '1-869',\n    iso: 'KN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzUxRjY5MzUxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzUxRjY5MzQxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQ0ExRTQ3OThCOEZFNzE1NzlBNEFEMTBGOTU1MEQ0QkEiIHN0UmVmOmRvY3VtZW50SUQ9IkNBMUU0Nzk4QjhGRTcxNTc5QTRBRDEwRjk1NTBENEJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xg9gqQAAA/lJREFUeNqcVXtsU1UYP+fe03vX23v73EOnEgWWbUpwEFcSJQooooCEaNDAZkKs8mjCgAjGkMEY+AcdoJskYxAjc8FNIYEoWaTRTEMgmcNkKS5sMnoHbZmk7drdzrbr497jadctc2ug+CX35Nyc3/nle/y+78DV3370D4ggQIFHMAgBoCBOJKm/glxlhbxv0d99re7PjiUhk2RRBoQc4VtBGFYBFQA4V2ICpWRplIN6qmb96GKXeHi91Nk1E4byaS1F0YzC5kBNOAEN8WgUeWOqjStDWwo8vY2evV9EvPEsaDR156FGQTkuQ2eQe+5Z+eQyT+wHp9Ua6JeyYzNfLhmgIRRDyE+zR6q9p+f22t+7/rG1SIyXFhUazWbzLGZ04JTwcGpE4cC46laAffvleNeGgafP976z6N7pTpA/B4mDXTf7Bw0GwzQ4vXA1c8PH1j+jRQ/wlOggoUDnfXX5gnjba25T9926pcHLDhoAhQC2bt1S/EQx2SwxL7Hb7WTDFOU1tLE7F/LSh+pLF1Uoa60gkQAEosTILPrc4l2bFM9u9x5qldOAFK9Op7PZbGTl1Oz3310FwPR6zcjZw7qCdvXVNZpAktKC2GxqBVGKL8IGwszGV6V9C9zuDs+6vdEBH5yUUGqV0lZ3wOYbHh9jnWeucJsNT91dxl/ohQJICGnQf6hpCGIKdnrV5fOT595yPn7DXb8idO7aBN1saSJxaKDqEP21pZA5qv25kY0BxQRkDDBOh44ms4AhhLeDeTAveXTzSDU3dGbXcG0zVFKM1ESXTK8CCa7sTfqrRv6lPr6vXHM7BLUgoQFYyZxO6pqGyug44w8xG1b4G8yu4YuudXuE66IJgBGTyRSJRKLR6DRnMZ1P1X6pry3TSjvZzssqBii6dAFm9AdKytQdLz9vbvxHqzjP5flkpfTNL8TB0PHjDURVDoejqalp8lpKqcu3MydrhNLz2u5NjA9gPkU6ka6ZfYe8CdWR913biu/8ZAu8sZ8KJVKBm80vWCwWIoCWlpYpZ4VSVcMxbhurvfeu+sKfgHgqAAVnSLP0M/rtg0Hlj5urXsG/O8lvZhYYjcaenp6Kiucj0fHHCsrv+/qrDnK2VYaiU/yvrSgKFCNIklrhBw4JuGOT8UR7IJ10gpSnDiorzSXzy9o72uYs1zTXc2v6+b7drBgh5SKeKrmMHajTGSUpkH3E6OndB1V1JfqkTei+QjNAJhVTcptl6QlB4dkdTrS1uBqcqBJetBd274J+APh0QLnzpqgxnkGNuSfp/Z9q9rCC38pdGiIaiGtBBgQf5SlCPM+PjY2p1WpyOxzGS9eyzTv0JR2aa62MBBSNgGWcJ4P/Y/8KMAA88JPiKZPG5QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Saint Lucia',\n    code: '1-758',\n    iso: 'LC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NTFGNjkzODE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NTFGNjkzOTE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc1MUY2OTM2MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc1MUY2OTM3MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RRKY5AAAAg9JREFUeNpi5A5cyEAbwMRAM0Cs0UwsTN++/fr29SeQQaQWFmIUMTIw/Pj0Q1FaAMh+9OQDBw/b//9UcvV/JsbfD95OzHGcV+r+5+Hb/yC7qGT092+/xMx12d9d5nh3Ud7e6PuXH9QxmpGR8d/zT+lh1stndk5oLcsIsfj38gtQkApG/waGq4ioFvfrAwf279hzXJHpMbOc7K+//yg1Gui2n68/+/pbMzw9cv/1zw+/GP48OhAZaPnr5SeC7mYiGIEMX/6FmQiuWbKclZGBh5Vh0bwlvjocDH9Y/hEym4DR37/+VHUw+vnw4todu06s5jq/jXfXkeMvLp7QcTH+/vkH+UYzASPwxedQe60tK9bFOTIYBQupuPDn+DHsXLs+xErt/6svTEyMZBr9698/Jmmpb/efmkuvWbiE/f+t3/+v/548l8NZY/O3e0/YFeR//vlLjtGgCHzzUc/QMdLkUkH4MwYmgb9f///98Z/ht0BG4Ksw4+Omxk6/Xn7EE+A4M/pfYJr7IV5ifdHMtpThFdCeVyzi4Nz9h4FLk8FYtLz0t9SRzTJ//+IMFpxG//nLyCbF9+3Vyh3b2f5+c2L4j5yQmZg573/+tJJTJuL3r2/sTNgLFEY85TUT858vn5kZfggxsGBo/sPEwPGOl/f3379swCRKcsn37y8LFxcDA9d7nIH2lxWXuYOjKiADAAQYACDo1+pXfbuqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Saint Pierre and Miquelon',\n    code: '508',\n    iso: 'PM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE1QjFENUMxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE1QjFENUIxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRTZGREUxMUI1NDA0MDcyNDExMDA2MDlERjhFMDQ1RTMiIHN0UmVmOmRvY3VtZW50SUQ9IkU2RkRFMTFCNTQwNDA3MjQxMTAwNjA5REY4RTA0NUUzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vSLwPQAABrFJREFUeNokUwlQlEcWfv0fczuHM9wMOMMhoKAc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'\n  },\n  {\n    country: 'Saint Vincent and the Grenadines',\n    code: '1-784',\n    iso: 'VC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE1QjFENjAxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE1QjFENUYxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMzVDMjYxQ0FGM0Y5RUZGMzgyRDc3QzgwMjZFRDA0OUMiIHN0UmVmOmRvY3VtZW50SUQ9IjM1QzI2MUNBRjNGOUVGRjM4MkQ3N0M4MDI2RUQwNDlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/PJycgAAAulJREFUeNqcVU1IlEEYnplvvp9ddRcx/zK33MyfkDJajaA8FNFB7BZBFF0iIYgu1UGNrCCoQ0cJOgR1EsJLUhelOiVaoVmYmGu7LWYqW667334/O9/bfLumtuou+l5mmHfeZ573mfedwUfOPkP/mz/kudnadelMtxrNwQhQRnM49bsDe2+/r/K6Y8uLCcScINO1uwFAoIwISJIslBkaAxH5TgbWOk66foQl8sGy8PJK2umrlwHW+JNGNuCTCrYAiCIySvgEkot8BJmAIlpWFqk2hF46wEGtOBMxBuEfL0rAABxNKE6a5SIyQUsi45m2vGgcnCmQcjTOGwCLTq3vR0FLbz2SmETZpqFTFImUeDLm6R/2PhzZxTPgQPZhSOgarXgzWt7ztZTI5no3kRE6lWggvK1zyOvePvvcX9jzpUJQTEHWn36qeBksyi2Ktg1Wzy26Ns1awDZ4+4A3OJ9X5tIIJh0fvVwOpst3hnZLYsLjjo9P598bqEpyhs2wBjvHE2XzSNZjCcliuKk4gjAWZONocdgwScSkolM/tmN206xTHXBhv/987Vwg5Pa41UfHR15NeF4HSh6fHC7K1UMz7st1Uy21waR6eAvFhzobxpGoPTg8jgTjXF/Nxf59VDQ7Dkwh0Whv+Ja5+GgGnxFzePMXe08PNldOd32oCUdcYQLdn3ddaZjc6VIL8+Kmqog52kaPQSZoXmiGRporQyM/C66/21OSrwOzWt/W+UoWTlUHtKgTMIhbaxlsi27ruBB3qAkqEVMQkMqE33HZdmLAGLbc6LbxrJu8oRv134N/8qYj9NbBSV/5LyMmZw3MDp3g7x8T2hrHZIdamqdf800gRhhkD6RZd2CM9bjkzo3fPzSZIzJZ1rnKmaVYhiZpAvOfQKS2xIoCK1XOHFd9fnvOZEWxlkoZ2y5Kk2E4/TGhAGZatwhYU6NsMYI0VVj5HIA/T7zMBIORVZSp4kBqDBHMPxpYrkKLTwD9FWAAxwI1PaSIg8UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Samoa',\n    code: '685',\n    iso: 'WS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTVCMUQ2MzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTVCMUQ2NDE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJBNUIxRDYxMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJBNUIxRDYyMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mJryLAAAAXxJREFUeNrskEtLAlEUx8+9M97rjOMMGPaGHvQgWkW0MKI27iJo0ap2QVB9ABH8Rm2jhVAQ1CYisIU7kTLsoYk6ckWdmTs5pCVBMCnt/HEWh/v4nT8HBZeiVSzCFw1T1uTwytRV4qmYKwHxgIDABhCIbFRPHy9HjGpZIOACnBe9DItOEcqYybK67ZPW1xawKjPdYCYwkXw+aCZojkDgFuzjZqstVEKrs4eRzfdM4Sh6krlJx2Jbe9vL8FyCruhYhcFVhY4P+p1kVAwEg7fJ7EtOB4X2rB5W4+fJ+FkCVAne9LnQzMXdg/VahiENTKs3tclBpiDgQEDZCC9e32esSg0GlO68zq6B+oGqrfKqYNLy2OhBZKcxOQF18n1FNUb8HJBg2y7V6Hh6t4Fwx4kNCGk+WmZ14E7fziAQy9gvplRu1JDgSl2V5jF0BMHIMrler/sJET2CY2+P5AiniWIg7DK4mGou5AceAAnyv3xwvxAM/0Zf3Vf31X/iQ4ABAIPdhjTlJ084AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'San Marino',\n    code: '378',\n    iso: 'SM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxMDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMzM1RkUxMTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTBFMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTBGMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pmAcAgAAAlxJREFUeNrUVU1PE1EUPW86hGk7tbVAoaDpByGG1EBMVEyMceHGnQtNXLjTH+BKf4BxZ1g10Z0LY1ITjW6MCwPBqCHBFghpLTRAS0EoQqX0ezrTzniBLm0thtpwkzsvk7n3nbnn3Xse08jQAuPIsy3AzXJokR1HYLXq/xk4PPsWQf+rfwbmD5sgFVJYXFrAejQAoa2CcNgFx+kBGE2dzQXmdWYUtz7CZppEdK2A5K8SBvtHm0v158UZTO9u46Syg+zyF4jZaZwxSgiVJDwY8yJdzBx9xTllA775T7iq+DEfD+K9NAqLWYcriZfgx+8iEBeQv3AbZv2JxoCfTG6Xaa2Q11AwHfGi4uvKBJuYGmceV5zzi48xlr6M9mQFCasD9/AMdsWheQNPtQ79TVVjA7RbTV1i5GX+oS+mq0s5M9DUJMkjgKwiJnbRGUdxKiOjT1TgNpQRyRvh+1ZmWF2n+JAOmkCJqXoF63jYBFb9ixrA9KnSC07OgVttw+aSAfazL/D6h4Tv0SLO9QKzK3ZA3w9YrzHwF6sqLNQDZlxDbUBUa9wynLZ2BEPDkGIenHf/xJAzj0yiG1O7fehyfoDAZihebKhnG2guOn6tBE25Dt7ejTs3hjCSXoPbb4Bn0AVTxyXIOxa8i7yBzHooVqZ6tCMA1hTaiNrAdAsLqSK8cyoyhgx8GyMYZkb0SMDzzU5i5D7F5ajYLcr5+7YMj+b2hs/U8NTL9ChQitlMMkaoCjEiEr1sjxnWqH5n+UPfCzwBWKwHLwJ1vKAdsLIPqjVPMvcHQJX/MJrH5D7+LcAAowvZ8JHN4kgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Sao Tome and Principe',\n    code: '239',\n    iso: 'ST',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMzM1RkUxNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTEyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTEzMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A/jZ9wAAAoxJREFUeNq8lk1rE1EYhc98mGRSo0UkJSmiUJtFFwri2rUIgtiiuFGwiMtiili02A/caG2wC8WVUPeCf8B/oCBFVKzWhtgmTalpk2Yyk3ZmPJeZ0GASm4WTC2/mfk2e99x77k2k5I3TK6mRakTLSegqS7BldKSoj+eDcThAarQKrKBjcDkdskszr4NIzgZQ6XVQDrPT7oDiEkHLko2nhIuSSgrlMrp0+KpcVaiuqAFLsCGUKxIwc6eKSpqJbJOs+AQWHwJeInyZ8Ml5DUGuwMLDHLRMgAPwBS4tdJ8t8hkRDYsCA7qMo4aK6Ogi8GQd+In24LuMbvGNjN+MA/uYq74hlFthC7mQhQ+zA9hIxoBjHKAPUBWZ/RUCtuPBeoDsN9rjM+sxr2/Hm2M1RqN9bAlyeBdqyMD3uQTy9+IuXPNecuoCrrLCGlCmJcZfAiMpwGB9I1en2mmMpr51CFcID2kVLD1L4NfwCTgHORBsMpn9WRO4chV49RZ48w64eAlIb9U2sI2lbjCA7DA5GVZJcZeuWdkEBs4Bt8/vdV1j+8wFVgr7uLoZ0DIUGHoYx4cXEU9lgFUOmC1S5ZkvMO5eB0JclQq3xNlunWuDq901oEpCTQG9+QPRF4RmXGVNnS25e5bN01OnXCn5j0D0iDffaUOxuKkUQqO6ip5bX4HnOVdpmRFqkbpnllg/n2JfeTKifd47tcT+BRbQsEED8xzPDZbxacyG9r6Xayi12JD/cHPVoH2EPhoyMHGfh/YLj9Gmj1emgGo0TT+hk4NVTD0wEVyTcEjfgaX5+COhUWmC0OnLe9BISYKlwNcin9TliIBOjJsIrBNa7MwfAXV6qLo6NWZGBPTwlv9Ka+WPAAMAQOHt/oOWjtwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Saudi Arabia',\n    code: '966',\n    iso: 'SA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMEE2MkM3MDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTE2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTE3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VDw2aQAAAwhJREFUeNrEVttOE1EUXdNO72ALvQqIQYSIxIA+GCMvPJEYLzH+gN/hZ/jAL2jiB/jkgw+YeEkkgsRE4w0UrLTFdnqbzrTj2jNtANMpwgOc5uScM3PmrL3X2nufKlic/QlgiF3D8bR+9k21PcGe8VjAPTihprq/UgCrxd505h7aaFm771qGM/WoznOl8017v8L9Hu+eb/a3Hh5btMpCgABqUwcaZfg9Ps4b8BpVhAOnEPH64eNaFfCWCbXVhMfUoXBUXAAP9pgHRoJR3Bu7jbA/grWdLyjUS0jzWc2oYDw6iunkFFa2P6CglxBUQ9DNOm6dncPH4g+8+LWC19+eA+HEIT02ahiLnsGNsXlcy8wgrgbxieDJSBLzo3McU1gmqBCr09tUMIYdsjLcfxpR7m1aZk+PvbiZecAx0O1lhbTlawUk6eVkfBJb5SyGQgMo8blFzWPU8XtxHWkaoelFvM2uYSSSQCw4gDfZVfyu5YnQ9eiGu8fUrUFP8vUixPY4NVWocZ36DYfjWBi+iqnUNLZqO8hW8gj7wrgzsYD10iY+k5nxwXOUyzyCxtQrfWoE9y/eRZJePnz3CDOJCVyKn8er7HtkqN3S1jIKZg0+o4y52BV4yMCzjZcwabBXIlpReuTM4mypa/FgWvhJk3gnducqOVtfP5nIlTaQolGbpD5AT0MEqdE7g9RqzIQ0dS5UttFQvG64mjuw5CEtR0Nz8tnfb7Ng5y9ph87nDCJ7n53vlpO3AiZ7mGr2HF3TSnPXWA6TQxko8Pc5oLKWYDEbzihgYpwcLmCyR+Zkwd4L6yiVq6O1jkFG6mhfBnXOmzTIah+oyI86tmhAjMaVzSq+Mrh0Fhi7oh2tZLZbi4WElF5nLkuFMuiZAEmXIJL1H+bvODW/nLiAp+tLeLL6GAgNol1HDxlce7UWD4RG0a1TqxXsats0oNC4EAPRSwY00V/pef9oB3ssh0sQSf+3/nYuBoJZjOpqNedQrAZcL4f/p3ofkAt1nYj2hHfXB7QTvY+1tsbH+ddH+yvAAIKJO5Z5g0J2AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Senegal',\n    code: '221',\n    iso: 'SN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMEE2MkM3MzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMEE2MkM3NDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTYyQzcxMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMwQTYyQzcyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MP7aXAAAAYNJREFUeNrkVjFLw1AQ/u7loRUMtS6Ck7v+AcGiIrjo4i/wH7j6C1xcBAf/gJM4irvgoiLqIAgOHUpbqCgKWm1pX85L8opFYptAgogH93K8fLkvd7m7PMLWfBXApOgroqQJGnVhyusOF/LQ3gc4CqbyisyDMfWlCjqltqPGnUiciCta09ZAzzVKvK5/9Be2OgjnDgJ8d5oGJlYEmckfI5aEkhNq/OSmQKwIaAlhy9rZEtvIVE6WMeDgnrF/x4Ed7CFZ9LGJtQqb6qzMQccf3grxdWify15H7jlOBsTkp3SEcFEXe9fguMQ4rTJox+BERpB2Mkp12/gLY6NI2CvKYzWJtsLYnlXYXAzdGBOfWMdG0tf8unxiLMwpDEuUVy92WDGFmNSJLXnjEVibIizPEIY04ejGw7OkvzCRLNXJiCXinES5Mk0gv5eajFV5Ae8teT/rpP3nFxm/9/A0bOFlOkDot0fmfyGmND+Gtkce98ejT+jM2LrVfeq3i/Ol338r4PoUYABXBXI3FKW/6wAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Seychelles',\n    code: '248',\n    iso: 'SC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTYyQzc5MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMwQTYyQzdBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1AigIAAABGRJREFUeNqMlUlsW0Ucxr+ZeXa8hjgRJSCo1BQlQFUkoGqkSlGqJBWkjYTUqooEh1QVSBygNBHbtb30wqlCHOglEkUtqBfOSJQzByBpk7jO5nirlySO7Sz283sz/J+XbHbijDSW5Tf2N99vvvnM0HsnCsCLRoMrYMUOuExz/u4EOl7bEmbGdvB6qcBsHPx1J/SJdSM8NovNqXWh+WzMeqzRfAVHGQYH1mwYH51Dx+ks5KK7vJm6axVEK23qZTsy9+OIfDMHI2ugqcMJVSx/h34NuYaighaHnOgbTBgjw1GlYg4oVkfU+sgkURKAW8jY2Gxx4dq0lLpC04kd0arjxoiX7eDtBfnoi3mGLc5kQdS63Ubrgv5fzggR2uzjtEaCTLgElLF3vXYkxGm7undzRvq61jUZ8JQJ7EfbRmjb7SrzS9wMfz3HjOWicL7pLoMwa+loDREH3Ri4GDevD0e4ChOu3U5V2WkJbVHJ6JcBmfwxyrUWjTu6XDUujyZcQYxjefnQQlzgXOZ3IbbQ2gntSUI7uW6ERgntn6viILRHF7YQZ2xq/NaMbOskxLO7EFfRvkRofya03xHa1OFoa3wdluL+wYQ5shtxNbUnSqk1Y2MBY/HaNFe6Ehba0vNGmpwTDaOO40pRsPaC+dvnhHhT8FKKIXdSS4UQuhlA9q+05iC0vBFaS6xQgJFKwcxmIZqbZa2wQcWyalc/3ZpWrZUUKyWhVVP7IGFGKLV6Uj8crSWWz5fFcjkIn0+6zpyRnt5eeAcG9jmupPjCpbj5yXBEKMItLVErtbo0K6kVVmqd9VLLGJSubzvT2tqkq7tbevv64KHp7u5mleNlWm2KC/LXalEYGrRTDuhPNozQjWcltDWptZxZYolE2VlLi+VMeXp6VPPQEOh9Sagy66S63MVq/DYVxYmchlUfRKdNUdcakW/neNEqhLcIrSJX1izqe86s6szb3w/X2bOWiNgvVitcQuyyutgcuRIR0Frp/4pZXWsm7oatfxTueMMDubEFI1n/zNznzm1jPCTT1dwrbbuLj+XNR6MLHB4vK/yTN8JfzSL3eE2zvaoxtbGMrcnMQWcmDhMIp58jmI6r6WQQfpoL6Rj8yyFybHCGlA33fgjC12WyzP1NKvgpnk9FOD2E2iBn77ynms+fVy9+eJnh7VP7EUrrJZlbkf7kEuZXImx2NaqexOfVVGKRLa3FudxYo8zkGEy6MhrdDruLhBedeP9GFtcvhxD7aFJGHwRFC2vFyatXTdfAIPDBReB423bZxIs5Ob3kJ4GoekY7f5pYRHA1xpYySZZfSzDk13cEmigTTVQsrhfo6Fr37Jc1X7qjMp/9ATzMwHzaCfFxD4q972LldBdiTgdmkgFMTP2N+egC/KklBFIhGJkUXa9NajGDUkI3wU7XrYmmzUHbE6Vr1Wiw729/GhhCuv33bIcev3CcRbx2zMTmecD/L9NTz4HNDCW+yCE0S4DBQZ1tJwFG4TiCwEHjfwEGABOHZsLQl4B/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Sierra Leone',\n    code: '232',\n    iso: 'SL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzOTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjM2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3OTE4QjM3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GrndcAAAAE9JREFUeNpilNtq9Z9hAAATwwCBUYtHLaYZYPz///9HIM0HxPTKVoxA/IkFymBAouli+WjiohtgQUpU9Exc/xkZio6NVhKjFo9aTBUAEGAANLMNXBNFuocAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Singapore',\n    code: '65',\n    iso: 'SG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzQzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzRDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjNBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3OTE4QjNCMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k5fIFwAAAflJREFUeNrslk1rE1EUhp97Z5Jp0dTEL7S0GEFcKK4CLgouunARQcEK4kKqtTsVi8WFFUS6EDdiUXDvX9CFgkJXirjQoggiKoqSGIuYtpOk6SRzxzMTK/0BlwrSA5d5mYF5zrnnPXdG1fYMloBeHO3TDjEfv0CXh96Vh6AFLVmOA0phKTKyym4itIb6YsZ8LZEeG8U9WiS4fodw5m0CVZl1Hbgx1uA6uYRSaWUWb+oa3s2rmDfvaD16gNq2la57t1D5fsz7T7C01EnAQiRgU6qQOnyQ9PkRwulnNMcnSZ86g9qUJXw4DY1FUieHUH3bE20NTL2BPrA/ke37j1Ebs6TODic9DqbuEs3+JHX6OFrAkV+3AnaXhVo2T896onKZ5vCYtMCg9+6TLQ5ojl6ClIvanLNYcXc34fOXnUwGBzBUcAYKeLcnJYkfeDcu4544gvn23Zq7nStbdk6Ia73wxQxazOQOFVGu9PbJU6jVBVYmdn0kjo9+VVHptA1uoPzewoK8OENdIFWp7uIF3GOHaJ6bIHz9Cr1jN1Gl0gHmZJvbbRtgX9UKxTkRG2RMDEGA+fBZ3JxD5/uIag2bB8fK9s4rM79QFZGNp/nvIzEVMS+e2SiyDY4PgjlX9WScFTdWKxzNP4o18Br4/wPHXyf/z++Iv0rMhPVbgAEAAN6l96444okAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Slovakia',\n    code: '421',\n    iso: 'SK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBMzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjNFMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUEyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YhjhIwAAApRJREFUeNrclktME0EYgL9l221LW/oAIlWBg4oXUUPkZGLwhIpBIDFBjeFoOPg6GfXqTSPxqDdNDEZJwMDBgB5MTJQLCWoPBhrwwSNAC7TUdvvYcQoESuRiq2icZLL//+/MfjOz/2MUIcQEsF32CFvTnLJPmlYFsp5bAi/gL7V/CyySSURcX5b1wDj6yNiKXdpEIvnnwIHWCwy59zCo2JnuuM/Mg0fL8pC3ipGmtt8CNvW+mVxTYiYr5W6VYv8HEvpXbNv24Wk+gaJphDq7iU0MY3y0M/h+hs+6BZsezR3ceP7FuhYU1DeW0el1yNhyUHatHVvVbkQ6je/mRSauXsdX7ODGnXd0Pw+CV+QOprRwXTMXYHZrGKEg9gOHSIcixEcDoKokp+aw19RiTI1gdpnBJ6OvKJUHWFXWNVUQFQUkYgm0ihI8p+rRXE6UAgVT0zGS/k+kxvxyjCq9Q+42e+4vgze4WpovKTtL+2so6eskNtDFwu0OsFjRLrXLw5d+cLyFb4aUxFxmpfmAs1ZtVQjMqMzu2MuYdRcvi2vp6naiq2Zad56jbvot5fLdcNACtsy83HescKQ/vJYuM98JGTQ1eIkuCgZef5eAWbk7aY+XUHfYRqnPzLMe6VgeZcWeW4sotypPh7PzdCqeoFBT8LW1cGX6IMFXfjAMHEeruVfhZ/7hUyKxNJrNkgdXghcL3RvAqqKwFA1T5HEweuYyZ23NJKQzPU72Uv3kLguz8zjsLtJC5JM/IsqQpyr8U2WS4aOHI1Qm57A0nETIf5zq62FccaO5PZBO5Zu4IqZNzTJhWBx2Jg07Wl9/JkuTcFWgZUbnD90knDZUCoEMX1KestWkLo/W+A/Komn1yuPc4qtP5IcAAwBoBOOwBg9d5gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Slovenia',\n    code: '386',\n    iso: 'SI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBNzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyQjE4MUE1MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUE2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ioEsVAAAAYNJREFUeNpi/P///1MGBgZeBjoDRqDF/xkGADAB8eeBsJgFn+STp78Z1h/4wHDnzi8GULgoKrMw+NkKMSgrMEPdTAEAhvSn/zjA9IZTQOtu/GcQ2f+fQXQ3kP3gf03+OaDMr/+UArzOtlT/DST/MgjpqDBIG6qCnMlgrgYSY6U8qLcd/ok91TExMZw48JfByYuZYdYsGQYONgaGlIx7DHuP/WBg0fvF8I/CNMnIIPr4E9bs9IeHgeHbaYbnV/QY+BXFGf78Bcbq+9cMihonGV7/t2ZgYPtKYeISZcYV+wycb8QYpjScYwju9GT4D1S2u+E8ww82CQYGEVAMMVPoY71n2H0MtBjka/531xkWlfxg4GJnZIjrYmF4zqXFwMD+DayVRhZDPfWHm4Hh7l2gO4BhraQGtPQ7UOwfNfIxnoT9F+Q0oO9UlaCBAGT/YaQ8D4MtZhMnQTk/9UquhS+jB6LEBFYSbAyfBqJ2Agb1gHiYCqlkKFrMOxAWg+rjZwNhOUCAAQDa9c0WhSA2hQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Solomon Islands',\n    code: '677',\n    iso: 'SB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBQjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBQzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyQjE4MUE5MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUFBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+3IS9UAAAA4NJREFUeNqslV9sU3UUxz+99+52bVe37i90bMbIDGFCiBjiZDGaDGEwBYXwYGJ8JD7og0+GxBB8kswnX0x88wVdsOqDIWRMFDXTkUzkj2iQZLCwrltHh2u3/r33cn53g6YPdmvnSZrm3tN7Pr9zvt9z6+HI+SmS+SAFG19zLemJJLQHQPOA4+DGZIq6rnpSiSxYci9kQmElV2V42HvWaW/z8fYrj7N7SwOffTfJN+NxMhlLsh5qDA8Htzdy7PUnuD6Z5JPIbSaiSxAw1gXWBJ3MxtIc7mnlxadDPNvdgBVbWkk72DNpureG6BP40ec3kJ7LqOOug2iDrWEQqGFOih379C9e6A7x9W8z5HVteaS2g+XVOX1xmnze5tKtf4mlC1BvqjNVOFsFlCnFNrnPenhteEEz9aA9L/rdl09HHdzLsFm6NGXMNy7fA5GCOyloMDGaaim4MlQC1CHeLkAPPdtGOf7yl7hC2Tkp5JOkzw9ygF6Bnj65k1pT440T44xcS0DY79ZZM1QBLSk/t8kd7e4dP3F8zxn27zsvHCh1iBqvGCoqxTvE4Sqi7shZdrEuRJ3yY1YaFqRsvMO97Nn+C+/3RXj1wDmQkn9ebOHjC20CVmsj+qG6VgVlhe7L9ZZ3RuXSIZHMr/hMknnHHRem7upfTsNe1WHfGfr3jbgdXvmhlcHv24hc8ZNJK3NlLR6T1dghrn3uqXqGLkS5I7DE7eRyQem8M+zj6J4OWacUY9cTzC+JwWq0Ug1nO0s0HDggI/WqDlv5aKSVod8D5HMaG5vyBEIFAUt3gbTFqTe7XLCqN/j5P+SUc9VkF3Ic6n+Swbe6uHF3kb3vjjKvpmNSVsNrP7ZxaqSFyB8BMlmNsAD9ZgFLSW8rjaXbaSn47aVZGutquDyRIqcc3hl0xbSk+6uS/3tqkcivM9yNL0KT5GLtZTX8YjxANiMdNkuHjUVg8c11aHjB8GpBQ3TJLBYIy+pE1UtC9zwy3MZmL9MzAvRJ5Xkxjfyu95mfy2roAk2nBFb6ypQ9lu+g0vqRW/1G0TzqRErueNjVcNfOMT7oH2Jg//B/a1gG+DCK6+TVi3cV9OEeRsPLGu6qTMPVwqh2D1fTcO3gCvewWmARXOUeVgssgmdlpJZe8R6uN4yerWPB9176iiMDZ6Hu/9Nw1f8Q55ZvipZ08ObVFj48t2HNe7jeeCDAAKYZ9xEESrmkAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Somalia',\n    code: '252',\n    iso: 'SO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNzVGOTkxRTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNzVGOTkxRjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM3NUY5OTFDMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM3NUY5OTFEMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aPgnNwAAAXBJREFUeNrslr9Lw0AUx7+XXBLbJB0ULLi4+QsR3F1UEAUR/CecXRwcxal/gbOL4OCgo0v/AcFFcKpooS0SWmmitqbXxLujYsactHHpg0ceL5d87uX9yJH1UqUGYIZrgGzE5VqnAwOJayZwDf8kY3C6hwjQ68dShZ0ZOIoBkrBHChagmEMYJ1VbITaXHGwvu3huhtIXJzYzVDD/qsiZBIQQ1N8Ytjh0b7UAz2cSmjc1uSat0LQLO2EEk+o43S9ivmihkNOh8W1XSgt48kKcXL/KNbalDTdi8cLWB8NZuYngK5LRW5Sgy2Lp8wKGvKWNprgmbYqbex+3D7/Ttfz4jqu7trynkmOqAvY7fWwsOlibs3FwXsMnj/x4dxo7Ky5emj04ChErgQ2dIGdoOLpsyLyKojq8qPNodZi6WkMrgUVOG+0eQp7X2SlD+oJuXxbVhEGUepqqDg4RtdAfiGijvwyS8U8iM6GDI4+b8dEn+BZgAN1qgUfVZqa9AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'South Africa',\n    code: '27',\n    iso: 'ZA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNzVGOTkyMjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNzVGOTkyMzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM3NUY5OTIwMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM3NUY5OTIxMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CE4TZgAAA8tJREFUeNqsln9MlHUcx1/Pj/vJ3WEMPBERMrDagkVba4I5BzihtCyZzsoxurVm65fVwgp1/eGMmrLlP7VYFvzjDJS00T8dUUmba9NqqDAwMDpQzBz3CHdwcPS5O9yOudbu4Lt992x3z/O8P6/P+/P5fB+Fuh0+YDlTQQPdROPWXXgeWg8Xu/F5thDovYz5vjwUiwVmZliE5ZQ9rPCWx491womugTEGN65SWlrFiZ1vkyp33DrwDiMNH6CnOTGtyGE2Ij47u1BxQ63MGpKLCyZ0cEgwWavo6GhhyZtP0HSlB8d7B8nvOIc5w03wt24IhUDVFoyttlf8TEvZLxAWijEJQJGX5twL0yGq656h9FgDRmERWV19uHfXEuzpZ3r4TxRdAlWUpIUVT4nub6yXvC/NpPxUAd4rK8EWlD0p4mHwDaCkZ/LlywfZmXM//H4e365tBC71L8R7IxKy32FRnR37FR6uttF6fjVVnQ+IqE1Sb4Cmws3r8M8oZZurObHtNVxR7/dw9Ug9iiRKsZqSE56rNGqKNT4/JD+lLaP8dGEc/ZR4K1TDA/Kfm6ZX62P0Z7uY+apJAnQk6vt84ciymVS8Qr/meRtt5/J5qrNQ6K1x9H/LHmV95bO07XgjWvlJNNmdwreXZ61G4yGVcIqbdacK6bqWDfYJMIvMtOxRH/b05SxZukLqcHLxhG+vY6+rbPeY+P5CLhsvFEk3iZ/6tBgr9IFxZPBImtWEhfX/u2MsILFpYVwiphIZHHEtFBGMeJu4MP8pvLVIo6VBRNwZPP5NAe2+XLAKnVkGiHQZo0OYXHeRkplNODS1GMIq7XsUKl+x0Hkpj/KjhcxMStU6xBFdAvHL9foIxaWb+K7mXWxYkhog84S3PKhx8rC8PDeDqtYCWvvvBovQpI7FKIeknexOmvd+zHOrS/j17A0+a+qSbjKhaUriwpp49G2twoaXLHh78qj4tIDpoNSb04jd4Rfh0RHWbXiSH6rrIk9QW3eGDw+cnmsmc+LEUS8/kmhXCeVJoewTSms85aCkOZXmfUeilL3dBmVPH8XXN4A5fRnWFDPhmXDis3r2ot3vHcpzbvTGeylV6r8plMOUlG3mTM2+OcqfhPJrecqGIztNHg4ne0Ia+nbvGo5fvgdMoTlKedPQH+Kli+b9QpkfofQL5RdCORg9Hq32GOVCTmX9+KCkNuVWrGInAnDtLx5ZW8GPL+wV58xzXrZFhimOldlRymRSe2dx2caN6OQKyqePpnP4xffZXfwYA73jPLrpE3z9871c8LdHbEoa/wowALUrYLIw4iaVAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'South Korea',\n    code: '82',\n    iso: 'KR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4QjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTc1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTc2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+kIg3fgAAA81JREFUeNrEVl1IW2cYfvJjMPGvIbhhJZ2tZaWFlqZgKEOHGtGZqtALcVR703mhRGk7dTBEhsz/UmVsYOl2IXOghYpFWmnNxYyKOkMXfy4EZTil/katTZqaH0/efefYZbgYPN5sL7wJ3/ne873f87x/R0JEywBOMnXiv5EopisS5tjxfhEkbrcbYWFhkMlkxzrZ7/fD6/UiPDw8lIlTGmpnfHwcRUVFsFqt8Hg8op3ytlNTUygsLITZbA5tyCOmQyQ/P5+0Wi3l5ORQY2Mjra2t0VGys7NDra2tlJmZSXFxcVRWVhbK1HEo1c3Nzejp6YFer8fExAQUCgVGRkYOXpjj2A8gkR8MQ1paGra2tpCcnCxQnZiYCJPJdDTVPE1dXV1Qq9VYWVmBUqlEW1tbYP/tyG+Yz72JmUQ90yTMffY5nL/+cymGGIwlcOxiQ0NDwnpsbCyI6SDHKpUKeXl5iIyMFOJsMBiQlJQk7G3c/xGTKVex8fQXeBb/hGdpCZsvHmEqPQWr334n2Oh0OgHlwMAAEhISUFBQgJiYGHEx9vl81NfXR4wiYhkqPNt8YaFhZm6VxJJNc55eqs/R7+qPaTEmgRYRTaNsb7PnaeCM8vJy6u7uZhHhxMf437LLdOJGKaK7HoA0F+AnDuF+DvFeJ2ZUsXgrV+LimhXSDCPizc/EJL9TLsZqgenjPzjUs3+77x3CaN/p16dScU+bwgImx3VZPO7bJoEtO6CJPfJMqRjHWq8fP39wGVUaA6I4D+Tkx+2PDLh39hogU/Apjt7TmXjwoY4V8htR9S4KcZRCiuQzGjycuYrn5/TgSIrlKNZl3TsA52XOWUm92sDrTxj6k2dFOQ6JmM/KioqKwPrW9UvAOweWSIPl6DiGjLV2v2/fqYt1ttdvkHojNWBfVVWF3t5e8Z1rYWGBmpqaiJUUsdKilpaWwN5XP1kIahMh/i5B9w3hClPtl4QTpWT63hyw6+joIFZClJubS/X19TQ/Px+U1UGIt7e30dnZCalUisrKSvT392N6enq/o33xKfqe3cEV4yXI1SrITqhwMeMCHj+5jR/KMgSb2dlZzM3Noa6uDg6HA+3t7VhfXw8CfGg5VVdXw2azobi4GA0NDUL3Gh4ePvCiy+3j2UKkUnHgeXp6Oux2O2pra8GQClOqpqYmqJxCDgl+OPB0ZWVlEXuRVldXRQ0JnlrmXAhTSUlJyCER0rHFYiGj0UiDg4O0u7tLYoXNcBodHaXs7Gyh+x1rOv0tDAEiIiKEj4HjyN7eHlwu1+E9+j3Vkv/r0+cvAQYAGzcZMFujiqgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Spain',\n    code: '34',\n    iso: 'ES',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNUU3QzUwNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNUU3QzUwNjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTAzMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTA0MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hN0M3QAAAeBJREFUeNrElk2L00AYx3+TTCw1adndLlS2KLv4Ug+CeBCk4s1v4cWLn8WLNz+B38GbXrysKOxBVFwRXRXStbiktcFmW5IZn5qCwgYRUpqBITPPPOT/vP5n1K5/LgS2ZMasZjRk9vViwV/flYA7VDR0+rMabH1qLasEWM0eO+N/5Ve7FqXztU0hzdQycGPt7ZjiIzs3S+YGRFENK/vW5hQvkoVZnJUJNcMC6Tz66zCdOTx/EDA4qpElE9rNjN49Qz0Q5CPRccsAF40AwvfimGeoZSkfXkoAOgHtbo1RGBEJbmdb9I6XDSyF/v30NpOPdYb9dzSCLa7dvs+ZXsynw0fo7CsdPSgV6pO9NM/dDPzxBeyry7wRz/eabQ5HG0y/XWXy+Qr+8LzkoVyedSGwmBMLIGdnXBcj9t9anr1+yCX3AJ8uyXHjT/HZZQHPfyQ5NBcNU0+RSLPdaod44QGD8Q/8uzs4616uZ8t43CyQ1mG01hfPXHo34UW3ixvVudF6wm7rC9YRezdFLylBINlTdZJAxBPl5iFXvpIeFg8dIRI3xY7lMFUYI3tVgkD27nSKq07lLJFZB+2kv2WpcXFVHmNjy3G8Tgb6P9TcpXO19nxTySVR3X28ePI0Vvz0iX8JMADE1p16B3U5CwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Sri Lanka',\n    code: '94',\n    iso: 'LK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNUU3QzUwOTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNUU3QzUwQTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTA3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTA4MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ynHuxQAABGdJREFUeNqklttvVFUUxn/7XOYO03Zm2g6XDhbE1ghEMURRY2IUwpuX8OSbiW8++KwvmhhN/A+M0USJygOJMSYEH1CUBGICUgpUCW3ppNDaMlPauZ3OmXNxndML470tO1mz55yz91r7W+tba23lX+Qmm+jGwMXnn4cmYovURbaIGCL/tva/RqBnEZ0pZpV7mfrPU4lEsWFi6p7oU8TwOKxqmCvKXZGkyFa4caoXa84kXWjguWpNB1BqaS7fTJHbVaHv2bmG0YxjvXc+nzg51gEpgeUbxFWLKTVCh+/JLtlRFRmE+Xic4lAnrbrByQ/2EDUdlLYGy37gMIP9r0xQvR0j81TdMnR5GYk7YlQk6YaLUspBU8vuXJlj4DU10n0WDzxdYuJsNkSiGR5aoES12ZFH31Ph+2CNXdfJdNd4/LUi107k8Wwlx1hRrvwlkReaalOkWP2/Kb/I8FfbufRpgXiXjWPp6KaEx1ehcutuBDPhrlp3bJ1krokZd8M1nx09yJY98zyRHQ9psvYhng8U12ejaEKAAG2mv8b4uRzJTptHXy0yO7KZTdss+p+7w9T5TkZ/6EaLeHIwA6eiY2puiGRdhv1lopgJJ3yIJCUkgvjhw1PsPjRDZneNymQ8nH872Ut+34Kscbn67RY04UK4Ty2FwmCDwxP0yYyN72jEuiwyO2vMDKWpzMQY/zGLbypGTnXSf6BEz2CF6eGOv2XWukfIN08T9EKegFi+xi1hezLbpFaKcv74TloNnR0HS3QN1IkKcZ2W+pOODSH2Q+755PcssFgxufRlHy+8ew2z02Hg0DRPvjGGmZNYZmVtE26ezoiL2ljKfbjatTVSwvJI2uGhI9MMvj6NKvn3/Bjk/oKY6obOvkaYXu0ptzFXiwK3qVO+kWLb3rs8//4IqipG55eYT0oq47RkagKalsnomZ6QhO3FRtsoYmUEiqAlB2jNGDTGIpLoYqhscP2LXqG+YlJcXLkSoy75HeT7fZMr3Cik8gXB5KUuPnnpGc59tIvaTJSv33yM428doFqNM/TNdhYnTAoHyzhywPa6bqyXzcFPEN9ousXETznshrS1hkbhSImqFP6JoSyFQhnDcNj38iTd+ytcOLEDT9LOXWa2WrdhQRgYciSVUlEvZHTLMshJni78muC61OFE0iYtlWvo8wKxtE3xYpbyWIp03mKhFMf29DANjdUm0CZ+e6lqm635CL2DC+x9e5Lv3nkkRBHvsMXFMc58OIAhzaajx+L3q2nGz+ZW3RRNtsg+WOXFj3/hyrGt1OaiGI58aAoKKpElRkpbrAptvfbuFKRGAykCGobU6prU6lIphW556PPmUsyFbJ58n7uVXPXOyrBrBsUrOS4f245Tl8JjSOFxh6l/X0wlRmuR1YtAQnkcpYK5AlVKLJvlHFsVo6e7aZQjgrR1r2X+b4z8sOjMyUWgZ6BC/+E7DeVfkKvPZrn6ROSe4f21I7Rxv7l89clvhB3LewI9llx9bjP7hwADADpQzQBjYpxJAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Sudan',\n    code: '249',\n    iso: 'SD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjc2Q0MxMjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjc2Q0MxMzE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTBCMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTBDMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dsEThQAAAfVJREFUeNq8lT9oE1Ecxz/v3ZmkMae2xdbuiqRiqaugKDo5WFGQOiiimy5aR6dOOrhYHRx0qQoVaQOCbgpO/oHatTrVhCYNtIlJbWJJ7p6/C7aiVhfv5Qf3jrt33Of9vt/f7z118sTe+TvPE15XQzHbGaABZbAeihu7zc6sw71MB0cWXGY9n28uOJbhDgM910q9QXx8oEFnVXMsu6mVcSVuF64lZ1jUrYcrp2sMD9XwBbinpPFlzihb4LVxRQhlzdP9qxy6sMKbHT6DZYdYk9YCovd4JF2Vu7f+JpS3O4BVuPUiydXpBPMUKLLc+tweOAzhkpIVxJsMv1bm/rZTfrK7y2QrBWUi8t39qwGh9HWHiX1l9bF/znl8/rpJk1LReryxFiK7I0MPMy8nVf+lXfrhh2fqx8x/X/rf6xJdfR/60tAMOHdziMNjZyguL1rM+I+OF1caUKpXpd2MJY9/BxY/QSzJ3ZFxLh84a7G41toq3MJ0haMHj5tHFx+Y3giLa2NwIMDNMpWSje1V0WzJav/2zKjJfVlQgQksgUPo9oT4KYBMHvO+rKaYcKPeuX7+MCwYR2qtrwPmvsJUDgp1a4eE+4u0W2PwVlplMmv9PHbXpZU+5clnmF6iHeGKtB65mkgrWebrtCtc3i3lyeQ8jKGd8V2AAQDj9qv7QrTRKwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Suriname',\n    code: '597',\n    iso: 'SR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjc2Q0MxNjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjc2Q0MxNzE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2NzZDQzE0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2NzZDQzE1MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZGHpRwAAAa9JREFUeNrsVbtKA1EQPXf3buIa17xMNCqKaGyECJZW9v6An2BroSD+g5W1v2KhKNjYGBAMPglJCslmY9TNPsYxJGClNyAK6oXDDrNz98zcmbNXYD1H+IGl4YfW3yMWDlGdnwlG8E2cOsOWFnWMnkMxXcZj1x5i9D+euixOr/S2KW8PnzVExt1OAu3yADSzr8N6S5ukd18W7xwfE/JIEIc9I4rZtTtoEcLl7jRMuOwlfhsqk0s9kfg8jM+CSMDMufAdCaoMIrnqQh8KYO5aiGYMGGkP7UpEsQRAqqYYMKFRaCK/X4SIcWUhf10Qls6OQa7A7fYcni5ikHHvC+XEHHLYh32UwvXGPIKWhJgIIcYIoafjZjOP+kEauuUrVdufjnWCYbVRO52AfZYCsuwbAxrnSVQPJ2HEPG6c+njLwG4qB3swkJotIblYw9VyFuGLhpm9KkYWSmgULRgtT51YZpLKchLc5+gUcLNTwMNJptMDsZWFkQsQKSWgcztU5STI8Rw2LLU0OTeHu/PEGO1qt8b/HZOHLc7whWrBTeET2WzEOzL9vvuhIf7v419P/CrAALDtiSyIepCqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Svalbard and Jan Mayen',\n    code: '47',\n    iso: 'SJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzY3NkNDMUIxNzg4MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzY3NkNDMUExNzg4MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMTZFRUEwNDBGQTBGQUFDMTU0NTE1NkMxNzg3NzIyQzUiIHN0UmVmOmRvY3VtZW50SUQ9IjE2RUVBMDQwRkEwRkFBQzE1NDUxNTZDMTc4NzcyMkM1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Ec+VdgAAAaJJREFUeNrslLtKA0EUhs+Z2c3mIhiLmASFFIKiKSRBIYVg8A1E7CzsLW18Dgt9Bi+FaCUoahNvoCQIAQsbxYhoTLy7M7vHWVHB9bYpBIuc8p/Dd5jz/zN4leyGj0VCQPW66XBrqvA4lh0Hg8/uTQ8b55epAR6LAufgrRj8WdXRrtLQstyaZaF8EfFNQQQi1flF8w9o8/TUrZnCfrxptCVy7VVRqZDSvClz2/KeEC2yu+LWbBuECeFEsyiCJUFgXN5BRyq2n4OA4dzAI3pJS7hzjUh+xtcLy8s70NgAGlucW6/0p+1E0tkVkUc0QmjomyOChiCLhNWO6awK90812wj34ttDwySOaGv0JOBBANWGxsnV4uebIGPspLSWy8/PbANnoyN9vT1d1BKzVUI8D0C6PftkIznuhVsXNg4GsxOg8838ZKYzAeVj8PkAPS/koj3jnmaa8roSPS+W9BBwXaFPtCAcFUptaV80Tu+J/BWtB/1u+3TOpTKAE0nHTPVanCWgEQjxYKCGXJNhuNGMgRLRYb5JBAxVp9Nc/1T/IfpZgAEASgSdGXymLpUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Swaziland',\n    code: '268',\n    iso: 'SZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlENTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlENjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2NzZDQzFDMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OUQ0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wwOMbAAAA4hJREFUeNrslV1sFGUUhp/52Znu7uy6u0DLFlYMaREDgaiRBFAJhlATa2JSNMQLuVBDYiTGK1PU6IWJF6a3XuAP0Sv/wdAmuoEKSpoULanahtaK2Cpt12Jpmf2bnd0Zz+5WS0wM5YpEnck788038533nPOd94yyqm3M5wYcKjfo+O8RK/4UV+Qeua5VhmBeMC6wBI2CBoG3ZAu28vnNoWsSV+2pisJqxSdr5+nLQzkZZ/vdW3F+ucDM6XNorhhJikcNBn7lmh7Y+vyE9k/JoFrulYWgUoJuinxg3clAYYBnH3mKra++QlEIM6e+Y+iFg1zo7yEqbmqywpdTk7GDLXddEJaZRYd00/Kv5kKRd15OQUlU8EOQkCCaFJVnztt8pie444HnuXXsLL9nZmpLGgKwZtcmQTfjH3/CyT0dxCNzGBGT3yYd1ux9lOLEz+T6+tAta5H4T0LfV9BsX7aqQLFJJd+is6zRI2woPJbOMdKyjv0PdWC5WexoKx8dfYuH90zRefAlfhgdxdd0Nu28n/v6j3Fi34MYsQrLnn6ZYGobdL0oVoWjLAEZfm3v6lVdloEqpJuLXLotjHdvgOaNLqq49cTJEv2XYV08Tsi1Gfz2EMNDbxMOBjhytIfh4WFC4TCFrM3syCCpLe3c88YRKjGTVGuO+UP7uHiuH2u7iZFw8QrKopxU3ydYzHJ8w2662t8k7XQQ+qaMOqpRytRroFwuUXDKLF+5ivUb1uKVy1iSOtM00XW9Bk2rf2s4TVhDOWYff42RcIyu547xzl0HJD4Xs+JepWOJTJeo7dM645fX4p73mBuQjHyvczgSZKN8MqmqKMEgAVWjkHewIhE6OztJJpNkpqdxPY9QayvTX33JqV3b8H4V46KXS2diZCYbmRhshikPNVSvKeVTy6rJyfAruFLCZ5o3s372J5Y7c+Q0gxUio4SQHsjn+cJ1F+tQ5k709rJzx46/5i6m0xxva5P6BTMalUL1MEp5vk7eTsyxxe4YWcOq6sVWPiRSI/bk0RDxJMhJR2mQq1mTQ1VON8m7lYJuSdXrIpCp2ixs2b2X9989zGqnRO+T+5lIv0fVbEBEVZWOVxtX5CknKwNiNyQp9uoNpGdFeEkNpLp7KYmyIJk6K9n5UQQ8bLu035KkJSf7OXOFaNRACZlLaiCKP36dLVP5G2YWvIovdJultsz//8f/euI/BBgABhdR5PJe/UIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Sweden',\n    code: '46',\n    iso: 'SE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlEOTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlEQTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyQzY1OUQ3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OUQ4MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+cif6DQAAADdJREFUeNpi5A7oZMANvhSUQxg8E/ApwwqYGGgGRo0eNRo/YPx/YDRAUAJkNKOPGj1qNCkAIMAAQwkJrW14Lx4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Switzerland',\n    code: '41',\n    iso: 'CH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlERDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlERTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyQzY1OURCMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OURDMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hqToNQAAAfxJREFUeNq0Vb1uE0EQnp87/4iE8w+BCIxFAWVegD5lJCoKXiRdel6CDiFKKKHnBWiQoECRCVbC2Tmc4LP3ZpdZO44jkvPZBFan0+7c7jd733wzg5/aISwz8MLcLXUigOWGM3buJaB/BM0IJjMHc+hSy0EYgLjrQSPaJONmdP/Vc44aapCkd7i3K3FC6wG4RehYwDWhdMfhw3uPPnbObZ+3WubLN94sgV0ETQtAPRX61h9zIsfx1OwnTrzxfMNqhBDYn2OXKtEgJ0BxH2x29slmEvfVCDgCASwDRSHY5aEzy40Iy2t6S+oPw7u3gXjmlcNWG+iQ61X17Ma/3HBw5d0vcY1eZ+a7tF+/WN956tIUJAMOOaprSCcydJL0QQwwY6V68u7t/pNnwR3CMv+h96tvrZHnWpMqN0CfS5rhWmN+vrGRJxOC/zaCHDV7Jdj0tJCQrHeEuJKurcXK2jSMMgnjg/cfuHZrIr4fX7cfm4PiMOYoJCDpJS5NvPgG6ikFKzOvYjr7pjuyg+SvxGeBbpYgmlADI27WL4pPl/a0yxtlH26NYU5O5teQ6QENs1EHPGXDFyudIHujbliY6EXlyQFW0Y2HgzcvKWp6j0msSzUWVm0sbgXKhCZR56yGKkFhiyEkkOvXa4UgCjbdrLtoSSrGXaHL+DxesYH9FmAAtnngpsgiSsEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Syria',\n    code: '963',\n    iso: 'SY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5MDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5MTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODhFMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODhGMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bS4JXwAAAKdJREFUeNpiOSeo9p9hAAATwwCBUYtHLaYZYPz///8nIM2LSwEsrzESaSCR6j/j9PE/KL396WWGzU8uoIhRQz0DyMf/cYCdz2/8F5kT+19gVtT/jU+v/CcESFD/iQWfo5Q5eBje/vjE8P/3dwYFFg6CwUyKerxx/ODLG4Y3v74C4+0/gwArJ4Mqrzhew0hQ/5lg4qIR+MyIlBDpm51GLR61eNhZDBBgAHqosVFFWSaxAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Taiwan',\n    code: '886',\n    iso: 'TW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5NDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODkyMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODkzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLbMqgAAAZxJREFUeNrsVstKAlEY/maawNtgmQtvRC0ENy7Etbhz68KH6SV8gV5CFy7b5EJxUZCIuBBMvJTS4G2svMyl32nCaValhhB+8HH+c85wvv92hsMA110APqIIDQxR/jShEFndPiKquu0ADwFdXNE4wy/BE5843cB6lGG3c1DVOTyeEwjCBIpyjOlUMjixNXju+3wV7RzRqBvBoBudjohE4hy1Wh/5/CoxNkPU28EkPEMg4EIk4kMqdYlw2IVyeYBslkO7vUCjIdA3ll0Lq1rEoZALyeQFYjGvthqPe8FShuv1EQkP9LpvD9YsLEmKRiNkWcVyqe6yxsaTWK2xGo0xcrkWisU+NRhQKPSQyTTRbI5pX9K7e+c1tqDVGqFS6WE+l5BOP8Dvd6Ba7VOqv+q7s+aywyxeul+gdPcIj9eJm9sXSvXKP6chWgfxTb8FGwpbMTRdKAZLUdaOfK4PqZUYbdVGoqoe7TsWsGK0VfSMAPvE8BP5EVRyhCWXTskFZjNxkTvDK/YBFnvCQfgg/P+EOf3Jw6+fPn8OTetDgAEAPv6K9CaVVcEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tajikistan',\n    code: '992',\n    iso: 'TJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5ODE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc0RTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODk2MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODk3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YTHlPgAAAVFJREFUeNrklT9OwzAUxr8mdpM2bVJ1QELqUsRAB3qALhyAuRyEAzBwCa7AwAh34AKILkgUKEJi6J8AberY5jWJmHHV4oEnPSn/7N+X58/PpRHvzWAhGGXdBtiBpbAGZqkY2gEHxyep2ZASpYbDatm1Sj+KR9psFq21WkexBAGh4CJc649XYCOpy+QB4vMR5do+tJIQiye4vAk/6G4PPB/fEkzA4RGUmOTuZA0oGWdlrzZ723G14wbglRb8sIvZ6ArT0SX8qItydY/eVYwbyK8iXbxBiim88DC7D1t9MlRuD+bvQsyfKV8yYRsFlxxOIEmsBEk8QPx6s1ooKnUEr94hU6f0TXl75kq/hngfnGExucvW1YsOsNM5B6u2/2Y7/YQutrZpA7m4P5WmDcTlDSqrm3NJt1yOCwUGsxxdG47YVMtsBW0b3P94LFLGNsDfAgwA/Id16/aLV8UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tanzania',\n    code: '255',\n    iso: 'TZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1MTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1MjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzRGMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzUwMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A+PQqgAAAytJREFUeNqsll1IU2EYx/9nHnVTpjMoQSuiNGeaXWmo0BddqFdFF12YQSVFVgpiObWbAlMhP/NO7SItIsOvUOhLQoouYxemiaVSGvtK3YebW/r2HOdsS8/RaQ8ctou9589vv+d5zuF296ZNAoiiy4ItVAAYbEwG/Xww1HI7Bo7osX3ejII8Kxqe2b1/qqRril/+Aq9Pv4qjS8YxjLmCACeHyv1GFCcZMNlpxp6rDkzoFtY6puT/C6VDjniifHXcgJ0uIypzbChpc0melW2WMoAox38HQW8PQkWMCZ+zxhHc/xMx8eZ1QjlcP835HyxQ2hmHMbsC8YFO/Mj4Dk30BCpyTNhxyoav+kXRsxGhHLRNDA/aIzcevOSSQscESkcgKolyMHMc8jdTiDtoRmmbU5oyA/g1wrA3Ox0JXR3g/etYX5cV5+ZQ+tgpeVal4PC+kSHhogLVWg2KXpTQDQOlgz2UgkvmkqEq1oRbSXrouszYd8WObxJ/q1D5WUB9C8NMWDri2msxYkwGQvQAPyMe7E2pXqbc5TKh6rwVmlbpjo0I4TBQz5CYq0CtthiF3QIljVvYKED9AcavDvbM5TjNJXPKUEGUmkN6mLrNiCXKUZ005TVy2fiQwapKRfzzOgwbUlYohUBP8WJzqVbY8faEAVHksjzbhttPpClVRPmRXKovyHFfW4qbPRq6Ie9D6V28h5LzcWkklwboOmYRm+dYh5JDQRZDXTO5DE8nylqiTF6T0ifY22UcuXx9jFwuCC5t5FK6Y8PlWOrYxEtycqlBYU+Zm1I56sZh4r3LTxDlopdLA7mMuWyXXARC3cgEGlqA2fA0qInyi4hL0eADtH1eCi6dJtzLtqJsHZfbaPt8aCCXS3NZgqKe4lUdu6GFxBajzVOd08qjG3CZn8lQ30yUEelI7a3BkJ+UXmWRleeaEH1mTjI0nLbPIC2C+j45qg13oHr0DkMzKW7KAIu/oStjaxZ/Fv+lnFERZV+N6Fz6WRbRh4QyhMenJoGSXBruIqK1H8PTKe6O3STlv3NsWSZeefU5ezIIT5s5OCJTaC6JUn8YCN0ypferj+WPAAMAfeh+JFKb/jQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Thailand',\n    code: '66',\n    iso: 'TH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1NjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzUzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MpuROAAAADdJREFUeNpivMcrykAbwMRAMzA0jWb8////aIAgBwiDSu1ogIwaPZpliAYs9/nERgOEPkYDBBgAYAkIxbRv61QAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Togo',\n    code: '228',\n    iso: 'TG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQkUyNkYyMDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQkUyNkYyMTE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCRTI2RjFFMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCRTI2RjFGMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DvPYywAAAaZJREFUeNrslM9LG0EUxz+zP2ISsxitmlTxIghCKVSx0EKP1pZAWuiltwQvKir6H3jw0D+iB/8DLwXx4KmHXnppEaSFEEwhAaFhS9JCks1mt7MrLPEmOPGUL7yZebxhvvO+8+aJ8/RKDbDoh++DEJGbcP1wXijM3tx3BxjSZiIvIJOkvUYTLZVCmMb1JQYATdrfG8k6XUafL0viJHS96D59AijLGKGbMssGbbeESZa5ow9cvt3mz9UXkizgWQ/wPRd/45Na4u6/OtaLZ2Rf76LFk8QX53l4uEf6cg3nW5X68Sm6YSmXWsqo0alVSCw9Ymq/GAbS73OM5/K0K+XwnQVCPbExOo5TqvLj1SpO9SoK/nySp/n1M/rIJN4giP2eKw/ukHm3Jd9bp1zYpFP6RfZgR0Z1TOEQ0z31xRVAj1t4rRbll+vYFye0zi5IPn1MLDVDgl5Y1uLjG2XE4nxspRk0kKCyXdvGxyU2kaVr/5brHubENPGOc91AirPqMm43En3udDi6djBmorUm5VYN4X9nMK3pNsU1JL4PGCq/yFDqIXE//gswALMxeaDVbAFMAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tokelau',\n    code: '690',\n    iso: 'TK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkJFMjZGMjUxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkJFMjZGMjQxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRTFENzgyRDE4MTQzRDBERDc2RTIzOEJBMjNFMThGQkEiIHN0UmVmOmRvY3VtZW50SUQ9IkUxRDc4MkQxODE0M0QwREQ3NkUyMzhCQTIzRTE4RkJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xugOwgAAAy9JREFUeNrsVFtIVFEUXfvMjNY0zaMEa8zINLEHViCTX2EQFGSYElHRk6h+il4/fQS9IAjsJ0IoKqLCCOyNFQ5o9uNPDyYwKxWVCjPLfF1nRmfOaZ87auPY66e/9sdcmLvPWvustfYlIXZBl5ByEBgAJgshAIU/lJLSBjiAwc3r6nPTvp24kNdnQAg52iFiDymDOTneYydLbDbNodTvQbnfAyQXrWioq7h99ab/VZO7z3AJEY3vs5rzGsBQMBT53D7Ah4CgUlai8bNrRiUnAROX+hqPH3pWsKIVLrTcdV57kAP0ARTfLZQMz5ufnpWd0db6vqzsvtNlP3p0TWqqw9QnvqSUViVT3A7j4umHtfcrCla2ohnohv95OpMBkYTbCYX+kuJFqwvnA2HAEwpHntY2G/1hIstYESYDzo2FgXc15Tv2BfAVeEP6VgKd3XbAQpQonFUIz6lTfn4jaAqIDCNc8+Q1YBfCYgrCoHxoShIZl85Ubdpdjy4gwIgETc3oykLyp56w1iRlRGqZFBQnxCmEIwZqisAx8OTntl4/+zgzvwtvgVAMNHYZDe1NYZWHlCKiMd5or4Rg05A2w1O0ZoktSSkVGcF1Aq5DO+rqHpVnLujSww7G4eqhFZu3bHEH0G9OiQTomPehGV7n1i15E5JsSkWl5NikuO2hO+dvlZ6r0XFv0npinKAserqvx7fgCzApIVE0sjJ6SCAqyCpVMg+73Pf26tmq6Qt70cDmC+33T0sqZKPy8pzCg8VAj4hrE6McsV+p3IDtyJ5qf2XF9IxeBCyQOvq/XCAGaMOqbY0Fi98AKYAcD8368rDeubM/1d64dbK0TiehhWCVJiv9ejlJGxvEvSv+ae52llEp+UMQrQSSs2YOnNj/YsOBl/rvLpNe4G9rCEgFOql4/dq71bxBQV56q5S8SJwwmjb1Y2d35PBOX8+XCcKitPvDtgjWSSeL4wUdchCNvCIzgOYjAm+24Z3KaUnj5eRAU37u2r3bG7yucEeH9UO7Qw4fIhNn9Dh/PXgxhjfO5DDbNDuPQFHSlGoIHk8wY1aoszfpQnkmN+3CvymBf1b/oRPquwADAFZsVbvbw0XNAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tonga',\n    code: '676',\n    iso: 'TO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCNzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdCODE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCRTI2RjI2MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0I2MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hRrzKAAAAQ9JREFUeNpi/Pn0KTMvLwMM/Pn06e/372yCgoxsbHDBx52dN1pbuRhIA0xsUlJAo+HoYV3dbi2t3+/eIQsysbP/ZyAZsPz9/BniaqDzf7548fXq1X+/f7/bvZv/yxdubW1kt5NsNJx1r7DwwurV4gwMQHQuO5uRgcH5zh1OZWUqGC3g6qry8eOfixe/vXwpaWLCLizMwsfHQAFggrMkU1NNd+7k0tB4wsCgPn267o4drKKilBjNgsZX6u3lPXeO18QEWZBNQuIfGUY/7ukBJgA4n11GRlBE5OnEiX+/foWIMDIxfdi7l510oxm3MzAQTFisDAwcDAykOpyFyIzwj5JopDoYNXrU6FGjSQIAAQYAmalRzsgP/4UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Trinidad and Tobago',\n    code: '1-868',\n    iso: 'TT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCQjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdCQzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzQjlEN0I5MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0JBMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+K4UpOgAAA9dJREFUeNqslX9M1HUYx193YMovAe8uajKwgXCA8cO4TCejBUUGo2mDwmprLSFD0yBmtWajVWoTSjR0qeuPiiVmw5FsAbnGUFJAwQkcIqUEDPHu8E4PSO7u2+cOYavvlQI9f7+fez1397yej2JCkizrc1/j6MHD/LO0UVHUNzSweNBIc1wCdiQWqMOQ7BPMtRTDb26TNHt2sumD9/niw49lgUCNml8u6YmVvGlbspRRywDeqhgkx9zgyq6yXfSnZ7Ov+CM+P1IhC4xcNxAXqKa6v5t4cz+qKB03jR0oUIqxFbMH+wVEcqXmKD2PJLMlO4fKM6fdBjNjEzhUU01k51lCnnyWmyN6sNkFXDk7sHNwX1U0w+cauBAURtYyHc3Ga3gt9JOFN6Rn8k7pbkJrq4jOe4tblss4xscE22MWYEkS/5cNH3UM1uE+Wnw1JBrH0ZstPKSNlDXsKizi5c35qA6UovvkM8ZGr2KzjKDw8Jwh+E45N9VLHYldDNIUEUrIiZNc7tLzWMoTsqZv9pWTlJbG/He3srq6jtsTQ/xpGBDweTMHT8Hnqxfj6RnEqYwU7GVf0lT/M8+9+oqssbG2lqiEeIYyUlnV2oGHkG3M0HPPcNlmSHYb8/wXscArhF+35GF6422+P/wV20o+lTV3t7UTHhBAW/gDJFqM+KgexGoQG6/0vOvGu11JyWFH6e2N78JwLu4vYWDti+wsKKLk269lWavZTIK/ihNXu4g1XHHpdsvYKT5E8Z/wf3fB4QBPD/wCtfxWVYE+egUF61/ieFur23jGw/HsqfwOrdBtibgL07oplTMEu766JKaW8BO6mbrOckETRmZ4LM2mYXz8/WXxrc/n8J7QLfjHIyzbWDip2+ioW93ubv8d3byduhn6afYNJPGPEXpv3CAsOkoW3yF0yxa3f1H5blaU7GdsrA+b2STT7Z7PzqRuS3GIlqa4SIJqTqLv6GRlaoos63xwkp5O476C11l9rIYJ2zVuGwb/tvEzuneTugW7dGtMT0EqLed0XT05G/Pkuv1US3hMNIPr1rBS/7u47U7dLk3DZ3xop3TzcupWmI8pv4iK8gMU7JC/bL2dXWhVKlo0Pugs1/HVBE/rpjgXGCHN7sqLmSdsrgUKSc0ktO44B8Ujkivuubv6ofUMa5c/Ss/yJIbON84B7HrNFS5frUKd+2NXEdF+iqrzLQKgcxvfe6ySTeuy6Hsma47gKb746aziaPj4BxPf10u7zUxyhBaz0STLbi7eTtn2YhfYwv9QzqUZN/SKm+2B7mIbfRo/nkp+nG69XpZ9IXcDfwkwAKswgUQLQuTdAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tunisia',\n    code: '216',\n    iso: 'TN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCRjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdDMDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzQjlEN0JEMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0JFMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2pqf5gAAAmNJREFUeNrkVktrE1EU/u7MNBk6mTws+IgiqRUpdFXUjaAiXYkbFyoSFSxiddMGsRUFsfgoYlcipYhIMAURQXDnT1BXSt3YlmJQ21iU5tHbvOfhmZtZuLKJjXHhgXOHy9w53znfPY9h39CxCCBMytEa0UlTjIBX3E0rhUv4R6I0/gkjrcLCqthJ0Gj1kNp/C9ghpwIDOQGteMPCCaOcIkibDAVo7yU167ZW1zEbRQGqHT6BcDqHTaVF0gVs/vIV2tEz4p0tWJCaCWxQHKsI3r6H0KvnqL6fxvKePuT6B2EtfUfo5RRC4/fpTEGw0iRgohMZaMdOwXf9CrKnzyPVdwBSZBu0qzEwvw47k4U2EoN28qyIvJYH6wauCjP62E1UXr9F+uljdNy6i9CLBMzZeTDVC4vXEk0b6BcGbZTXD2whD0XdCmVXF/ITkyJ/fbFBmDPzSEejWIpshzmXFGfb9u6GHOgkYN6MiKlMmEud6WasxGAXy7ArTln9wqzzZKw5dyzBB6O4ADP5Ge0XB0TqFB4+gtLbgw2JJ9jycRZyV6R2Ke+mYWY/Eb6vGRG3idbAR+/Ae+gggkeO48fIJeTODcGzfx8kXQcL+MXJQjwhGGBQ17QqD6P9mlv5v/HOg9KHN5CDGxF4MA61pxfF+DMYM3OQd0SgdO8kFuLIjY1CprbPaF1DKnUOCaeB5EWd6tELCExNkss1sqzlDPjlG+CJCYJTCdRfT/fiDUwnJ4oS1ekKuSFDCXYSpxKMTJLorVLLdADVelsm/4OxKAkHLLdknESq3WlDQ4L/n/OYuxG38teH/xRgALiVytS9zUFxAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Turkey',\n    code: '90',\n    iso: 'TR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDRBRjkyRTE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDRBRjkyRjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwNEFGOTJDMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwNEFGOTJEMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZWWjjQAAAsJJREFUeNrEVktoE1EUPW/eTGaaZPpJ0w9N60K6ENxVRIhIUdz4wSJYEFy40EXpzoILcSWoCxFddFVc6KKr4qKC4kJt6aoqCOIHoehCbGsNrZq8NMnMvJnxZtKSVmuJNaRvGN68Tzj33HvuvWFfwm1zADroFajNMOmdV1c+sGauCbiCbRrqpqeMAbYDz8kGS0WNAHoI8P3/Bt6YscIB14VcXoB0lsDNOLSubvi8tAcpS3eqCswU+NYyHGsR4YPHkHj3AYnMLNreP0fL+H00DA6Rn1T42XTJI1UDJjbSSSN25RpaJx5C270L2ZG7SPUeQebqDTBNg967n2aDDMzDl1Zg7L8ORumUKSuawcktIHqiHy0PxoKd1OHjyDx7BC04VeDRo8V3kIHEVmHw3BxkOgWuhsH1Jgq/rARXrBOX79iBC8yB86XTkTsQBGqE4oCmBqJSyL2+KEBaKYT29qC+bxD5sXHw1mYUnk6A1UUqCoGyHjgHXt8BbU9PsLYmp0oXVkBLl3x4VhZaezcaBi6g4fJFtL+agptaJF/kKo77BsFh5d9ukjZMUYidUU47KbcuLkZxcjNzsF+/Cdb6gSSxKArOKzOhWTFM2PMz+HH7OsStYRLeUfDOBJlcV3GObygus/8M4mOjwc635CGI6UkSF6dTlQyxoDVRafdoHdLheZR6S19JXBESV2PF4uJDWvRSkdzqDoeB/NsXUM0Y9OQ+RM+dhaqb8D7NQ+3sQuTkKbD6RsiZj/DyZLMtwetiYLyoe69ST9u/MS6S5vALggqXQLTvNJqGb4J3JeBlBOzplyg8foLle6Pw0j/BIuZWy6f4E3i1ZDoFql7fSQQqtLadUOIxyNnPlLPk1lAjuTlMBN2tFq6/AK9pEn7Bgu8WW7VPzjDBDKMaTUJs3p0IgFE3Ymhet1eNsa39WKy4upZ/fcQvAQYAj5ICkAs+H68AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Turkmenistan',\n    code: '993',\n    iso: 'TM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDRBRjkzMjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDRBRjkzMzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwNEFGOTMwMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwNEFGOTMxMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rBlHvAAAAuFJREFUeNqklEtIVFEYx79zzr137rzfvsFMExEqaVQyULLc9bKEWlU7DRfhql3bdm1atQqCqF27AqEQkRIsSMkHPlAZx5nRcZyZq6P3dc7pTthrEcw4H4dzdr/zPz++7yAYvg5WybYr6cTjjzvp6rN+1wad24rVuod6ahRmA0rB0EEQASEADoCguMJHp8jyy2pFQ5urv2esJaR0HwbzRFMIYI4QqgxXE11DpmnthWswLgYtHJ2IM+Z1Cusz+eg6Pd0beaBFx5mqglMCndZ4fPW+4Pa+EhCl+c111XoHQkWn1om3iSprm63vY4PZg+rReFZLCn4Osre+si6eSVNG15MbkYaW2119kEmVkpqD4DBspjOzGogfTvkXaWUHMTCSRKnWFxQl6dvyLKzM2Tt7m040F5yU4Fpi5pr81eXKD+Q8F/ji1cBsLuA7lHRl5/PidDSdyqUS+GTLw5v3LSGASSmpC7ot4QCmpRFhho7eIopcMzZ3kgOX+0cu3Xg7Nf7y3RsIVZWC1jGuV7vm92ZG/Qd15vkV4C27qtsHFAERKEZxJTP06tn89y8QCAMhwFjxHQJYJVkM82Bup3inkHdS6Si7IJjUnLSgVlXUFHqjCO7frilPOiY0WIlAU6Rqos5YTUviAQHCgf8cE4ersAqSeIkjQzF49WaMgjEaTSuNWVvYYVKJASt29v4vxEA0oLWJDC2RuE+J7KJUu2FYaAplo0XuSAifZOfrPgkEMpsirXuafIDydjg2/RcaczmHluy28VbZaxhxv1gxxURrMuy87NQ6Vk7RWx/S8tONLY+vXXe7z+Ty3kA5rvHv5mOamdWg487g8L2GsGsxs08QHJ/7T/Ntzxjha92hJxcn/fTc83bVXqMljELzlYvWiadOcvLp7Iu7UnX7nm8kVJXkjJaT+s9/je12Gl3IzHiROxaDRx53wpSbC39KuakFlt21xbfD9jBWF8YEIbmy1kgEs5zUPwQYADj4QuUGyU1HAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Turks and Caicos Islands',\n    code: '1-649',\n    iso: 'TC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkFDQjQzOTYxNzhBMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjA0QUY5MzYxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTI1QjE1RURFM0E2MkU5MzlCRDM2MzZFMjczNThGQkQiIHN0UmVmOmRvY3VtZW50SUQ9IjUyNUIxNUVERTNBNjJFOTM5QkQzNjM2RTI3MzU4RkJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vPd/igAAA8RJREFUeNrsVFtMXFUU3efcN/NkykNmYmSoCrYROgG0TUVNY1qtVavYppoyWrVNbAI24COpiT9qNY3BH/RPawxNCVg7pNJIEUzmo9rXWKYYZLQ1zAwiXIZ5z9zX3OMdsE2NMTZ8GnfOxz7ZO+usvbL2QdEPD7se8HyTrurs/u7yoB94x5GD657/9qOx5tYnh3BqNlm1ihyozrzeVpNd3WDZ2Ac3Hbjl8JU99/V4vv96+NnK/Qe2A2dfmBbh58n0TCwl5lryVwfuJ6/s9hyJ3VHXGSKQI6AR0P/hkGtJ3oBG3o6+Kwl2h1t62bnI7nh4pnT1/MDpsp1bxEM99MZ76xOT8Hjr8FX94/dOJn6JXApEMpkCx1FEJ7KMCFAA5BpLhJBRIghwXpKQcU23PmL+MZRC1mhaU36bdddUSOlsdC5ZbuOtAhMrc8kLSUcudctaRxb4mmDTvMxzlIKAsjgo2iqqGRNW7ZZKncIo+bsej0sIgSwbDUDP2KtTSIpk1bVb17tBtiXmCjIpDPpwwz321oeU46OyuXS81ClmY1CkhIEUZJlYyk3+T4N1OJOyi0rJQmjU5iyPz3DNm7xNci62PAXdct6Zd2/qeefBWg8Hw6M9E9StlcLmwYGzzZtH2rr2dHRVBMaCR8c7glwoZWLUAI9VqYCoknQZYeDM+9b1Z3KrusKfzcsCCPvmWDuj5NCSSgi/9WJTtMP2XPRU/5bONU+fbH/VLwYmhDobm5h9wdXubOju/QHv2nbn1DOFd5mLqqxJRX2BKCbFIkLFhBqq5mnWdDsLTrDeJmg5WMYtsnaTVO9rX34+Zz63aActDUgaGc9A3HPxJwoE62zwXNtL5z/Y/sSbj9W7SsM2nEgaZAFSoiXNLcLevVmfq9erNW6zNa5RLiMiJfRl3CL0/u7RcNgEwFJ0nhU4IPpx/3Q/3oDOxnmKoJIqTSXjvqGdvgKgKp4zC0jXEFZV7ULAWds86ftVbPcLx3brGx6FC91mA5Fjkaws+ToSNl6heR4zNCZGAGJonsMZlqaNlOg6RRGed3BcOcdqYHjWcBxl8Mr0D94FYB0YMWD0U6eTAGV9J+425sH4TzMaXY1F8jR1fRBYytBfVwsVjXrjNT85VVGiu9bVToSnFe9T/NBXuz456mDZJEJY0wpGL4YVBU0biotvvO2KzLWNfVF/acp78FAlxgsURd3IZl9RIJ75G9F/CYSJpuiqZuUFs5RPMkyOLkpaLEnS0sos98mSujL6COJyPm4AaWrxXNcTVizITf18/0P/F6D/EGAAAySvSKv5fokAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tuvalu',\n    code: '688',\n    iso: 'TV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUNCNDM5OTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUNCNDM5QTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0Mzk3MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0Mzk4MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uL136QAABDBJREFUeNrslHtMW1Ucx++5jz4ube/tg3ZreYXwHEwGgSEEQomasQQyMpUEZqIYJlsGRmNwRmO2mCyZic5kajTRGJxmzoxNFo1xcWMP2SQuk+LKuk1hFFg7aEvfvbf3dTwEXSLDhH/8z99fJ/fmfu73fL/fc8Afb33gaCj9eok5NHR7ZngMM5m/6C/Z8eXRH57u7RgKYsm0lZUHcoTellwpv2CPX0jFEzRJYGsNDhRe1qRlDVpryRRx1F0eujzxUinV1+QwP7rJJdM1Jqzu+qVr1c6LIXzAFDjWkddQX/Bm0NbxXcCkitmtGZIE10TzihZg2GtlB+rMo6PBZrKzq2pBZ/ycE164eefFHQ3d3fXzQyO35n01WbrxvZnZGIs1OwfdqTunz7ZoMb3NmhIU8E8ixAAFxJjELPAbcmivQzsXE1iAQcBtbtJwfDgueXkAo3GLBhdlZUmrYxMxDYWHLDa4EHIQYqZVi7Hs7p6+RQOr51MPHJAh4eccBJBrTaPFhptXgk4fl6XG08gQcsr5RNgbSmD4psYyU3BBl4yGOCwweMLQtdNaV8L8PBkQgMuWw/r8tE0PKZIQhQd6E5LOpr7fWTz4vb+9ynhtZ8lXN65smZKLNASnQJysnLTVtrW9/mRxjj4EL00c8Rsq8g1bTh3/raX1zNaG3T2y3u3ynPP2R7N+EQ3tAmdSSbz8F1qQNQYq0lpwGseUE3PPumLVQcHKqMIrGyLe6+n90B4pvjDy9v5v2o/NDp8NbGOitTdG3abirmeG3/92ktAyz1mlXeKczuWeKdhIZGiArKygkbq4xPzkf8wTK18SLPdS2RJUoSQUDIcQJw4PPP/rubE3kuxnhlzcTOVVG3OL2BhNe0qK5vKMiejSj7f8rqoKq7OsMCPlAWQKJ9VAEhR1RDSh9Chcus/ZRUWNA8jJGehnhypebrBcPL+wHTQfOalYzIzEb6QBSZGYJM1GpagpUx8O5ulxTEXJCvTdi0RETG0zW7kULslpqNISnF0z5+OzOZkmcRH1QUfGkdiYwBwo35+QDIc9B8Guj8483FDUW4CtPahqi7yt3XFyX+U7n070HZ/tZlXhqMgeLHu1MXvklbGPr4drGSpipJaIR1o7H/7+37grL5FkCZLTscKpeJECCajgIqRUuMintePhrRKkaGK5nWuj10ZikJfppKRD6cdE42LC5klsLjW4363Zo8djg3f3Xg01aYkUKjUAy8cVXycX+YAE5tB3662XkaeNmecHH3+qzX5qJpnvTzvQETerAxs0Poi68fee160agkDatt0+vK/yyHSo6Pd4qQzJ+UTudLLwgm/b7UQZQ0VX2Uiu1w2w3IGrQWd8nPFyed5U/ieefhUpZKoXU6gkQIJwdUDrRaOhySRqArrS0NqiXlx5iPJU4cKKY6vvWOw/m//Rq+ZPAQYAm+jfAfBELj0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'U.S. Virgin Islands',\n    code: '1-340',\n    iso: 'VI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REM0MjcxOTcxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REM0MjcxOTYxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjE4QUQ1Njc1ODU2QTk1QjU5NTgzQTRGRDNBMTc2RDAiIHN0UmVmOmRvY3VtZW50SUQ9IjYxOEFENTY3NTg1NkE5NUI1OTU4M0E0RkQzQTE3NkQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uuR1EwAABFVJREFUeNrMVWtMHFUUvrOP2R1mHzP7Ynd5LYFCYBVKwSImWBvTYIGYCkbTGu0fk0agUdtqiI2KWmOqxhgfbdPWRGhII0nRUjV9YNtAK0HAtVhWaCndJ8s+YHeHnZ3d2Xk4VAQaQ2lMTPySm5xz5ztfvrn3zBmI53nw30D0r6ruxw0vWknn1qIn2Tsc/l7EpWeSpXxm8igX6ZNoNsvxTSieL73bQjJBOexfQuFvdEV7cfN2aLFo2VmCBbHgME1eTYYGFdl79KaKRWmBmqAitKsTCnW6UkoU36rSlkvQKllalgK3wGIomSACrvOF8hE+sCeu247CwluKKJpLzHuS5DgVuUIG+lnqsgIGSQrIMl4X3EBL15hKsU77gYSjTaYC4QBQIsCUA4K+NBG2Ke/hHwUC6XoJ1RwBbiRinMZwDPC/2882qBAPhiXGJgAqBTIUxGmJ1nranFsrglZIL+LmZ1Oel6EkIJJYaUmEocD0NHChNp0+pp6pvuW3oBChL37FzzUl3Hut6nYsHVCE6NoEYtKTDKs2FfWmZVQsnoQgPeYPnHJ79xcXXiGZ4QjUwP2sIT7xes7DaSB/I+RwNuXuKAKEDTUB0mEFmoBKGyAG9I89n3np8PcgcO7aKDDIACWrx0uOzcqNI56bDbkWKSxduAeVDH771sx4nPrU6ztNRHLX1Xw0uRWxHI7GMmfsvIY/Y4FHAJ1Pzq1T6gJSDiY8GUCCVBr7ATsybgOyWPYlrOuH9B5ca+z0OZ4bd4tFf3dIFoY980DBQeeMmANfWM2Hu1vf7zpIP9vxakWH21aXmne1V7rMpjoGC8aGXICMiwzaFFyGFB+bHAjFoeIzhuOHgpm7FY543JAuVxXguEgiXv5kmnXqE7dnCDpVkiaG1dlADr66uMtFZ5fV31CUfw6v36yi5owaVIcgegTNhTG9eJIva1Favp4s7HqPQnni127fdIJNaeUSaKHdoGXpR1UIkMIaTC3E9RuezkvPYlDmZN/HEiSzpLSFVvQ6Y93xuD7KiBKcNJiAb0Mfpqn59MKdIrWFdQwL51qTZdYosbFw1B6e5VhG0BG3tbWxPGB4Vp6i6nBFvloph+XuKddl58BvsevkXEEOsU/F90qqm+YnrFjAyXgj0UeeyHgxEOs/ZNA82OwpjSTc9i1VT+aYBbNsMp7PM5UaXAoLnc/zHMczwlrEQjBkH8reWWhoAc1vAk9f5uzU/tD84HfttT1P7eioXd97cR/Dh9jBbeQFpPV4zXV/iL8bf2lBq00+rz/ERkf7hl6DC95ofKjR3qOJ0OEwhcoRgKVIiWHX2ewj3159txX7pXHbKQBk/1SA7j1UQ0lwoKt1Y96Wx9V/TNl2V1WD+TnguiGmc05sCJaDGPRWifEdq3KV2bcWWIaeDvmEYNz2gfMnMHkB93sHhPSF3j5w9OQ5r3e1wjWluZWJzzscjU7f2eV4khh1TJE0vVol9H/7y9wX/hRgAAzpo5Xw0k2XAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Uganda',\n    code: '256',\n    iso: 'UG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUNCNDM5RDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUNCNDM5RTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0MzlCMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0MzlDMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TD5l0QAAAL5JREFUeNpiYBgFKIDx/39aGc1EO1cPTaNZbilz4lfx/9P3P6zsqnMOLTi0UEFL31nR/kaUCcu3L4wCnJS6mpeHQW7uIjYvs+t/BMT1bZht1SXmLOIVoEaAfNFS4PUMO3v99tnLJ/nYQelJ2D3wi7YydULtPxikFJUqcjHdCjH7/+Uj1SJk/fqNQKN37d43ceKU/zdP71i6hKgsQ1zG4umfsFpYiF9RQe7lT6YQbwOGn69Gc+OQyo0jLEAAAgwAGc1CiUqK1KwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ukraine',\n    code: '380',\n    iso: 'UA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYxODE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYxOTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0MzlGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0M0EwMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LuVcRwAAACtJREFUeNpitCo9wkAbwMRAMzBq9KjRw9Foxp93xUYDZNToUaMHg9EAAQYArtQDhtrhiMcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'United Arab Emirates',\n    code: '971',\n    iso: 'AE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYxQzE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYxRDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFBMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFCMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VISheQAAAGRJREFUeNpiPCeo9p+BCGDUeYuBmoCJYYDAqMWjFtMMsBCr8H/c/98M7AzMQCYjfX38/QsjVD0jNTDRFv/592eEJS5mZuaBSVyM/LygMv0ftRIX8RYzMrKOFiCjFo9ajA8ABBgAlQMOS8Um6UkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'United Kingdom',\n    code: '44',\n    iso: 'GB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYyMDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYyMTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EXnauAAABW1JREFUeNrEVm1QVGUUfu7dXZBYvuRj1yATNT5FxCClTNLUFNBJrfxRZjOKkVLqGA2okGGDhA44ToqT1pigA9qAhkho4kiCqRhgCKwBg5IiLCDs8rEid0/vvVfWGD/K/nR27u7Ofc85z/Oe9znnXi52S4Eh49sy9DS1AE6OgJsdYDYDhOFWr8fi+Ej8kByBuoDX0FOtA6dUwVrrignNlxG1vQT7Yg8B492Gx3HsUvBAmxHoNEAdFoyYqDAoUzeF2322djbS0k9h53el6NXdAEY6Aa6PIfBvTQTkGaBeBOxmgCFYFz0Dy5z0GJe7FbzxdAlc1CokJ4SjoSoRsQkLoXawAXTNLKhHZss9JaAY085idbdgN9EbcQfWo2JTIJLOpoCbOw0VR8+BvzUrDFe8X4Th5Blo7K2RmjQfjZWJiE9aBHtnW5lAe69IH9wTCMhrDLCD+epuwiHIFwmHGGCcH5LPpYCfHYrKY2VwPJyHoNYGoKXwNAlvRVItK2qVTzAZi0toyNqNAxT7eT6px2xkBQ+nsI+OSPdrJ4TRJWipXPkc/e4xWbq3OKGI+USSOmwPxX1fQ01nLhB9+AHVs7y/uXpSR3auJa+JXYB/Gi1LKaXiXTlUExRKvzDHinGB1L430+LYqjfS8k8yacmmEyQMCg8BCwN3KSqthN5dtZ+u7s4iYekS+kPMM8qL2nPyLHkq6jto6apDBJuPCVOXHSSvyH0UnVVPOrbYf7Gc6uYtpLqIt6kzt4AeZdV+IrCGyhUeVOkeRGbpw6zpGvVGR1PtjHl0p/DnYTFX20y08ouT5D13D730/kHiSNo2s/4+GE1m2DmpLec2qO8Ap1KxtlGAFwWj4iEYTagJjcTdaw1SOyldRsL31+Ow0joDBna+Ls6WeBIEUL9J+t9nuge1rTVgYyNromb8VBqSI+MNQSBwCgXTCSe3khhMw3vK3Nsnt9p9VfG2z7Af5q9UyqoW/QeFYZ2oUDA/jsdQfyp7G5ufukWVjg7si5dzMJB7f7Y8RO6fjMf/ZEqbMR4PGpGxFszDmXPi9JGalKTyihuTSi08KLXKYxT+3uTc0NSCnJNYHM+OjruPIflYxMUSm7qMsGJCkhZUSnDW1g8YiGAsl8BEUsvEZRoSlysTV1k+E5eLRMZsloFEwrza1hJ+19gHazsrca/yjhfFF+B2UycCfLWIWfkqArQjLM791XW4uXUbnNlIdYpbC3j6QGEjKYXxNMsCEzU1ij0YrKyGnV33ybPQ7z8gbg2jN3wKvb8f0nOv43xeKVw1avB5KbkYYerFmzPHW0CNpRdRHTwDTQG+eL6tAb0+gVifcRkrvipmIjdLupIQWekUolJZ0dZ8XYaYuBx0G+X2cZg1BXYhITCeKcWlCf4whM7E67fK4f6CB37MY3OyubXH0uTGkjK6Mmka1bBUg/PfoJajJyg9V0djlxxmx7GQQpdnP3ZkLogvZD7zyNk7kRKTC6mzX7Dk7TpeRJWeE6VpZn7vHbp+oph4Dzdb9F24jOrJ03F9+svwfXYE3PILsSc6A1Myu7Bu0Q405rNBCi3cNXaPValGfKBgDDpuG5C04TDGTtyML7efgmGA4BAxB4GNVXA5Voiqs9Uwhc8ELwI2TQ2G32hbaAqKsGvFboRkGRATsQ03fjoPeLkC7k6S+J7Uq/IaO3M3e8B7NLraepAQmw3PgM1gFUD3gBmOC+Zi0o2r0OQXQemjscKd3HxkWPkjPfMSGrLT2FhTyYBSrqd8ExAJsOknvclo7NHZasCWjUew+8AFrF3xCtasmQ2HyDlQ7lr9jXFnVjkac1IZIJO6l9t/A3wUAbpPQGuPjpZuqQI79p7D6qhp+EuAAQB9e+n65ZcRTgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'United States',\n    code: '1',\n    iso: 'US',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERTc5MkI3RjE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERTc5MkI4MDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjIyMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRFNzkyQjdFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+60cYSwAAAyhJREFUeNrElN1PU3cYxz/tOQUBD/aNymtbUAq2IOiUWXmZA40Iy2BzcW53y7JlyZLtZuE/8NaY7Gbe7WJbdJnTDOdQCbLKrERUotgCSodQ7AsFpK28yKT7rfsL2gv7JCcn+eV3zpPv5/l+H9X2xp65SqtJGfr1Fg3vNPD02SIhfwRniwP3pdvsOVxPaCHGs7+DOA/VJs8crXXEs3P48OfTfMIcU+SRaqlMzm8SNut2VuefIxvyydZIxFbWyX35iviLNZRiPZJaxdLyCkoiQUyc6cwFTPvC9FRkcbJMy7JaTrmxHIuvxaZm5xW7+Jl3NkKRaRt5OVlMjvuoqa9gwr9AgS4PvTYP78hjdtVVEAw9J+Kdxv7Td+hL8tGTeslGg8Jeexk3/riLs62O+cU441NBDjbZGbg+SlNbPYvRF9zzzHCoycFA/yhvCtRqnZbr5a1YEjGm5S2po1ZXfRHVaCTlWLODq24v1eWFGPVbuXH5Dh3vORm88xhziR5zoZ5rl9y0dx/ggS/EzGSQs5Ua3s39h7CUlbri0mKdUGzmijBXqzBXYH4Z931fsmlf7zBvd+wjIigMDI/TcbyRvt+GOSgUZ62uU3S2h8IdRgrTQK1S2T6PyhpZ+aB9LxcF2hpbCUUF27hy4S+Of/wWfUMeykuNVIin9/xNuj9qYWR8juknIc5szNC1voA/DdSypayAhlor57/vp/NEC7OBRfpveek+0cwvP/7JsfedhEWcLg8+pOtkMxfOuTjc5WSrSc+S6ymSQYtGyk5dsVT9/4zbhZmu3Z5IztggXOwSZjvSuZ+hUR9mEan/KAz+PkJb5z7GngSYdXu46T9Ho3EL6ZSKnZ9Fax0W5aFrDNuB6mROA6El7BYTnns+bPt3srK2gV+QcIjIPRLzrxL3ZkLLfB0c40udRCAd1EfFNioxaSG+Sl2NmchSnCKjwh6HBWlzk/rd1uTyMOTn8MbuctRiieyqLKbKbqXs4gSvQmFephOnRCIRFW+F11yyp/3TtD/eSKjYTM4rjcZh110yUZlDPfnVqcwovkppRhRnDrX/2x+UjKDuJXcuE4r/FWAAjBMttNdoYOEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Uruguay',\n    code: '598',\n    iso: 'UY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERTc5MkI4NzE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERTc5MkI4ODE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRFNzkyQjg1MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRFNzkyQjg2MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+foYgAAAXJJREFUeNrsls9KAlEUxn93nCadUbISM03BWraofbRq07JV79GL5KZdqx6h1wjaBBkGQVCNWmo1M47jn7xdw4L2ji7qg3M5Bw5897sf53KElPIJyKpwmQ4SKmyhiJ1xgec6CE2jPxB0uwGWGSUet0Jh178TvxNwU74kqnuqEjTqt+SKu6zmN0nEzXCIh0NJq+XQ9yr41RM8547l1DrNh4CXxhs7u3uqS0OI0sSItdHheH1atQsM54ymfU3SUortMv3aKaZu0+tp4Sg25g26gUf98YpCPoKlfDVNQbV6z4IcMJCqR/VJeTRZxSMIITFiabr+B+22j+/6JJJ5Ws0HXpvP4SienxtlGaKZQ4bOOXajghVbwUgekCrsk8umx5crTZY4onQXN7Z5X87xVltHT/sMpWSgrVEoboUyTr/mOOi0CYLO1xwjA3Q9wuJSJgxed0QsmQE0ZgT1psd/TPG/x3/C458PZIpw9fHKk5jy6uN+CjAArpeUjQlCP/MAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Uzbekistan',\n    code: '998',\n    iso: 'UZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwNDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjFFMjIwNTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjAyMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjAzMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5O2LbgAAAeRJREFUeNrkkz1rFEEYx3/7fhd3c+EE0XAE0UZrG/E7JGhjZWHnZ0jhd7ARsbS2sRGLFIrfQBBBMIJwigkhyb14+zI7Oz4zFwSxWpHbwgdmZ/YZZn7z/z8zHk9ffgUyAh8mP6Afs33lEvvzgg8HJxAGuGgMF84lTKuaNcktak0WhZxWCqUNeLSKUNqmG81yRsOMvdu3GC9Kdl+/czC3odJLcC+h0g3DJEIbw7AXMVM1ioa2ZAueYUxGqXixfZNrGynXn+2BKEPGiLIt6a2y8aKgEPCJzJWi8rhQ7gB4LeVK+O5rcJbeOL/O97yE45mY3xdo7cBpFBD5HoM4JJGS2D4OPDZEeWChFt4yAnbu7YpLCUXFkWxw9+om87UeH8dHrA9SPIFMKu0U1jKfi+W1OJuLcqt2Ib3D2gO0aCG5WvoUxzx+8563k5w7ly/SDDIOrN1WdRKDrikCuWi2pmGEqRVTyeuqdLm2docPDz/LKrRdWDcNn17t8yX0eZD2hanFYp9K8tZqJWrjs3/bF1q7Gx78RY09M5+cuue0rDS/au728n5L/8vwjDFyk0hZcVjw9Ezx/wPuyOqF+fNyrSDCJ4/um1VDl+/l+VYnVoejdLRytQ7sN3QSPnQHzjqxWtq3LuA/BRgAxkzb8HD3VjsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Vanuatu',\n    code: '678',\n    iso: 'VU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwODE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjFFMjIwOTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjA2MTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjA3MTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+q4FzLAAAA2xJREFUeNq0lX9o1HUYx1/f7/2au7vdbdMLl2KzmT+oTUaQVjAhFbYKQ6SRqF3gwLKLCkKNsKyhYv/4h2RETlAQRAZO/+gHVlrLAn/NBvkjHJOam7Rzeafb/fw+Pd+7TpT+kDu3B54P932+3++9n+f9vJ/na1RRMbDTNd3/ckUVaRH6rQRZBBODiTRj2Uqk6wDMpZptZTUs9QY1AUsTSCo8msDEmLl/A/GrZ6GmNcpLiV4WRC/w89gtHnd4mW56cuAyEcCVDdDZBUe3wvkfwdk8TMvYeZ6LXqI3Oco8RzlTTTeWwo9nAmZWj3e3QNVs6FbgX3ZDTzcMNg2x6PY5mqOX6UsnqHf6CJmucUvgTgsTGVj/AZQ9osCnoXcfHDsCF54cYkG8h5XDVxjMpHnC4aPacOYEKOMBbJuvzKByioPw2xB4DEauwZ+H4esjFt/O+4vG2DnWRPuIWRbzNYGgJmCr312C2zMTU/eHl3loW11GygmZm8KSV+M5Wc1WBj7bAc8+pVo4AeHNkOp3E6GGSDDEZKV/TKySqo8tbHDK4HdBeeVFjzxT75Tfjgblp70VBUHnvGEu8sMhRK4hX3ypsYAdd4uPgDjwiVmk5yreGin3T/LAJ7vHaGly030mTU9ngNqWfxiJ3VtL3QzY8T48vwQOfgMDN3QSStg1Tvs48FWSjo98LF6U5ftTaT58bRKWyj2V/v8LN0ZUiAmt1Q+zVCFTkrqFHKUJzO6xNM5xSvt75bJrk1ckHpK9W7z3UD1rBnK4A0n3I8f2II868lRDUN1ftN8RVyGLoROVnLycZXlbLHc9tRp2bYflzTrjOueRCJyJKlFNM6FVea9wQTJb/K6+G9il/2eYJqmUhc3e56rmcCv88Tu8tV7nuk8fb1SZr6lVngMQVc5HtR+mxg2j+B4XLJ2xT4udusnWrYa+i7DiBejq1XC9An6qPieoqab05s08mI2XldLEVdgkH29QKsMQV6W2rYL9JzVYOw3atcIG5fyWVnc1/t8LD/bZzAFv1k218U3dVMPwzuvQcVyD0x7WTGbmAe19WgAcp8+0cf1XYi4P/u3tOp+dGqkOwVoFfPohFY0Ff4+qpqXoHt4XeFMrsu2g/vJOhjfqYGEoP0BDtycE8C5VBwZYV+dncU2+b9e1woz1wD28n/0rwAB0+lOwpXHd2QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Vatican',\n    code: '379',\n    iso: 'VA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUZDNzdDNzcxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUZDNzdDNzYxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODY0MDczNUVBM0I5QTUyOTc2RUZFMTAzNDJBQjczRUMiIHN0UmVmOmRvY3VtZW50SUQ9Ijg2NDA3MzVFQTNCOUE1Mjk3NkVGRTEwMzQyQUI3M0VDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oPgNXQAAAghJREFUeNrkVL9v00AUvvNvO44dbFNBkjYllIWUASbEQAeQEBszjP0D+B9g4p9ghY2VlQEhIdQGRwyIItFUSUOSJnbqn3dnH05IUISEVEdCDLzh3d17T989fXrfg0n/HjizQev12YsZ8NfsP4GmMKN8es7ZhxTCFIIULOIQAoxRduPyQs8R4NSlCfFOByhyOUEq6hWG5X/G4cznhqY06wsmJIzjKHCP0Ml77B8yohlbNwtaVZJlVjiXJJTj8kO7w/bgqIkRUo2yLMaR84mMba5Q5tXK9xC4E5SmqXVhc2N9MzfX7R77rjn8aH9wRrZAfdI1nINt9/hqyhjIt6Ovz5RvjxTn+SqEAMgyUh2yZpCWhrjcr103as2yekAg1hhHO+9I2IdsNC3Mq8ZsQlAKEAIFCcSj/darx5/3WmL1wa2HT6q1dQgmAMgk4Vkmf9coCMPhWxq2sDai3omR4iJ/3yV32oPjfjwCHtZ1zTLXdL2UGzoJulHvTeJ/mRwOQrLlmk/rOyWR7w77nV6HUgBPXZZn8SrQTLHOrt0lndCdXAzINVkkPOdlw6YSL85oUouXNkzLklfhOhMMXDzD8dh++aK3t29uXbmxu6tY5mzw59n8klloMjNBUS7f3qk0tkVNE9XCb5Xcaqtn1hplBMFqNH6plNLlf1eFXtb9n1L51xNd3lT/aF//EGAA9B/iH5xEuF4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Venezuela',\n    code: '58',\n    iso: 'VE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwQzE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGQTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjBBMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjBCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+suiZXgAAATpJREFUeNpi/H5RnIE2gImBZmDUaPoZzcigsJdGRrMQ8hUjw/ufDO9/+VTov33x/cfPv/LKfBvaLzDwsjAIcjAw/AdCEl0t+IGBhZHh02+Gm+9rpzt8/vHnz+9/v379+/HrrxA/2++//2XEOCsT9jGoCjAIsDG85iPFaOF3DF9+yyrxOZuLs7Iyffz2Z9X0KwyinCBPPP8WmqktxMf648ffo+ff3LnxgeGXOCkBwsLE8OkXz/c/Ho5SmblH3j/5yqDEx/AP7HkV/tVzr3MIsM2f5XDl9GuGDz8ZuEgKEOYX5rZSif6KWVUn/v3/z8DDxvD/P7Imhm9/GX7+ndRuvnbv04M7f5PiambBd//57rMIMIuI//vwi4EZQxnrXwZe5kdsQm/+fWZgeEvvxMd4XkR7NKOPGo0bAAQYAF2fdeRLtEqSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Vietnam',\n    code: '84',\n    iso: 'VN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3ODRDOUJGRDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGRTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4NEM5QkZCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc4NEM5QkZDMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MKjEOwAAAg1JREFUeNrMVTtrFVEQnvPae3fvPryPRLmInQn2WkhMIYggGEHs0gqC2FhraSE2grW9VgF/hZWPQmMqCZFAQhTxZu8jZ3fPjLPXRiSsm5iAU83Oznz7zTdzzop37Tk4HpNwbFYXWkjATKAVojYZXTPPTYSZRXbyHSkbdHSsBWRj2b1lZ5YtO/x4dNAlXUgu5+2rVgBB8S+C8BcLKHZLHOZYkGh2XDDnZIj+aTfa1Ebgr1c6phIDa7OmDKRPyaXcn3deH7m2s5TJHkJI7GggDvpnkRNki8geiDWK4ocIL9j+wzGMIVvXqoO4JZlp/97k5LL1zjhIcPtJkL4xzH3aXT3Wokmc/uVpsH47IgPeYianrWBWFngLOYS4cTfaeNxiTO7vIGNEkAE1Ytx65b+f76YvmqLLIRAK2BmueBzcfOmbCFWL9hW6ckOwVCtoF+lA735gj9QsqlPITrpm0m+6lThhgPBwy8drloq4k8/csBDT6K0ZvTYQY++ajXpFMdxX4dp7nRcyvpJ5F+3gub96Pfl4M/n+LDDn7Yklm7m/nJ0qaG5WAbUX851H4eqdhIGkorX7yfaDqL2QG4mUVx7hiku1hA5JJ5R+MiZwKiglwj2wIxWdy3EoioHgwR7meuIyHInJV+nxxJi/mwYb0NRu77NSAQkNFXLr6jGyCOV6wW8QVKr4Z/A//RUcwn4KMAD6MNV+pBmzeAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Wallis and Futuna',\n    code: '681',\n    iso: 'WF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU5MkY0Q0MxNzhDMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU5MkY0Q0IxNzhDMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQTQyMEE3MkQyMkZFM0NBMzRDNzNGM0VCOTZCQjUzQ0UiIHN0UmVmOmRvY3VtZW50SUQ9IkE0MjBBNzJEMjJGRTNDQTM0QzczRjNFQjk2QkI1M0NFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5wahWgAAAsdJREFUeNrEVUtrE1EUPudOMpOkNcmExsRgGyr1USRYUOrKFFTQhXWl0YUoLizWhdS0ttBCpdWuqhY3RRFUFBSh+heUdm9pKbopupPYR5o0j2YmmXu8k1RR6bSlULwMw33M+e53vvudO9jcPDo7m+zrOxaPR3lRS504TTNfjKZDmE5KuQIxhK02BtvWbLSpz/7hTuVng4Rsmg7ZAtcr9O12KBWpUCBuAK4mRPkciCERYAWLSMjEGLpcwJg5bwUt+1VXFmyqRwxKYoMaP9u9y3B7MLUMRpEkBRr2wlyCUwkJyzCEaMdAEObnQOwqK1boOB1tNTj3uBXV6+Ai+Pt3k2MRWWqRGGifZ5Thh96uWzQ/DwYvS4MU3Jkde1+IXZL21IEiowVvpPoQSGwlo2czmsgY/TUk2SRuGGKxvl6KthSGH1S9eeluPfM7ZmVqZunwEbmny/71m/FxglTv2g5ZdNQs2n15X5CFw1gXBmcVygp3OKFk8MQP952+Hc8ep8+2pl+8qgRkxicWmiJKb7d36B5mMlzXLbUun/Va6YgUdN1IJKpjMZ5Mpa9eJr9qqw1nWqKu2z2+wUERZiwvmydpDW3ZSNhA00THfb0NQsH8xSs8n3PeH1E7O8QkL+ogSeuZbwND06p5WeNByiYFkhSJ/L2ytWoUrpJMgOyH8fS+BsfII+fYu+ypkxXd0WYDzrfCGjlJiFRbm5+cTh1vccY71Y6bZhWOjgrd0eV0x84xRTas0W3rCA2hUP7125W2a9X9/Z6BgUq9e9rbWZUzd+E85Z5DIGBytyK30BixwAaQHaXpKezt9g3dFSpzXjIvDiYxwKWnT7QbcXn/ATD0XxfA5qFR2EMn4nC0GZJJphXIhKCKyhQI8E+TmNfA5bAsdEvosrfNdzJJxeIf95zocBS28/lEGQOnLZmvQkdVLW3G6f/8CrYR+qcAAwC0wiFWD6ebGgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Western Sahara',\n    code: '212',\n    iso: 'EH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNTkyRjRDRjE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTkyRjREMDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1OTJGNENEMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM1OTJGNENFMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+f+9yRAAAAhJJREFUeNrElEFIlEEYht8Z/zWyRNiU2EoQIqJdyUjEkxcDD1qEBHaIwFMRRGQH9RIR1LFA8Fi0bODFi4fyWLGnCJMWkgo2aFeWbNEOq8uu/us/vaNjsLm7/cbu3wfPDDMM837zzseHMUDhf5DjMEvavBZ+wyFDvpLzHgpLyXGB+MgUeQhvQutuiX4nCTJKXpBWL4R11JE8mSc95DW5WEvhBmB1ZyFMAp9IPQlrB6RUDFQbWSoby1ifJLeVEpnBQQdra07FgonHFSIR98VVzgr9cpssMbuFmRn53u+XmelpYYwpIheNio/d3cLu6hJIpUqe+RP5t7/Qz9ynk7BtxIaG8KWvD3Y6XXQmMT6OAwMDyCWTeNfRgfTEBJx83l1xuanCTZ1AKgUUCsXJZbPYHwyisLyMnysrWE8kIHy+iveJOYD9A41lD5B1Mx9/9Bgtd0Z2nVl9OYtvw8NoC4dRHzgCq6UZda3H/k3YMf98mDSdPqcOTj1XCAVE2ZtefQDi7H/XLrly0Cq1qY08RAJkMiTw+b5/81koYFW8qffMNi5DRFnaDWahzD+eIBvkbj/wRDfwG6rqDeS3sGNaZ5C8bQJuXQFiZ7lIm5Ymqyts7VjbTI6Sp6eAm1eZiN5Y3Gvt70FYi7abR12/AET6zWLRVFeNQmRp9Xzj9itjndz5URtrdwk/OAl17zKLSpfxEjyLXwIMABpOQfz9h5ChAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Yemen',\n    code: '967',\n    iso: 'YE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNTkyRjREMzE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTkyRjRENDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1OTJGNEQxMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM1OTJGNEQyMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ACJHhgAAAE1JREFUeNpifK+t+59hAAATwwCBUYtHLaYZYPz///9HIM0HxPTKVoxA/IkFymBAouli+WjiohtgQUpU9Exc/xnpaOFoyTVq8TC3GCDAAFQ1DF5mtiLSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Zambia',\n    code: '260',\n    iso: 'ZM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTY2NjI2QzE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTY2NjI2RDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNjY2MjZBMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNjY2MjZCMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b9h8+AAAAXJJREFUeNrslLtKA0EUhr+ZzW7MbYkmMQoqVhZWilrb+Q4i2PgGPoCVlbVoY20r+AQigoKFlWDnhaAYMCYm0d3s7oyzwScYsBEPpzicA9/8/GdmxOQeFiE0sUMgySa4GgWRxFOI4TR00iKDVSQOhZCy4j5H5EGMH9F3CYa8fEAttkV3XGotDhrgc1CimmehzX6JCcFSl/V3jnK2aH/AY4U9wc4rh02KRaI6Kw3q79QLXPmc1RB2Xkvjr+TFZWTA8gfzfTZiyh+cCk5nufYpCFvVWpAIKgmhx8UUlyHVWx7GOZ7B7LQUpSu1RJsbEjnp0kyRj6gKTuZo5Sgq4oBEEtipNpKfS2yfZzdust1R/Rqrrebnkznkjc1Vdte4b/FliTbpMd/MLN5lGVNvStH5TLsw2WJaMx3RE0gbN0gNbeeMqapdVs++0uJnFBqeQ0emKfm1+Ef/o/8i2v57Gjj0PN139ZfUYgSRpP04Q2/44vvwLcAAr1qGyCgX8xUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Zimbabwe',\n    code: '263',\n    iso: 'ZW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTY2NjI3MDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTY2NjI3MTE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNjY2MjZFMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNjY2MjZGMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WOc8GAAAAtBJREFUeNq0lmtIk1EYx/+7b7pJ2LxfKv1QqZVBEERfEsKCyi5ghqldmEk1urAuUBGYSRCChMrQkqAsM8IuokVRUeAFBmVhsVa6OWeba7rNy9bedzudN9KK+ra9f3jOC88D7++c55zzPEfQ2NBkO3xLo5LnAzmZcvjGAAjBuwSEyvCkH2U1xfiwcAC5eSK4RqUIBrkov2Av/aoCowQ7daXo9N1ESRngD8gwNUEjIp7Bs47a6mtwWzU4UU4QvYg6LPzA/wFzau924JV+PTQF75G1gzqmqUU49X+Bpz1vIXZFQ2a2YiAnD/pLB5Dtb0TFMhqMkWEyEIJYEGGwj7EjOJiLQAeBVTeGFY6vYOMTcf7cdbir9uMIQkifp4aZJRAREjlwiA6M8SRC1ssY0gJy0UZk9DykETHajGZ0bivA9o/vsCVVCchk4YOD7nHvtzM6lffuY4jzY5BS6YJEIoK92gnv/QVQSGVIqzwKY3E59BoN/M1XkaoUQiSXh0cmLOud6nxAPsVnEstmEGYwmcz0JRH/SAKx6UCMq5PITPdrMiv90+cEsXFcrsMzLtXcD1lqjrYUMv1SSkx31GS4PZ74ekEmnGdJiPxWi+ENgTohbLB4buXUFEvT4DTYwEg89PqEYDUBCUnZP2/RMLX6Q1qMNdThVBS92rGKsDI9B2bNk2BeuKFcIoGSxNEt8CDoFiImvQhdQ3a0FG7FJkMfipIpNUoRuVPNWkfhHzFBvmoxnQ3tEhIp4BHjYs0jWC5ocRAuZCnn4wvLFTLCT+XiZB4H6uprkWg5Bl0GdagV8DDBiFXP/4I7uj7jWWspCtf1YE0JdQS4veC5VjdfuQdL/y6crmDoYeOW/qs/C/gC03HPcS1u2+uwdx/XkaTwOgV/HD8eHgKm3iGUVO1GX2w3cjYAEw4FmAC/LxFB6402W0VTmcq/1oeVy2X4bheCCAn41g8BBgCi8X7r2R04cwAAAABJRU5ErkJggg=='\n  }\n];\n\nexport default FlagsList;\n","import classNames from 'classnames';\nimport React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent as ReactMouseEvent,\n  ReactNode,\n  Ref,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Dropdown, DropdownElement, DropdownOption, DropdownOptionProps, DropdownSection } from '@/components/dropdown';\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport FlagsList from './resources/config';\nexport const PhoneCountryCodes = FlagsList.map((l) => l.code);\nexport type PhoneCountryCode = (typeof PhoneCountryCodes)[number];\nexport const PhoneCountryISOs = FlagsList.map((l) => l.iso);\nexport type PhoneCountryISO = (typeof PhoneCountryISOs)[number];\n\nimport { CountryPhoneProps } from './country-phone.model';\nimport './input-phone.scss';\n\nexport interface InputPhoneElement extends HTMLInputElement {\n  iso: PhoneCountryISO;\n  code: PhoneCountryCode;\n}\n\nexport interface InputPhoneProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Define de initial country selected using the country ISO. Will override defaultCode prop.\n   */\n  defaultISO?: PhoneCountryISO;\n  /**\n   *  Define de initial country selected using the country phone code (without +). Will be overridden by defaultISO prop.\n   */\n  defaultCode?: PhoneCountryCode;\n  /**\n   * Alternative text that labels the list of country flag options of the dropdown list.\n   */\n  dropdownAriaLabel?: string;\n  /**\n   * Enable the search bar to filter items.\n   */\n  searchable?: BooleanProp;\n  /**\n   * Placeholder text for input search bar.\n   */\n  searchInputPlaceholder?: string;\n  /**\n   * Accessible text for the input search bar.\n   */\n  searchInputAriaLabel?: string;\n  /**\n   *  Text to show when filtering presents no results.\n   */\n  searchNoResultsText?: string;\n  /**\n   *  Number of visible items to display in the DropdownList. Remaining items will be accessible via scroll bar.\n   */\n  visibleCount?: number;\n  /**\n   *  Callback to run whenever the input value changes.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n  /**\n   *  Callback to run whenever the country dropdown value changes.\n   */\n  onCountryChange?: (country: CountryPhoneProps) => void;\n  /**\n   *  allow you to say what is the acronym to Direct Dialing In, the default is DDI\n   */\n  acronymForDirectDialing?: string;\n}\n\nconst InputPhone: FC<InputPhoneProps> = ({\n  ref = null,\n  label,\n  defaultISO,\n  defaultCode,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  className = '',\n  searchInputAriaLabel,\n  searchInputPlaceholder,\n  searchNoResultsText,\n  visibleCount,\n  required = true,\n  searchable,\n  dropdownAriaLabel,\n  acronymForDirectDialing = 'DDI',\n\n  onChange,\n  onCountryChange,\n\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const dropdownRef = useRef<DropdownElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  let initial: CountryPhoneProps = FlagsList[0];\n\n  const searchForProp = defaultISO ?? defaultCode;\n\n  if (searchForProp) {\n    initial =\n      FlagsList.find((country) => {\n        return country.code === searchForProp || country.iso.toLocaleLowerCase() === searchForProp.toLocaleLowerCase();\n      }) ?? initial;\n  }\n\n  const [currentCountry, setCurrentCountry] = useState<CountryPhoneProps>(initial);\n\n  //  Necessary to override the default initial value and currentCountry in case of initial code or iso values changed\n  useEffect(() => {\n    setCurrentCountry(initial);\n  }, [initial]);\n\n  useExpandedRef<InputPhoneElement>(\n    ref as Ref<InputPhoneElement>,\n    inputRef,\n    {\n      iso: currentCountry.iso,\n      code: currentCountry.code\n    } as InputPhoneElement,\n    [propsClone, inputRef.current, currentCountry]\n  );\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    if (wrapperRef.current?.contains(document.activeElement)) {\n      inputRef.current?.focus();\n    }\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const onDropdownChange = (options: DropdownOptionProps[]) => {\n    const selectedCountry = FlagsList.find((f) => f.iso === options[0].value);\n\n    if (selectedCountry) {\n      const newCountry: CountryPhoneProps = { ...selectedCountry };\n\n      setCurrentCountry(newCountry);\n\n      onCountryChange?.(newCountry);\n    }\n  };\n\n  const handleInputKeydownCapture = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const keysWhitelist = [\n      'Enter',\n      'NumpadEnter',\n      'Tab',\n      'ArrowUp',\n      'ArrowDown',\n      'ArrowLeft',\n      'ArrowRight',\n      'Backspace',\n      'Delete',\n      'Home',\n      'End'\n    ];\n\n    if (keysWhitelist.indexOf(evt.code) >= 0) {\n      return;\n    }\n\n    const isNumeric = /\\d/.test(evt.key);\n\n    if (!isNumeric) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleInputChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n\n    setHasValue(value.length > 0);\n\n    onChange?.(evt);\n  };\n\n  const toggleVisibility = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const handleDropdownControlKeydown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    const code = evt.code;\n\n    if (code === 'Escape' && dropdownRef.current?.visibility) {\n      dropdownRef.current.hide();\n    }\n\n    if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {\n      toggleVisibility();\n    }\n  };\n\n  const handleDropdownControlClick = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    if (typeof evt.detail === 'number' && evt.detail === 0) {\n      //  EVENT DETAIL IS THE NUMBER OF CLICKS. KEYBOARD DOES NOT ADD A CLICK COUNTER.\n      //  KEYBOARD IS HANDLED ON KEYDOWN\n      return;\n    }\n\n    toggleVisibility();\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (!dropdownRef.current?.visibility) {\n        return;\n      }\n\n      if (!wrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  const wrapperClassNames = classNames('agora-input-phone', className, darkModeClass);\n\n  const inputWrapperClassNames = classNames('input-phone-wrapper', darkModeClass, {\n    'has-value': hasValue,\n    'disabled': propsClone.disabled,\n    'readonly': propsClone.readOnly,\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const labelClasses = classNames('input-phone-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-phone-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-phone-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n      {/* Label */}\n      {label && !stringToBoolean(hideLabel) && (\n        <label htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      )}\n\n      {/* Input wrapper */}\n      <div className={inputWrapperClassNames}>\n        <button\n          type=\"button\"\n          className=\"country-dropdown-control\"\n          ref={buttonRef}\n          tabIndex={propsClone.disabled || propsClone.readOnly ? -1 : 0}\n          onClick={handleDropdownControlClick}\n          onKeyDown={handleDropdownControlKeydown}\n          role=\"combobox\"\n          aria-controls={`${propsClone.id}-dropdown-container`}\n          aria-expanded={isDropdownVisible}\n          aria-haspopup=\"listbox\"\n          aria-required={isRequired}\n          aria-label={`${acronymForDirectDialing} ${currentCountry?.country} +${currentCountry?.code}`}\n          disabled={propsClone.disabled}\n        >\n          <img className=\"shadow-center-lower\" src={`${currentCountry.flag}`} alt={currentCountry.country} width={26} aria-hidden />\n          <Icon name=\"agora-solid-arrow-down\" aria-hidden className=\"ml-8\" />\n        </button>\n\n        <div className=\"input-text-wrapper\">\n          <div className=\"country-code\" id={`input-phone-${propsClone.id}-country-code`} tabIndex={0}>\n            <span>(+{currentCountry?.code})</span>\n            <span className=\"sr-only\" aria-live=\"polite\">{`${currentCountry?.country}`}</span>\n          </div>\n\n          <input\n            {...propsClone}\n            ref={inputRef}\n            type=\"tel\"\n            id={propsClone.id}\n            className=\"input-text\"\n            disabled={propsClone.disabled}\n            readOnly={propsClone.readOnly}\n            required={isRequired}\n            aria-invalid={stringToBoolean(hasError)}\n            aria-disabled={stringToBoolean(propsClone.disabled)}\n            aria-required={isRequired}\n            aria-describedby={[`input-phone-${propsClone.id}-country-code`, inputAriaDescribedBy].filter(Boolean).join(' ')}\n            onChange={handleInputChange}\n            onKeyDownCapture={handleInputKeydownCapture}\n          />\n        </div>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            onHide={onHide}\n            onShow={onShow}\n            onChange={onDropdownChange}\n            type=\"text\"\n            searchable={searchable}\n            searchAriaLabel={searchInputAriaLabel}\n            searchPlaceholder={searchInputPlaceholder}\n            noSearchResults={searchNoResultsText}\n            optionsVisible={visibleCount}\n            aria-label={dropdownAriaLabel}\n            hideSectionNames\n          >\n            <DropdownSection label=\"phones\" name={`input-phone-${propsClone.id}-countries-dropdown-section`}>\n              {FlagsList.map((country, index) => {\n                const optionIndex = `input-phone-${propsClone.id}-countries-dropdown-section-${index}`;\n                return (\n                  <DropdownOption\n                    key={optionIndex}\n                    value={country.iso}\n                    selected={country.iso.toLocaleLowerCase() === currentCountry.iso.toLocaleLowerCase()}\n                    hasIcon\n                    icon={country.flag}\n                    disabled={country.code === currentCountry.code}\n                  >{`(+${country.code}) ${country.country}`}</DropdownOption>\n                );\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-phone-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-phone-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputPhone };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, MouseEvent, ReactNode, Ref, useEffect, useId, useRef, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './input-range.scss';\n\nexport type RangeType = 'single' | 'double';\n\nexport interface InputRangeProps extends Omit<ComponentProps<'input'>, 'value' | 'onChange'> {\n  /**\n   *  Input label text.\n   */\n  label?: string;\n  /**\n   *  Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  The type of the range (single or double).\n   */\n  type?: RangeType;\n  /**\n   *  Disables the input range.\n   */\n  disabled?: boolean;\n  /**\n   *  The value or values for the input range. It can be a number array with 1 or 2 positions according tp the type specified.\n   */\n  value?: number[];\n  /**\n   *  The minimum value to accept for this input. It does not allow the insertion of values lower than this minimum value.\n   *  If a value is specified for min isn't a valid number, the input has no minimum value.\n   *  This value must be less than or equal to the value of the **max** attribute.\n   */\n  min: number | string;\n  /**\n   *  The maximum value to accept for this input. It does not allow the insertion of values greater than this max value.\n   *  If the value of the max attribute isn't a number, then the element has no maximum value.\n   *  This value must be greater than or equal to the value of the **min** attribute.\n   */\n  max: number | string;\n  /**\n   *  Custom onChange event handler for double range type.\n   *  Will be called with an array of values.\n   */\n  onChange?: (values: number[]) => void;\n  /**\n   *  Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   *  Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   *  Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   *  Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   *  Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n}\n\nexport interface InputRangeElement extends HTMLDivElement {\n  sliders: HTMLInputElement[];\n}\n\nconst InputRange: FC<InputRangeProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  type = 'single',\n  disabled,\n\n  value = [0, 0],\n\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const [currentVal, setCurrentVal] = useState<number[]>([value[0], value[1]]);\n\n  const prevPropValue = useRef<number[]>(value);\n\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const innerRefs1 = useRef<HTMLInputElement>(null);\n  const innerRefs2 = useRef<HTMLInputElement>(null);\n\n  useExpandedRef<InputRangeElement>(\n    ref as Ref<InputRangeElement>,\n    containerRef,\n    {\n      sliders: type === 'single' ? [innerRefs1.current] : [innerRefs1.current, innerRefs2.current]\n    } as InputRangeElement,\n    [type, containerRef.current, innerRefs1.current, innerRefs2.current]\n  );\n\n  useEffect(() => {\n    if (prevPropValue.current[0] !== value[0] || prevPropValue.current[1] !== value[1]) {\n      const values = [...value];\n\n      if (type === 'single') {\n        values[1] = Number(propsClone.max);\n      }\n\n      setCurrentVal(values);\n\n      prevPropValue.current = values;\n    }\n  }, [value]);\n\n  const handleRangeChange = (values: number[]): void => {\n    const [firstValue, secondValue] = values;\n\n    if (type === 'single') {\n      setCurrentVal(values);\n    }\n\n    if (type === 'double') {\n      if (firstValue > secondValue || secondValue < firstValue || firstValue === secondValue) {\n        return;\n      }\n      setCurrentVal(values);\n    }\n\n    onChange?.(values);\n  };\n\n  const handleMouseUp = () => {\n    innerRefs1.current?.classList.remove('z-[2]');\n    innerRefs2.current?.classList.remove('z-[2]');\n  };\n\n  const handleMouseDown = (evt: MouseEvent<HTMLInputElement>) => {\n    handleMouseUp();\n\n    const target = evt.target as HTMLInputElement;\n    target.classList.add('z-[2]');\n  };\n\n  const containerClassNames = classNames('agora-input-range', {\n    'has-label': !stringToBoolean(hideLabel),\n    'has-error': stringToBoolean(hasError)\n  });\n\n  const [currentBgVal, setCurrentBgVal] = useState<string>('#FFFFFF');\n\n  useEffect(() => {\n    const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--color-primary-600');\n    const secondaryColor = getComputedStyle(document.documentElement).getPropertyValue('--color-neutral-200');\n    const min = Number(propsClone.min);\n    const max = Number(propsClone.max);\n\n    if (type === 'single' && !disabled) {\n      let percent = ((currentVal[0] - min) / (max - min)) * 100;\n      percent = Math.min(percent, 100); // Round to 100% if the value is greater than the maximum\n      setCurrentBgVal(`linear-gradient(to right, ${primaryColor} ${percent}%, ${secondaryColor} ${percent}%, ${secondaryColor}  100%)`);\n      return;\n    }\n\n    if (type === 'double' && !disabled) {\n      let percent0 = ((currentVal[0] - min) / (max - min)) * 100;\n      let percent1 = ((currentVal[1] - min) / (max - min)) * 100;\n      percent0 = Math.min(percent0, 100); // Round to 100% if the value is greater than the maximum\n      percent1 = Math.min(percent1, 100); // Round to 100% if the value is greater than the maximum\n\n      setCurrentBgVal(\n        `linear-gradient(to right, ${secondaryColor} ${percent0}%, ${primaryColor} ${percent0}%, ${primaryColor} ${percent1}%, ${secondaryColor} ${percent1}%)`\n      );\n      return;\n    }\n\n    setCurrentBgVal(secondaryColor);\n  }, [propsClone]);\n\n  const RangeStyle = {\n    background: currentBgVal\n  };\n\n  const RailClassName = classNames('rail absolute w-full h-[4px] left-[0px] z-[0]');\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-range-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-range-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div className={containerClassNames} ref={containerRef}>\n      <label hidden={stringToBoolean(hideLabel)} htmlFor={`${propsClone.id}-0`} className=\"input-range-label\">\n        {label}\n      </label>\n\n      <div className=\"rail-container\">\n        <div className={RailClassName} style={RangeStyle} />\n        <input\n          {...props}\n          className=\"inner-input-range\"\n          type=\"range\"\n          id={`${propsClone.id}-0`}\n          disabled={disabled}\n          onChange={(event) => handleRangeChange([Number(event.target.value), currentVal[1]])}\n          value={currentVal[0]}\n          ref={innerRefs1}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n        />\n\n        <input\n          {...props}\n          className=\"inner-input-range\"\n          hidden={type === 'single'}\n          type=\"range\"\n          id={`${propsClone.id}-1`}\n          disabled={disabled}\n          onChange={(event) => handleRangeChange([currentVal[0], Number(event.target.value)])}\n          value={currentVal[1]}\n          ref={innerRefs2}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n        />\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback id={`input-range-${propsClone.id}-feedback`} feedbackState={feedbackState} feedbackText={feedbackText} className=\"mt-0\" />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-range-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          className=\"mt-0\"\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputRange };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\nimport './input-search.scss';\n\nexport interface InputSearchProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n}\n\nconst InputSearch: FC<InputSearchProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  className,\n  required = true,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-search-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': !!propsClone.disabled,\n        'has-error': stringToBoolean(hasError),\n\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // search input component classes\n      inputClasses: classNames(\n        'agora-input-search',\n        'bg-transparent',\n        {\n          'has-leading-icon': hasIcon && icon?.indexOf('agora-solid') === 0, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-search-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-search-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-search-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Search input wrapper */}\n      <div className=\"input-wrapper flex relative items-center rounded-4 bg-white z-[1]\">\n        <input\n          {...propsClone}\n          type=\"search\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && icon?.startsWith('agora-solid') && (\n          <div className={leadingIconWrapperClasses}>\n            <Icon name={icon} aria-hidden />\n          </div>\n        )}\n\n        <div className=\"search-icon bg-transparent\">\n          <Icon name=\"agora-line-search\" aria-hidden className=\"icon-search-default\" />\n          <Icon name=\"agora-solid-search\" aria-hidden className=\"icon-search-hover\" />\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-search-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-search-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputSearch };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  ReactNode,\n  Ref,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\n\nimport { Dropdown, DropdownElement, DropdownOptionProps, DropdownSectionProps, DropdownType } from '@/components/dropdown';\nimport { Pill } from '@/components/pill';\nimport './input-select.scss';\n\nexport interface InputSelectRef {\n  /**\n   * Array containing the selected options in the dropdown.\n   */\n  selectedOptions: DropdownOptionProps[];\n  /**\n   * Reset the selection state within the component.\n   */\n  clearSelectedOptions: () => void;\n}\n\nconst getEnabledItemsCount = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  let count = 0;\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild)) {\n          count = optionChild.props.disabled ? count : count + 1;\n        }\n      });\n    }\n  });\n\n  return count;\n};\n\nconst getSelectedData = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  const newSelectedData = [] as DropdownOptionProps[];\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild)) {\n          if (optionChild.props.selected) {\n            newSelectedData.push(optionChild.props);\n          }\n        }\n      });\n    }\n  });\n\n  return newSelectedData;\n};\n\nexport interface InputSelectProps extends Omit<ComponentProps<'select'>, 'options' | 'onChange'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Input placeholder.\n   */\n  placeholder?: string;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Pill label to be draw if specified.\n   */\n  pillLabel?: ReactNode;\n  /**\n   * Alternative text for the dropdown that will be rendered.\n   */\n  dropdownAriaLabel?: string;\n  /**\n   *  Number of visible items to display in the DropdownList. Remaining items will be accessible via scroll bar.\n   */\n  visibleCount?: number;\n  /**\n   *  Toggles visibility on section names. It also removes the name from accessibility tree.\n   */\n  hideSectionNames?: BooleanProp;\n  /**\n   *   Event triggered whenever selected value or values changes.\n   */\n  onChange?: (options: DropdownOptionProps[]) => void;\n  /**\n   *  Select All item text to be rendered.\n   */\n  selectAllLabel?: string;\n  /**\n   *  Enable the search bar to filter items.\n   */\n  searchable?: BooleanProp;\n  /**\n   *  Placeholder text for input search bar.\n   */\n  searchInputPlaceholder?: string;\n  /**\n   *  Accessible text for the input search bar.\n   */\n  searchInputAriaLabel?: string;\n  /**\n   *  Event triggered whenever the input search value changes.\n   */\n  onSearchInputChange?: (value: string) => void;\n  /**\n   *  Text to show when filtering presents no results.\n   */\n  searchNoResultsText?: string;\n  /**\n   * Text placed as Select all options item\n   */\n  allSelectedLabel?: string;\n  /**\n   * Initial template structure for multiple items selections text output\n   */\n  pluralSelectedPlaceholder?: string;\n  /**\n   * Type of options to render\n   */\n  type?: DropdownType;\n  /**\n   * Section list of dropdown options to render.\n   */\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[];\n}\n\nconst InputSelect: FC<InputSelectProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  placeholder = '',\n  pluralSelectedPlaceholder = '',\n  visibleCount = 4,\n  hideSectionNames,\n  hasIcon,\n  icon,\n  pillLabel,\n  hasFeedback,\n  feedbackText,\n  feedbackState,\n  errorFeedbackText,\n  darkMode,\n  hasError,\n  required = true,\n  onChange,\n  searchable,\n  selectAllLabel,\n  allSelectedLabel = '',\n  searchInputPlaceholder,\n  searchInputAriaLabel,\n  searchNoResultsText,\n  children = [],\n  onSearchInputChange,\n  type = 'text',\n  dropdownAriaLabel,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const controlWrapperRef = useRef<HTMLDivElement>(null);\n\n  const controlRef = useRef<HTMLDivElement>(null);\n\n  const dropdownRef = useRef<DropdownElement>(null);\n\n  //  INITIALIZE SELECTED VALUES\n  const [selectedData, setSelectedData] = useState<DropdownOptionProps[]>([]);\n\n  const isRequired = props.disabled ? false : required;\n\n  const resetSelection = () => {\n    setSelectedData([]);\n    onChange?.([]);\n  };\n\n  useImperativeHandle(ref, () => {\n    return {\n      selectedOptions: selectedData,\n      clearSelectedOptions: resetSelection\n    } as InputSelectRef & HTMLSelectElement;\n  }, [selectedData]);\n\n  const mainWrapperClasses = classNames(\n    'agora-input-select',\n    { dark: stringToBoolean(darkMode) },\n    {\n      'disabled': stringToBoolean(propsClone.disabled),\n      'has-value': selectedData.length > 0,\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    }\n  );\n\n  const controlClasses = classNames('agora-input-select-control', {\n    'is-overlay-open': isDropdownVisible,\n    'has-leading-icon': hasIcon && icon?.indexOf('agora-solid') === 0 // allowing only solid family icon\n  });\n\n  useEffect(() => {\n    const selection = getSelectedData(children);\n    setSelectedData(selection);\n  }, [children]);\n\n  const enabledItemsCount = getEnabledItemsCount(children);\n\n  const stringOutputMemo = useMemo(() => {\n    const allItemsSelected = selectedData.length === enabledItemsCount;\n\n    //  Nothing selected\n    if (selectedData.length < 1) {\n      return placeholder;\n    }\n\n    //  Exactly one option selected\n    if (selectedData.length === 1) {\n      return selectedData[0].children?.toString() ?? '';\n    }\n\n    //  More than one option selected but not all selected\n    if (!allItemsSelected) {\n      return `${selectedData.length} ${pluralSelectedPlaceholder}`;\n    }\n\n    //  All options selected\n    return allSelectedLabel;\n  }, [placeholder, pluralSelectedPlaceholder, allSelectedLabel, selectedData]);\n\n  const onClickLabel = () => {\n    if (!propsClone.disabled) {\n      controlRef.current?.focus();\n    }\n  };\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    controlRef.current?.focus();\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const onDropDownChange = (values: DropdownOptionProps[]) => {\n    setSelectedData(values);\n    onChange?.(values);\n  };\n\n  const toggleDropdown = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const onDropDownClickHandler = () => {\n    toggleDropdown();\n  };\n\n  const onDropdownControlKeyDownHandler = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const code = evt.code;\n\n    if (code === 'Enter' || code === 'NumpadEnter' || code === 'Space') {\n      toggleDropdown();\n    }\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (dropdownRef.current?.visibility && !controlWrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const labelClasses = classNames('agora-input-select-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-select-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-select-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div className={mainWrapperClasses} hidden={!!propsClone.hidden}>\n      {!stringToBoolean(hideLabel) && (\n        <label\n          id={`agora-input-select-${propsClone.id}-control-label`}\n          htmlFor={`agora-input-select-${propsClone.id}-control`}\n          className={labelClasses}\n          onClickCapture={onClickLabel}\n        >\n          {label}\n        </label>\n      )}\n\n      <div className=\"agora-input-select-control-wrapper\" ref={controlWrapperRef}>\n        <div\n          ref={controlRef}\n          id={`agora-input-select-${propsClone.id}-control`}\n          aria-labelledby={`agora-input-select-${propsClone.id}-control-label`}\n          role=\"combobox\"\n          aria-invalid={stringToBoolean(hasError)}\n          aria-disabled={stringToBoolean(propsClone.disabled)}\n          aria-expanded={isDropdownVisible}\n          aria-controls={propsClone.id}\n          aria-required={isRequired}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          className={controlClasses}\n          tabIndex={propsClone.disabled ? -1 : 0}\n          onClick={onDropDownClickHandler}\n          onKeyDown={onDropdownControlKeyDownHandler}\n        >\n          <div className=\"content\">\n            {hasIcon && icon?.startsWith('agora-solid') && (\n              <div className=\"input-icon input-leading-icon\">\n                <Icon name={icon} aria-hidden />\n              </div>\n            )}\n\n            <span className=\"selected-text\">{stringOutputMemo}</span>\n\n            {pillLabel && (\n              <Pill size=\"large\" appearance=\"solid\" variant=\"neutral\" darkMode={darkMode}>\n                {pillLabel}\n              </Pill>\n            )}\n          </div>\n\n          <div className=\"indicator\">\n            <Icon name=\"agora-solid-arrow-down\" aria-hidden />\n          </div>\n        </div>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            id={propsClone.id}\n            aria-label={dropdownAriaLabel}\n            type={type}\n            selectAllLabel={selectAllLabel}\n            optionsVisible={visibleCount}\n            hideSectionNames={hideSectionNames}\n            searchable={searchable}\n            searchAriaLabel={searchInputAriaLabel}\n            searchPlaceholder={searchInputPlaceholder}\n            noSearchResults={searchNoResultsText}\n            onSearchChange={onSearchInputChange}\n            onChange={onDropDownChange}\n            onHide={onHide}\n            onShow={onShow}\n          >\n            {children}\n          </Dropdown>\n        </div>\n      </div>\n\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-select-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-select-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputSelect };\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\n\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-text.scss';\n\nexport interface InputTextProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n}\n\nconst InputText: FC<InputTextProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  className,\n  required = true,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames(\n        'agora-input-text-wrapper',\n        { dark: stringToBoolean(darkMode) },\n        {\n          'flex flex-col': !propsClone.hidden,\n          'input-disabled': !!propsClone.disabled,\n\n          'has-error': stringToBoolean(hasError),\n          'has-feedback': stringToBoolean(hasFeedback),\n          ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n        }\n      ),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-text',\n        {\n          'has-leading-icon': icon?.startsWith('agora-solid'), // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-text-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-text-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-text-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\">\n        <input\n          {...propsClone}\n          type=\"text\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && icon?.startsWith('agora-solid') && (\n          <div className={leadingIconWrapperClasses}>\n            <Icon name={icon} aria-hidden />\n          </div>\n        )}\n      </div>\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-text-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-text-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputText };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-textarea.scss';\n\nexport interface InputTextAreaProps extends ComponentProps<'textarea'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines if the char counter on right corner should or should not be visible.\n   */\n  showCharCounter?: BooleanProp;\n}\n\nconst InputTextArea: FC<InputTextAreaProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  showCharCounter,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  className,\n  required = true,\n  onChange: onChangeFromProps,\n  value: valueFromProps,\n  defaultValue,\n  ...props\n}) => {\n  // Controlled and Uncontrolled management\n  const isControlled = typeof valueFromProps != 'undefined';\n  const hasDefaultValue = typeof defaultValue != 'undefined';\n\n  const [internalValue, setInternalValue] = useState(hasDefaultValue ? defaultValue : '');\n\n  const value = isControlled ? valueFromProps : internalValue;\n\n  // Overrides onChange\n  const onChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n    // When the user types, calls onChangeFromProps if it exists.\n    // Do this even if there is no value from props (and the component is uncontrolled.)\n    if (onChangeFromProps) {\n      onChangeFromProps(e);\n    }\n\n    // If the component is uncontrolled, updates the internal value.\n    if (!isControlled) {\n      setInternalValue(e.target.value);\n    }\n  };\n\n  const generatedId = useId();\n\n  const propsClone = { ...props, value };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  propsClone.rows = Math.max(propsClone.rows ?? 0, 3);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLTextAreaElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange(evt);\n  };\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-textarea-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': propsClone.disabled,\n        'has-error': stringToBoolean(hasError),\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames('input-label-wrapper', 'flex', 'items-end', {\n        'mb-8': label && !stringToBoolean(hideLabel),\n        'justify-end': !label || stringToBoolean(hideLabel),\n        'justify-between': label && !stringToBoolean(hideLabel)\n      }),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-textarea',\n        {\n          'has-value': hasValue\n        },\n        className\n      )\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-textarea-label', darkModeClass);\n\n  const charCounterClasses = classNames('char-counter', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-textarea-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-textarea-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label & Hint Text Wrapper */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\">\n        <textarea\n          {...propsClone}\n          className={inputClasses}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          required={isRequired}\n          ref={ref}\n          onChange={handleChangeEvent}\n          value={value}\n        />\n      </div>\n\n      {/* Feedbacks && CharCounter */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError) || stringToBoolean(showCharCounter)) && (\n        <div className=\"flex justify-between\">\n          <div>\n            {/* Feedback */}\n            {stringToBoolean(hasFeedback) && feedbackText && (\n              <Feedback\n                id={`input-textarea-${propsClone.id}-feedback`}\n                feedbackState={feedbackState}\n                feedbackText={feedbackText}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            )}\n\n            {/* Error Feedback */}\n            {stringToBoolean(hasError) && errorFeedbackText && (\n              <Feedback\n                id={`input-textarea-${propsClone.id}-error-feedback`}\n                feedbackState=\"danger\"\n                feedbackText={errorFeedbackText}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            )}\n          </div>\n\n          {/* CharCounter */}\n          {stringToBoolean(showCharCounter) && (\n            <div className={charCounterClasses}>\n              <span>{`${value?.toString()?.length ?? 0}`}</span>\n              {propsClone.maxLength && <span>{` / ${propsClone.maxLength}`}</span>}\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { InputTextArea };\n","import { TimePeriod } from '@/models';\n\nexport const FULL_TIME_TEXT_REGEX = /^(\\d{2}):(\\d{2})\\s(AM|PM)$/;\n\nexport const MIN_HOUR = 1;\nexport const MAX_HOUR = 12;\nexport const MIN_MINUTE = 0;\nexport const MAX_MINUTE = 59;\n\nexport const DEFAULT_PLACEHOLDER = {\n  HOUR: 'hh',\n  MINUTE: 'mm',\n  PERIOD: 'aa'\n};\n\nexport const timePeriod = {\n  am: 'am',\n  pm: 'pm'\n};\n\nexport const startTime = {\n  hour: '12',\n  minute: '00',\n  period: timePeriod.am\n};\n\nexport const formatHour = (hour: number | string) => {\n  let numericValue = parseInt(hour as string, 10);\n\n  if (isNaN(numericValue)) {\n    numericValue = MIN_HOUR;\n  } else if (numericValue < MIN_HOUR) {\n    numericValue = MIN_HOUR;\n  } else if (numericValue > MAX_HOUR) {\n    numericValue = MAX_HOUR;\n  }\n\n  return numericValue.toString().padStart(2, '0');\n};\n\nexport const formatMinute = (minute: number | string) => {\n  let numericValue = parseInt(minute as string, 10);\n\n  if (isNaN(numericValue)) {\n    numericValue = MIN_MINUTE;\n  } else if (numericValue < MIN_MINUTE) {\n    numericValue = MIN_MINUTE;\n  } else if (numericValue > MAX_MINUTE) {\n    numericValue = MAX_MINUTE;\n  }\n\n  return numericValue.toString().padStart(2, '0');\n};\n\nexport const formatFullTime = (selectedHour: number | string, selectedMinute: number | string, selectedPeriod: TimePeriod) =>\n  `${selectedHour}:${selectedMinute} ${selectedPeriod?.toUpperCase()}`;\n\nexport const parseFullTime = (fullTimeText: string) => {\n  let hour = startTime.hour;\n  let minute = startTime.minute;\n  let period = startTime.period;\n\n  const match = FULL_TIME_TEXT_REGEX.exec(fullTimeText);\n\n  if (match) {\n    hour = match[1];\n    minute = match[2];\n    period = match[3];\n  }\n\n  return {\n    selectedHour: parseInt(hour, 10).toString().padStart(2, '0'),\n    selectedMinute: parseInt(minute, 10).toString().padStart(2, '0'),\n    selectedPeriod: period.toLowerCase() as TimePeriod\n  };\n};\n\nexport const isTimeTextValid = (timeText: string | number | undefined): boolean => {\n  if (typeof timeText !== 'string') {\n    return false;\n  }\n\n  if (timeText === '') {\n    return true;\n  }\n\n  const match = FULL_TIME_TEXT_REGEX.exec(timeText);\n\n  if (!match) {\n    return false;\n  }\n\n  const hour = parseInt(match[1], 10);\n  const minute = parseInt(match[2], 10);\n\n  return hour >= MIN_HOUR && hour <= MAX_HOUR && minute >= MIN_MINUTE && minute <= MAX_MINUTE;\n};\n","import React, { createContext, Dispatch, FC, ReactNode, SetStateAction, useContext, useMemo, useState } from 'react';\nimport { TimePeriod } from '@/models';\nimport { startTime } from '../utils/format-time';\n\nexport interface Labels {\n  cancelLabel: string;\n  cancelAriaLabel?: string;\n  okLabel: string;\n  okAriaLabel?: string;\n  timepickerMessageLabel?: string;\n  timepickerMessageAriaLabel?: string;\n}\n\ninterface TimePickerStateContextInitialValuesType {\n  selectedTime: string;\n  cancel: (selectedTime: string) => void;\n  labels: Labels;\n}\n\ninterface TimePickerStateContextType extends TimePickerStateContextInitialValuesType {\n  selectedHour: string;\n  setSelectedHour: Dispatch<SetStateAction<string>>;\n\n  selectedMinute: string;\n  setSelectedMinute: Dispatch<SetStateAction<string>>;\n\n  selectedPeriod: TimePeriod;\n  setSelectedPeriod: Dispatch<SetStateAction<TimePeriod>>;\n\n  setSelectedTime: Dispatch<SetStateAction<string>>;\n}\n\nexport const TimeInputContext = createContext<TimePickerStateContextType | undefined>(undefined);\n\nexport interface TimePickerStateProviderProps {\n  children: ReactNode;\n  initialValues: TimePickerStateContextInitialValuesType;\n}\n\nexport const TimeInputContextProvider: FC<TimePickerStateProviderProps> = ({ initialValues, children }) => {\n  const [selectedHour, setSelectedHour] = useState(startTime.hour);\n  const [selectedMinute, setSelectedMinute] = useState(startTime.minute);\n  const [selectedPeriod, setSelectedPeriod] = useState<TimePeriod>(startTime.period as TimePeriod);\n  const [selectedTime, setSelectedTime] = useState(initialValues.selectedTime);\n\n  const providerValue = useMemo(\n    () => ({\n      ...initialValues,\n      selectedHour,\n      setSelectedHour,\n      selectedMinute,\n      setSelectedMinute,\n      selectedPeriod,\n      setSelectedPeriod,\n      selectedTime,\n      setSelectedTime\n    }),\n    [initialValues, selectedHour, selectedMinute, selectedPeriod, selectedTime]\n  );\n\n  return <TimeInputContext value={providerValue}>{children}</TimeInputContext>;\n};\n\nexport const useTimeInputContext = () => {\n  const context = useContext(TimeInputContext);\n  if (!context) {\n    throw new Error('useTimeInputContext must be used within a TimeInputContextProvider');\n  }\n  return context;\n};\n","import React, { ChangeEvent, ComponentProps, FC, FocusEvent, KeyboardEvent, useImperativeHandle, useRef } from 'react';\nimport classNames from 'classnames';\nimport './time-text.scss';\n\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { asyncTrigger, createSyntheticEvent } from '@/utils';\nimport { DEFAULT_PLACEHOLDER, isTimeTextValid, MAX_HOUR, MAX_MINUTE, MIN_HOUR, MIN_MINUTE, timePeriod } from '../utils/format-time';\n\nexport interface TimeTextProps extends ComponentProps<'input'> {\n  setInputTextValue: (selectedTime: string) => void;\n  hourInputPlaceholder?: string;\n  minuteInputPlaceholder?: string;\n  periodInputPlaceholder?: string;\n}\n\nconst TimeText: FC<TimeTextProps> = ({\n  ref = null,\n  setInputTextValue,\n  className,\n  hourInputPlaceholder,\n  minuteInputPlaceholder,\n  periodInputPlaceholder,\n  ...props\n}) => {\n  const timeCtx = useTimeInputContext();\n\n  const inputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return inputRef.current as HTMLInputElement;\n  }, [inputRef.current]);\n\n  const inputClassNames = classNames('agora-time-input', className);\n\n  const debounceTimeout = useRef<NodeJS.Timeout | null>(null);\n\n  const parsePlaceholder = (input: string | undefined, defaultValue: string): string => {\n    if (input) {\n      if (input.length === 1) {\n        // Duplicates the character\n        return input.repeat(2);\n      } else if (input.length > 2) {\n        // Uses only the first 2 characters\n        return input.slice(0, 2);\n      }\n      return input;\n    } else {\n      // Uses the default value otherwise\n      return defaultValue;\n    }\n  };\n\n  const hourPlaceholder = parsePlaceholder(hourInputPlaceholder, DEFAULT_PLACEHOLDER.HOUR);\n  const minutePlaceholder = parsePlaceholder(minuteInputPlaceholder, DEFAULT_PLACEHOLDER.MINUTE);\n  const periodPlaceholder = parsePlaceholder(periodInputPlaceholder, DEFAULT_PLACEHOLDER.PERIOD);\n\n  const fullInputPlaceholder = `${hourPlaceholder}:${minutePlaceholder} ${periodPlaceholder}`;\n\n  const validateInputTimeText = (acceptPlaceholder = false) => {\n    const targetValue = inputRef.current?.value ?? '';\n\n    const isTextValid = () => {\n      let isValid = isTimeTextValid(targetValue);\n\n      // Accepts the placeholder as a valid value to allow typing on an empty input value\n      if (acceptPlaceholder) {\n        const isHourWithPlaceholder = targetValue.slice(0, 2) === hourPlaceholder;\n        const isMinuteWithPlaceholder = targetValue.slice(3, 5) === minutePlaceholder;\n        const isPeriodWithPlaceholder = targetValue.slice(6, 8) === periodPlaceholder;\n\n        isValid = isValid || isHourWithPlaceholder || isMinuteWithPlaceholder || isPeriodWithPlaceholder;\n      }\n\n      return isValid;\n    };\n\n    if (isTextValid()) {\n      setInputTextValue(targetValue);\n      timeCtx.setSelectedTime(targetValue);\n    } else if (inputRef.current) {\n      inputRef.current.value = '';\n    }\n\n    if (inputRef.current) {\n      const newChangeEvt = createSyntheticEvent<HTMLInputElement>(inputRef.current, 'change');\n      asyncTrigger(() => props.onChange?.(newChangeEvt as ChangeEvent<HTMLInputElement>));\n    }\n  };\n\n  const handleBlur = () => {\n    if (!props.readOnly) {\n      validateInputTimeText();\n    }\n  };\n\n  const handleClick = (evt: React.MouseEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const clickPos = input.selectionStart as number;\n\n      if (clickPos <= 2) {\n        input.setSelectionRange(0, 2);\n      } else if (clickPos >= 3 && clickPos <= 5) {\n        input.setSelectionRange(3, 5);\n      } else if (clickPos >= 6) {\n        input.setSelectionRange(6, 8);\n      }\n    }\n  };\n\n  const handleFocus = (evt: FocusEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      if (!input.value) {\n        input.value = fullInputPlaceholder;\n      }\n      input.setSelectionRange(0, 2);\n    }\n  };\n\n  const handleSlot = (\n    values: { input: HTMLInputElement; start: number; end: number; placeholder: string; minValue: number; maxValue: number; key: string },\n    evt: KeyboardEvent<HTMLInputElement>,\n    periodValues?: { am: string; pm: string }\n  ): void => {\n    const { input, start, end, placeholder, minValue, maxValue, key } = values;\n\n    const updateSlot = (slotStart: number, slotEnd: number, value: string) => {\n      input.value = `${input.value.slice(0, slotStart)}${value}${input.value.slice(slotEnd)}`;\n      input.setSelectionRange(slotStart, slotEnd);\n    };\n\n    const updateSlotValue = (newValue: string): void => {\n      updateSlot(\n        start,\n        end,\n        Math.min(Math.max(parseInt(newValue), minValue), maxValue)\n          .toString()\n          .padStart(2, '0')\n      );\n    };\n\n    const handleArrowUpDown = (isArrowUp: boolean): void => {\n      const currentValue = parseInt(input.value.slice(start, end)) || 0;\n      const newValue = isArrowUp\n        ? (() => {\n            if (currentValue >= maxValue) {\n              return minValue;\n            } else {\n              return currentValue + 1;\n            }\n          })()\n        : (() => {\n            if (currentValue <= minValue) {\n              return maxValue;\n            } else {\n              return currentValue - 1;\n            }\n          })();\n\n      updateSlotValue(newValue.toString());\n    };\n\n    const handleNumberInput = (): void => {\n      const currentValue = input.value.slice(start, end);\n      const newValue =\n        currentValue === '00' || !currentValue.startsWith('0') || currentValue === placeholder ? `0${key}` : currentValue.charAt(1) + key;\n\n      updateSlotValue(newValue);\n\n      const parsedNewValue = parseInt(newValue);\n      const isValueTwoDigit = parsedNewValue >= 10;\n      const isSecondDigitGreaterThanMaxValue = parsedNewValue * 10 >= maxValue;\n      if (isValueTwoDigit || isSecondDigitGreaterThanMaxValue) {\n        // Change to next slot\n        input.setSelectionRange(end + 1, end + 3);\n      }\n    };\n\n    const handlePeriodInput = (): void => {\n      const isModifierKeyPressed = evt.ctrlKey || evt.altKey || evt.shiftKey;\n\n      if ((key === 'a' || key === 'A') && !isModifierKeyPressed) {\n        evt.preventDefault();\n        updateSlot(start, end, periodValues!.am.toUpperCase());\n      } else if ((key === 'p' || key === 'P') && !isModifierKeyPressed) {\n        evt.preventDefault();\n        updateSlot(start, end, periodValues!.pm.toUpperCase());\n      }\n    };\n\n    if (key === 'Backspace') {\n      evt.preventDefault();\n      updateSlot(start, end, placeholder);\n    } else if (/\\d/.test(key)) {\n      evt.preventDefault();\n      // Prevents number input in period field\n      if (periodValues) return;\n      handleNumberInput();\n    } else if (key === 'ArrowUp' || key === 'ArrowDown') {\n      evt.preventDefault();\n      if (periodValues) {\n        const currentValue = input.value.slice(6, 8).toUpperCase();\n        updateSlot(6, 8, currentValue === periodValues.am.toUpperCase() ? periodValues.pm.toUpperCase() : periodValues.am.toUpperCase());\n        return;\n      }\n      handleArrowUpDown(key === 'ArrowUp');\n    } else if (key === 'ArrowLeft') {\n      // Moves to the previous slot\n      input.setSelectionRange(start - 3, start - 1);\n    } else if (key === 'ArrowRight') {\n      // Moves to the next slot\n      input.setSelectionRange(end + 1, end + 3);\n    } else if (periodValues) {\n      handlePeriodInput();\n    }\n  };\n\n  const handleTab = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (selectionStart >= 6) {\n      // If in period section and press \"Tab\", go to the next element\n      evt.preventDefault();\n      input.blur();\n      const nextElement = inputRef.current?.nextElementSibling;\n      if (nextElement && nextElement instanceof HTMLElement) nextElement.focus();\n    } else if (selectionStart < 3) {\n      // From hours section to minutes section\n      evt.preventDefault();\n      input.setSelectionRange(3, 5);\n    } else if (selectionStart >= 3 && selectionStart < 6) {\n      // From minutes section to period section\n      evt.preventDefault();\n      input.setSelectionRange(6, 8);\n    }\n  };\n\n  const handleShiftTab = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (selectionStart < 3) {\n      // If in hours section and press \"Shift+Tab\", go to the previous element\n      evt.preventDefault();\n      input.blur();\n      const prevElement = inputRef.current?.previousElementSibling;\n      if (prevElement && prevElement instanceof HTMLElement) prevElement.focus();\n    } else if (selectionStart >= 3 && selectionStart < 6) {\n      // Shift+Tab from minutes section to hours section\n      evt.preventDefault();\n      input.setSelectionRange(0, 2);\n    } else if (selectionStart >= 6) {\n      // Shift+Tab from period to minutes section\n      evt.preventDefault();\n      input.setSelectionRange(3, 5);\n    }\n  };\n\n  const handleTabNavigation = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (evt.shiftKey && evt.key === 'Tab') {\n      handleShiftTab(evt, input, selectionStart);\n    }\n    if (!evt.shiftKey && evt.key === 'Tab') {\n      handleTab(evt, input, selectionStart);\n    }\n  };\n\n  const handleTimeSelection = (\n    selectionStart: number,\n    selectionEnd: number,\n    handleHourSlot: () => void,\n    handleMinuteSlot: () => void,\n    handlePeriodSlot: () => void\n  ) => {\n    if (selectionStart < 3 && selectionEnd <= 2) {\n      handleHourSlot();\n    } else if (selectionStart >= 3 && selectionEnd <= 5) {\n      handleMinuteSlot();\n    } else if (selectionStart >= 6 && selectionEnd <= 8) {\n      handlePeriodSlot();\n    } else {\n      handleHourSlot();\n    }\n  };\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const selectionStart = input.selectionStart as number;\n      const selectionEnd = input.selectionEnd as number;\n      const key = evt.key;\n\n      const handleHourSlot = (): void => {\n        handleSlot({ input, start: 0, end: 2, placeholder: hourPlaceholder, minValue: MIN_HOUR, maxValue: MAX_HOUR, key }, evt);\n      };\n\n      const handleMinuteSlot = (): void => {\n        handleSlot({ input, start: 3, end: 5, placeholder: minutePlaceholder, minValue: MIN_MINUTE, maxValue: MAX_MINUTE, key }, evt);\n      };\n\n      const handlePeriodSlot = (): void => {\n        handleSlot({ input, start: 6, end: 8, placeholder: periodPlaceholder, minValue: 0, maxValue: 0, key }, evt, {\n          am: timePeriod.am.toUpperCase(),\n          pm: timePeriod.pm.toUpperCase()\n        });\n      };\n\n      handleTimeSelection(selectionStart, selectionEnd, handleHourSlot, handleMinuteSlot, handlePeriodSlot);\n\n      handleTabNavigation(evt, input, selectionStart);\n\n      if (evt.ctrlKey && key === 'a') {\n        evt.preventDefault();\n        input.select();\n      }\n\n      if (evt.ctrlKey && key === 'c') {\n        evt.preventDefault();\n        const selectedText = input.value.substring(selectionStart, selectionEnd);\n        void navigator.clipboard.writeText(selectedText);\n      }\n\n      evt.preventDefault();\n\n      if (debounceTimeout.current) {\n        clearTimeout(debounceTimeout.current);\n      }\n      debounceTimeout.current = setTimeout(() => {\n        validateInputTimeText(true);\n      }, 100);\n    }\n  };\n\n  return (\n    <input\n      {...props}\n      className={inputClassNames}\n      ref={inputRef}\n      type=\"text\"\n      placeholder={fullInputPlaceholder}\n      onBlur={handleBlur}\n      onClick={handleClick}\n      onFocus={handleFocus}\n      onKeyDown={handleKeyDown}\n    />\n  );\n};\n\nexport { TimeText };\n","import React, { FC, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { formatHour, formatMinute, MAX_HOUR, MAX_MINUTE, MIN_HOUR, MIN_MINUTE, timePeriod } from '../utils/format-time';\n\nimport { Icon } from '@/components/icon';\nimport { ButtonGroup } from '@/components/button-group';\nimport { Button } from '@/components/button';\n\nexport const DialogBody: FC = () => {\n  const timeCtx = useTimeInputContext();\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n\n  const hourInputRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    hourInputRef.current?.focus();\n  }, []);\n\n  const handleHourUp = () => {\n    timeCtx.setSelectedHour((prevValue) => (parseInt(prevValue) >= MAX_HOUR ? formatHour(MIN_HOUR) : formatHour(parseInt(prevValue) + 1)));\n  };\n\n  const handleHourDown = () => {\n    timeCtx.setSelectedHour((prevValue) => (parseInt(prevValue) <= MIN_HOUR ? formatHour(MAX_HOUR) : formatHour(parseInt(prevValue) - 1)));\n  };\n\n  const handleMinuteUp = () => {\n    timeCtx.setSelectedMinute((prevValue) =>\n      parseInt(prevValue) >= MAX_MINUTE ? formatMinute(MIN_MINUTE) : formatMinute(parseInt(prevValue) + 1)\n    );\n  };\n\n  const handleMinuteDown = () => {\n    timeCtx.setSelectedMinute((prevValue) =>\n      parseInt(prevValue) <= MIN_MINUTE ? formatMinute(MAX_MINUTE) : formatMinute(parseInt(prevValue) - 1)\n    );\n  };\n\n  const handleHourInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = e.target;\n    const formattedHour = formatHour(value);\n\n    timeCtx.setSelectedHour(formattedHour);\n  };\n\n  const handleHourFocus = (e: React.FocusEvent<HTMLInputElement>) => e.target.select();\n\n  const handleHourKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      handleHourUp();\n    }\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      handleHourDown();\n    }\n  };\n\n  const handleMinuteInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = e.target;\n    const formattedMinute = formatMinute(value);\n\n    timeCtx.setSelectedMinute(formattedMinute);\n  };\n\n  const handleMinuteFocus = (e: React.FocusEvent<HTMLInputElement>) => e.target.select();\n\n  const handleMinuteKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      handleMinuteUp();\n    }\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      handleMinuteDown();\n    }\n  };\n\n  const timeWithPeriodContainerClassName = classNames('time-with-period-container', {\n    'time-with-period-container--mobile': isMobile\n  });\n\n  return (\n    <div className=\"p-32\">\n      <div className={timeWithPeriodContainerClassName}>\n        <div className=\"time-inputs-container\">\n          <div className=\"input-number-container\">\n            <input\n              ref={hourInputRef}\n              className=\"input-number\"\n              type=\"number\"\n              min={MIN_HOUR}\n              max={MAX_HOUR}\n              value={timeCtx.selectedHour}\n              onChange={handleHourInputChange}\n              onFocus={handleHourFocus}\n              onKeyDown={handleHourKeyDown}\n            />\n            <div className=\"input-number-arrows-container\">\n              <div className=\"input-number-arrow\" onClick={handleHourUp} aria-hidden>\n                <Icon name=\"agora-solid-arrow-up\" />\n              </div>\n              <div className=\"input-number-arrow\" onClick={handleHourDown} aria-hidden>\n                <Icon name=\"agora-solid-arrow-down\" />\n              </div>\n            </div>\n          </div>\n\n          <div className=\"time-separator-text\">:</div>\n\n          <div className=\"input-number-container\">\n            <input\n              className=\"input-number\"\n              type=\"number\"\n              min={MIN_MINUTE}\n              max={MAX_MINUTE}\n              value={timeCtx.selectedMinute}\n              onChange={handleMinuteInputChange}\n              onFocus={handleMinuteFocus}\n              onKeyDown={handleMinuteKeyDown}\n            />\n            <div className=\"input-number-arrows-container\">\n              <div className=\"input-number-arrow\" onClick={handleMinuteUp} aria-hidden>\n                <Icon name=\"agora-solid-arrow-up\" />\n              </div>\n              <div className=\"input-number-arrow\" onClick={handleMinuteDown} aria-hidden>\n                <Icon name=\"agora-solid-arrow-down\" />\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <ButtonGroup className=\"time-period-buttons\" orientation={isMobile ? 'horizontal' : 'vertical'}>\n          <Button type=\"button\">{timePeriod.am.toUpperCase()}</Button>\n          <Button type=\"button\">{timePeriod.pm.toUpperCase()}</Button>\n        </ButtonGroup>\n      </div>\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { formatFullTime } from '../utils/format-time';\n\nimport { Button } from '@/components/button';\n\nexport interface TimePickerDropdownFooterProps {\n  setInputTextValue: (selectedTime: string) => void;\n}\n\nexport const DialogFooter: FC<TimePickerDropdownFooterProps> = ({ setInputTextValue }) => {\n  const timeCtx = useTimeInputContext();\n\n  const onCancelPressed = () => {\n    timeCtx.cancel(timeCtx.selectedTime);\n  };\n\n  // Store the selected time in text format and display it on the input text\n  const onOkPressed = () => {\n    const selectedTimeText = formatFullTime(timeCtx.selectedHour, timeCtx.selectedMinute, timeCtx.selectedPeriod);\n    setInputTextValue(selectedTimeText);\n    timeCtx.setSelectedTime(selectedTimeText);\n    timeCtx.cancel(selectedTimeText);\n  };\n\n  const labels = timeCtx.labels;\n\n  const additionalCancelProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.cancelLabel}, ${labels.cancelAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalCancelProps['aria-label'];\n  }\n\n  const additionalOkProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.okLabel}, ${labels.okAriaLabel}`\n  };\n  if (!labels.okAriaLabel) {\n    delete additionalOkProps['aria-label'];\n  }\n\n  return (\n    <div className=\"flex justify-between items-center py-8\">\n      <Button appearance=\"link\" variant=\"neutral\" onClick={onCancelPressed} {...additionalCancelProps}>\n        {labels.cancelLabel}\n      </Button>\n      <Button appearance=\"link\" onClick={onOkPressed} {...additionalOkProps}>\n        {labels.okLabel}\n      </Button>\n    </div>\n  );\n};\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Labels, useTimeInputContext } from './contexts/time-input-state.context';\nimport { BooleanProp, TimePeriod } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport { parseFullTime, startTime } from './utils/format-time';\n\nimport { DialogBody } from './time-picker-dropdown-body/time-picker-dropdown-body';\nimport { DialogFooter } from './time-picker-dropdown-footer/time-picker-dropdown-footer';\n\nimport { Icon } from '@/components/icon';\n\nexport interface TimePickerDropdownProps {\n  className?: string;\n  setInputTextValue: (selectedTime: string) => void;\n  onChange: (selectedTime: string) => void;\n  onCancel: (selectedTime: string) => void;\n  hasTimepickerMessage?: BooleanProp;\n  textCurrentValue: string;\n  labels: Labels;\n}\n\nexport const TimePickerDropdown: FC<TimePickerDropdownProps> = ({\n  setInputTextValue,\n  onChange,\n  labels,\n  hasTimepickerMessage,\n  textCurrentValue,\n  className\n}) => {\n  const timeCtx = useTimeInputContext();\n\n  const [isReady, setIsReady] = useState(false);\n\n  const wrapperClassNames = classNames(\n    className,\n    'absolute left-0 top-[68px] shadow-bottom-high bg-white p-16 border-2 border-neutral-200 rounded-4 z-dropdown'\n  );\n\n  const datePickerDropdownContainerRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    // Opens the timepicker with the current selected time on its inputs and marks the component to be ready to render only after that\n    if (timeCtx.selectedTime) {\n      // Opens the timepicker with the current time if the input text is empty\n      if (!textCurrentValue) {\n        timeCtx.setSelectedHour(startTime.hour);\n        timeCtx.setSelectedMinute(startTime.minute);\n        timeCtx.setSelectedPeriod(startTime.period as TimePeriod);\n      } else {\n        const { selectedHour, selectedMinute, selectedPeriod } = parseFullTime(timeCtx.selectedTime);\n        timeCtx.setSelectedHour(selectedHour);\n        timeCtx.setSelectedMinute(selectedMinute);\n        timeCtx.setSelectedPeriod(selectedPeriod);\n      }\n\n      asyncTrigger(() => onChange(timeCtx.selectedTime));\n      setIsReady(true);\n    }\n  }, [timeCtx.selectedTime, timeCtx.setSelectedHour, timeCtx.setSelectedMinute, timeCtx.setSelectedPeriod]);\n\n  // Does not render the component until the input values are set\n  if (!isReady && timeCtx.selectedTime) {\n    return null;\n  }\n\n  const additionalTimepickerMessageProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.timepickerMessageLabel}, ${labels.timepickerMessageAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalTimepickerMessageProps['aria-label'];\n  }\n\n  return (\n    <div ref={datePickerDropdownContainerRef} className={wrapperClassNames}>\n      <DialogBody />\n      <div className=\"border-1 border-neutral-300\" />\n      <div className=\"px-32\">\n        <DialogFooter setInputTextValue={setInputTextValue} />\n      </div>\n      {stringToBoolean(hasTimepickerMessage) && (\n        <div className=\"timepicker-message\" {...additionalTimepickerMessageProps}>\n          <Icon name=\"agora-solid-alert-circle\" className=\"timepicker-message__icon\" alt={labels.timepickerMessageAriaLabel} />\n          <div className=\"timepicker-message__text\">{labels.timepickerMessageLabel}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport './input-time.scss';\nimport { TimeInputContextProvider } from './contexts/time-input-state.context';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport { DEFAULT_PLACEHOLDER } from './utils/format-time';\n\nimport { TimeText } from './time-text/time-text';\nimport { TimePickerDropdown } from './time-picker-dropdown';\n\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\n\nexport interface InputTimeProps extends ComponentProps<'input'> {\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * The placeholder to apply in the input minute part\n   */\n  minuteInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input hour part\n   */\n  hourInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input hour part\n   */\n  periodInputPlaceholder?: string;\n  /**\n   * Accessible text to apply to the trailing clock icon.\n   */\n  clockIconAriaLabel: string;\n  /**\n   * Label for the timepicker cancel button.\n   */\n  cancelLabel: string;\n  /**\n   * Accessible text for the timepicker cancel button.\n   */\n  cancelAriaLabel?: string;\n  /**\n   * Label for the timepicker ok button.\n   */\n  okLabel: string;\n  /**\n   * Accessible text for the timepicker ok button.\n   */\n  okAriaLabel?: string;\n  /**\n   * Show or hide the timepicker footer message.\n   */\n  hasTimepickerMessage?: BooleanProp;\n  /**\n   * Label for the timepicker footer message.\n   */\n  timepickerMessageLabel?: string;\n  /**\n   * Accessible text for the timepicker footer message.\n   */\n  timepickerMessageAriaLabel?: string;\n}\n\nconst InputTime: FC<InputTimeProps> = ({\n  ref = null,\n  className,\n  darkMode,\n  label,\n  hideLabel,\n  required = true,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  icon,\n  hasIcon,\n  minuteInputPlaceholder = DEFAULT_PLACEHOLDER.MINUTE,\n  hourInputPlaceholder = DEFAULT_PLACEHOLDER.HOUR,\n  periodInputPlaceholder = DEFAULT_PLACEHOLDER.PERIOD,\n  clockIconAriaLabel,\n  cancelLabel,\n  cancelAriaLabel,\n  okLabel,\n  okAriaLabel,\n  value,\n  defaultValue,\n  onChange,\n  hasTimepickerMessage = false,\n  timepickerMessageLabel,\n  timepickerMessageAriaLabel,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return innerInputRef.current as HTMLInputElement;\n  }, [innerInputRef.current]);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const [currentValue, setCurrentValue] = useState<string>(value?.toString() ?? defaultValue?.toString() ?? '');\n\n  const lastValueTriggered = useRef<string>('empty');\n  const [trigger, setTrigger] = useState(+new Date());\n\n  const [overlayVisible, setOverlayVisible] = useState(false);\n\n  const showOverlay = () => {\n    if (!props.readOnly) {\n      setOverlayVisible(true);\n    }\n  };\n\n  const hideOverlay = () => {\n    setOverlayVisible(false);\n  };\n\n  const toggleOverlay = () => {\n    if (overlayVisible) {\n      hideOverlay();\n    } else {\n      showOverlay();\n    }\n  };\n\n  const handleOnDismiss = () => {\n    hideOverlay();\n  };\n\n  const triggerOnChange = (last: string) => {\n    if (last !== lastValueTriggered.current) {\n      lastValueTriggered.current = last;\n      setTrigger(+new Date());\n    }\n  };\n\n  const handleTimePickerCancel = (selectedTime: string) => {\n    setCurrentValue(selectedTime);\n    triggerOnChange(selectedTime);\n\n    handleOnDismiss();\n  };\n\n  //  HANDLE CLICK OUTSIDE DIALOG\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (!overlayVisible) {\n        return;\n      }\n\n      const clickedOnInputElement = event.target && (event.target as HTMLElement).closest('.agora-time-input');\n\n      if (!wrapperRef.current?.contains(event.target as HTMLDivElement) || clickedOnInputElement) {\n        handleOnDismiss();\n      }\n    };\n\n    document.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document.removeEventListener('click', handleClickOutside);\n    };\n  }, [overlayVisible]);\n\n  //  HANDLE ESCAPE\n  useEffect(() => {\n    const keydownHandler = (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleOnDismiss();\n      }\n    };\n\n    wrapperRef.current?.addEventListener('keydown', keydownHandler);\n\n    return () => {\n      wrapperRef.current?.removeEventListener('keydown', keydownHandler);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (defaultValue) {\n      return;\n    }\n\n    setCurrentValue(value?.toString() ?? '');\n    triggerOnChange(value?.toString() ?? '');\n  }, [value]);\n\n  const onOverlayChangeHandler = (selectedTime: string) => {\n    triggerOnChange(selectedTime);\n  };\n\n  const onInputTimeChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentValue(evt.target.value);\n    triggerOnChange(evt.target.value);\n  };\n\n  useEffect(() => {\n    if (innerInputRef.current) {\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n  }, [trigger]);\n\n  useEffect(() => {\n    if (!overlayVisible && innerInputRef.current) {\n      innerInputRef.current.focus();\n      innerInputRef.current.setSelectionRange(0, 2);\n    }\n  }, [overlayVisible]);\n\n  const dropdownTimePickerLabels = {\n    cancelLabel,\n    cancelAriaLabel,\n    okLabel,\n    okAriaLabel,\n    timepickerMessageLabel,\n    timepickerMessageAriaLabel\n  };\n\n  const wrapperClassNames = classNames('agora-time-picker', className, {\n    'dark-mode': stringToBoolean(darkMode),\n    'has-value': currentValue.length > 0,\n    'disabled': stringToBoolean(propsClone.disabled),\n    'read-only': stringToBoolean(propsClone.readOnly),\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const timeCtxInitialValues = useMemo(() => {\n    return {\n      selectedTime: defaultValue?.toString() ?? value?.toString() ?? '',\n      cancel: handleTimePickerCancel,\n      labels: dropdownTimePickerLabels\n    };\n  }, []);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-time-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-time-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <TimeInputContextProvider initialValues={timeCtxInitialValues}>\n      <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n        {/* Label */}\n        <label hidden={!!stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-time-label\">\n          {label}\n        </label>\n\n        {/* Input wrapper */}\n        <div className=\"input-wrapper-text\">\n          {/* Input Leading Icon  */}\n          {stringToBoolean(hasIcon) && icon?.startsWith('agora-solid') && (\n            <div className=\"input-leading-icon\">\n              <Icon name={icon} aria-hidden />\n            </div>\n          )}\n\n          <TimeText\n            className=\"input-text\"\n            ref={innerInputRef}\n            id={propsClone.id}\n            minuteInputPlaceholder={minuteInputPlaceholder}\n            hourInputPlaceholder={hourInputPlaceholder}\n            periodInputPlaceholder={periodInputPlaceholder}\n            // onKeyDown={handleInputTimeKeydown}\n            value={currentValue}\n            setInputTextValue={setCurrentValue}\n            onChange={onInputTimeChange}\n            disabled={propsClone.disabled}\n            readOnly={propsClone.readOnly}\n            required={isRequired}\n            aria-describedby={inputAriaDescribedBy}\n          />\n\n          {/* Input Trailing Icon  */}\n          <button\n            type=\"button\"\n            disabled={!!propsClone.disabled || !!propsClone.readOnly}\n            onClick={toggleOverlay}\n            className=\"input-trailing-icon\"\n            aria-label={clockIconAriaLabel}\n          >\n            <Icon name=\"agora-line-clock\" aria-hidden className=\"icon-clock-default\" />\n            <Icon name=\"agora-solid-clock\" aria-hidden className=\"icon-clock-hover\" />\n          </button>\n\n          {overlayVisible && (\n            <TimePickerDropdown\n              className=\"time-picker-dropdown\"\n              labels={dropdownTimePickerLabels}\n              onChange={onOverlayChangeHandler}\n              onCancel={handleTimePickerCancel}\n              hasTimepickerMessage={hasTimepickerMessage}\n              setInputTextValue={setCurrentValue}\n              textCurrentValue={currentValue}\n            />\n          )}\n        </div>\n\n        {/* Feedback */}\n        {stringToBoolean(hasFeedback) && feedbackText && (\n          <Feedback\n            id={`input-time-${propsClone.id}-feedback`}\n            feedbackState={feedbackState}\n            feedbackText={feedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        )}\n\n        {/* Error Feedback */}\n        {stringToBoolean(hasError) && errorFeedbackText && (\n          <Feedback\n            id={`input-time-${propsClone.id}-error-feedback`}\n            feedbackState=\"danger\"\n            feedbackText={errorFeedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        )}\n      </div>\n    </TimeInputContextProvider>\n  );\n};\n\nexport { InputTime };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport './loader-dialog.scss';\n\nexport interface LoaderDialogProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the loader.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the loader.\n   */\n  subtitle?: ReactNode;\n}\nexport const LoaderDialog: FC<LoaderDialogProps> = ({ title, subtitle, ...props }) => {\n  const loaderClass = classNames('agora-loader-dialog');\n\n  return (\n    <div {...props} className=\"bg-backdrop absolute z-dialog w-full h-full flex flex-col justify-center items-center\">\n      <div className=\"flex flex-col gap-[64px] justify-center items-center w-full\">\n        {(title || subtitle) && (\n          <div className=\"flex w-full flex-col gap-8 justify-center items-center text-center\">\n            {title && (\n              <div className=\"xl:text-2xl-semibold md:text-2xl-semibold  xs:text-l-semibold text-white xl:line-clamp-1 md:line-clamp-1 xs:line-clamp-2\">\n                {title}\n              </div>\n            )}\n            {subtitle && (\n              <div className=\"xl:text-2xl-light md:text-2xl-light xs:text-m-light text-white xl:line-clamp-1 md:line-clamp-1 xs:line-clamp-2\">\n                {subtitle}\n              </div>\n            )}\n          </div>\n        )}\n        <div className={loaderClass} role=\"status\">\n          <span className=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\"></span>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { createContext, useContext } from 'react';\nimport { LoaderDialogProps } from './loader-dialog';\n\nimport { DialogElement } from '@/components/dialog';\n\nexport interface LoaderDialogContextProps {\n  current: DialogElement;\n  visibility?: boolean;\n  showLoader: (props: LoaderDialogProps) => void;\n  hideLoader: () => void;\n}\n\nconst LoaderDialogContext = createContext<LoaderDialogContextProps>({} as LoaderDialogContextProps);\n\nconst useLoaderDialogContext = (): LoaderDialogContextProps => {\n  const context = useContext(LoaderDialogContext);\n  return context;\n};\n\nexport { LoaderDialogContext, useLoaderDialogContext };\n","import React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { LoaderDialogContext, LoaderDialogContextProps } from './loader-dialog-context';\nimport { LoaderDialog, LoaderDialogProps } from './loader-dialog';\n\nexport interface LoaderDialogProviderProps {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nconst LoaderDialogProvider: FC<LoaderDialogProviderProps> = ({ children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogProps, setDialogProps] = useState<LoaderDialogProps>();\n  const [ariaLiveMessage, setAriaLiveMessage] = useState('');\n\n  const showLoader = useCallback(\n    (currentDialogProps: LoaderDialogProps) => {\n      if (currentDialogProps['aria-label']) {\n        setAriaLiveMessage(currentDialogProps['aria-label']);\n      } else if (currentDialogProps['aria-labelledby']) {\n        const ids = currentDialogProps['aria-labelledby'].split(' ');\n\n        const val = ids\n          .map((id) => {\n            return document.getElementById(id)?.innerText ?? '';\n          })\n          .filter((str) => !!str)\n          .join(' ');\n\n        setAriaLiveMessage(val);\n      } else {\n        setAriaLiveMessage(`${currentDialogProps.title?.toString()} ${currentDialogProps.subtitle?.toString()}`);\n      }\n\n      setDialogProps(currentDialogProps);\n\n      dialogRef.current?.show();\n    },\n    [setDialogProps]\n  );\n\n  const hideLoader = useCallback((): void => {\n    setAriaLiveMessage('');\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        showLoader,\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        hideLoader\n      }) as LoaderDialogContextProps,\n    [showLoader, hideLoader]\n  );\n\n  return (\n    <LoaderDialogContext value={contextValue}>\n      <div aria-live=\"assertive\" className=\"sr-only\">\n        {ariaLiveMessage}\n      </div>\n      <Dialog ref={dialogRef} fullScreen dismissOnBackdropClick={false} dismissOnEscape={false} aria-busy=\"true\" className=\"agora-loader\">\n        {!!dialogProps && <LoaderDialog {...dialogProps} />}\n      </Dialog>\n      {children}\n    </LoaderDialogContext>\n  );\n};\n\nexport { LoaderDialogProvider };\n","import { DialogElement } from '@/components/dialog';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { ModalConfiguration } from './modal-config.model';\n\nexport interface ModalContextProps {\n  /**\n   * The visible modal element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a modal is visible or not.\n   */\n  isVisible: () => boolean;\n  /**\n   * Shows a new modal with the configurations provided.\n   */\n  show: (children: ReactNode, config: ModalConfiguration) => void;\n  /**\n   * Hides the visible modal.\n   */\n  hide: () => void;\n}\n\nconst ModalContext = createContext<ModalContextProps>({} as ModalContextProps);\n\nconst useModalContext = (): ModalContextProps => {\n  return useContext(ModalContext);\n};\n\nexport { ModalContext, useModalContext };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\nimport { useModalContext } from './modal-context';\n\nimport { ModalConfiguration } from './modal-config.model';\nimport './modal-dialog.scss';\n\nexport interface ModalDialogProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   *  Modal configurations\n   */\n  configurations: ModalConfiguration;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nconst ModalDialog: FC<ModalDialogProps> = ({ configurations, children }) => {\n  const { hide } = useModalContext();\n\n  const containerClassNames = classNames('agora-modal-dialog-container', configurations.className, {\n    'dark-mode': stringToBoolean(configurations.darkMode ?? true)\n  });\n\n  return (\n    <div className={containerClassNames}>\n      <div className=\"agora-modal-dialog\">\n        <div className=\"agora-modal-dialog-header\">\n          <Button\n            className=\"mt-16 mr-24\"\n            onClick={hide}\n            appearance=\"link\"\n            variant=\"neutral\"\n            darkMode={stringToBoolean(configurations.darkMode ?? true)}\n            hasIcon\n            trailingIcon=\"agora-line-x\"\n            trailingIconHover=\"agora-solid-x\"\n          >\n            {configurations.closeButtonLabel}\n          </Button>\n        </div>\n        <div className=\"agora-modal-dialog-body\">\n          <div className=\"agora-modal-dialog-body-content\">{children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { ModalDialog };\n","import { Dialog, DialogElement } from '@/components/dialog';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport React, { FC, ReactNode, useMemo, useRef, useState } from 'react';\nimport { ModalConfiguration } from './modal-config.model';\nimport { ModalContext, ModalContextProps } from './modal-context';\nimport { ModalDialog } from './modal-dialog';\n\nexport interface ModalProviderProps {\n  /**\n   * Allows the dialog to be closed by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n}\n\nconst ModalProvider: FC<ModalProviderProps> = ({ dismissOnEscape = true, children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n  const [dialogConfig, setDialogConfig] = useState<ModalConfiguration>();\n\n  const show = (currentDialogChildren: ReactNode, config: ModalConfiguration) => {\n    setDialogChildren(currentDialogChildren);\n\n    setDialogConfig(config);\n\n    asyncTrigger(() => dialogRef.current?.show());\n  };\n\n  const hide = (): void => {\n    dialogRef.current?.hide();\n  };\n\n  const contextValue = useMemo(() => {\n    return {\n      current: dialogRef.current,\n      isVisible: () => !!dialogRef.current?.visible,\n      show,\n      hide\n    } as ModalContextProps;\n  }, [show, hide]);\n\n  return (\n    <ModalContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen\n        dismissOnBackdropClick={false}\n        dismissOnEscape={stringToBoolean(dismissOnEscape)}\n        aria-label={dialogConfig?.['aria-label']}\n        onShow={dialogConfig?.onShow}\n        onHide={dialogConfig?.onHide}\n      >\n        {!!dialogConfig && <ModalDialog configurations={dialogConfig}>{dialogChildren}</ModalDialog>}\n      </Dialog>\n      {children}\n    </ModalContext>\n  );\n};\n\nexport { ModalProvider };\n","import { TabBodyProps, TabHeaderProps } from '@/components/tabs';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, ReactElement, useId, useState } from 'react';\nimport './panel-switcher-desktop.scss';\nimport { Button } from '@/components/button';\n\nexport interface PanelSwitcherDesktopProps extends ComponentProps<'div'> {\n  leadingIcon?: string;\n  leadingIconHover?: string;\n  withIcon?: BooleanProp;\n  buttonListRef: React.RefObject<HTMLDivElement | null>;\n  panelRef: React.RefObject<HTMLDivElement | null>;\n  activeButton: number;\n  activateButton: (index: number) => void;\n  buttonsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  buttonsBodyData: Array<ReactElement<TabBodyProps>>;\n}\n\nexport const PanelSwitcherDesktop: FC<PanelSwitcherDesktopProps> = ({\n  leadingIcon,\n  leadingIconHover,\n  withIcon,\n  buttonListRef,\n  panelRef,\n  activeButton,\n  activateButton,\n  buttonsHeaderData,\n  buttonsBodyData\n}) => {\n  const generatedId = useId();\n  const [isPressed, setIsPressed] = useState<boolean[]>(new Array(buttonsHeaderData.length).fill(false));\n\n  const panelSwitcherWrapperClassName = classNames('panel-switcher-wrapper desktop');\n  const panelSwitcherTabsListClassNames = classNames('panel-button-group desktop');\n\n  const selectedButton = Math.max(activeButton, 0);\n\n  const focusTab = (index: number) => {\n    const buttons = buttonListRef.current?.querySelectorAll('button');\n    if (buttons && buttons[index]) {\n      buttons[index].focus();\n    }\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent, index: number) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        event.preventDefault();\n        setIsPressed((prev) => {\n          const newState = [...prev];\n          newState[index] = true;\n          return newState;\n        });\n        break;\n      case 'ArrowUp':\n        focusTab((index - 1 + buttonsHeaderData.length) % buttonsHeaderData.length);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusTab((index + 1) % buttonsHeaderData.length);\n        event.preventDefault();\n        break;\n      case 'Tab':\n        if (!event.shiftKey) {\n          event.preventDefault();\n          panelRef.current?.focus();\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleKeyUp = (event: React.KeyboardEvent, index: number) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        activateButton(index);\n        setIsPressed((prev) => {\n          const newState = [...prev];\n          newState[index] = false;\n          return newState;\n        });\n        break;\n    }\n  };\n\n  const handleMouseDown = (index: number) => {\n    setIsPressed((prev) => {\n      const newState = [...prev];\n      newState[index] = true;\n      return newState;\n    });\n  };\n\n  const handleMouseUp = (index: number) => {\n    setIsPressed((prev) => {\n      const newState = [...prev];\n      newState[index] = false;\n      return newState;\n    });\n  };\n\n  return (\n    <div className={panelSwitcherWrapperClassName}>\n      <div className=\"container mx-auto grid xl:grid-cols-12 gap-x-32\">\n        <div className=\"xl:col-span-4\">\n          <div ref={buttonListRef} role=\"listbox\" className={panelSwitcherTabsListClassNames}>\n            {Children.map(buttonsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n              const isActive = selectedButton === index;\n              const key = `panel-button-${generatedId}-${index}`;\n              const panelButtonClassNames = classNames('panel-button', { 'is-active': isActive }, { 'with-leading-icon': withIcon });\n              const pressingIcon = isPressed[index] ? leadingIconHover : leadingIcon;\n              return (\n                <Button\n                  id={key}\n                  key={key}\n                  role=\"option\"\n                  className={panelButtonClassNames}\n                  appearance=\"link\"\n                  variant=\"neutral\"\n                  hasIcon={true}\n                  leadingIcon={withIcon ? pressingIcon : ''}\n                  leadingIconHover={withIcon ? leadingIconHover : ''}\n                  trailingIcon={isPressed[index] ? 'agora-solid-arrow-right-circle' : 'agora-line-arrow-right-circle'}\n                  trailingIconHover=\"agora-solid-arrow-right-circle\"\n                  tabIndex={isActive ? 0 : -1}\n                  onClick={() => {\n                    activateButton(index);\n                  }}\n                  onKeyDown={(evt) => handleKeyDown(evt, index)}\n                  onKeyUp={(evt) => handleKeyUp(evt, index)}\n                  onMouseDown={() => handleMouseDown(index)}\n                  onMouseUp={() => handleMouseUp(index)}\n                  aria-selected={isActive}\n                >\n                  {child.props.children}\n                </Button>\n              );\n            })}\n          </div>\n        </div>\n        <div className=\"xl:col-span-7 xl:col-start-6\">\n          {buttonsBodyData[selectedButton] && (\n            <div\n              className=\"panel-content\"\n              role=\"region\"\n              ref={panelRef}\n              {...(stringToBoolean(buttonsBodyData[selectedButton].props.focusableContent) ? { tabIndex: 0 } : { tabIndex: -1 })}\n              aria-labelledby={`agora-panel-${generatedId}-${selectedButton}`}\n            >\n              {buttonsBodyData[selectedButton].props.children}\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { Children, FC, KeyboardEvent, ReactElement, RefObject, useEffect, useId, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@/components/button';\nimport { ModalConfiguration, ModalProvider, useModalContext } from '@/components/modal-dialog';\nimport { TabBodyProps, TabHeaderProps } from '@/components/tabs';\nimport { BooleanProp } from '@/models';\nimport './panel-switcher-mobile.scss';\n\nexport interface PanelSwitcherMobileProps {\n  modalCloseButtonLabel: string;\n  leadingIcon?: string;\n  leadingIconHover?: string;\n  buttonListRef: RefObject<HTMLDivElement | null>;\n  buttonsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  buttonsBodyData: Array<ReactElement<TabBodyProps>>;\n  activeButton?: number;\n  withIcon?: BooleanProp;\n}\n\nexport const ModalContent: FC<{ content: React.ReactNode }> = ({ content }) => {\n  return <div>{content}</div>;\n};\n\nexport const PanelSwitcherMobileInternal: FC<PanelSwitcherMobileProps> = ({\n  modalCloseButtonLabel,\n  leadingIcon,\n  leadingIconHover,\n  buttonListRef,\n  buttonsHeaderData,\n  buttonsBodyData,\n  activeButton,\n  withIcon\n}) => {\n  const generatedId = useId();\n  const { show } = useModalContext();\n  const buttonsRef = useRef<(HTMLButtonElement | null)[]>([]);\n  const [isPressed, setIsPressed] = useState<boolean[]>(new Array(buttonsHeaderData.length).fill(false));\n  const [focusedButton, setFocusedButton] = useState<number | undefined>(activeButton);\n\n  const panelSwitcherMobileClassName = classNames('panel-switcher-mobile');\n  const panelButtonListClassNames = classNames('panel-button-list mobile');\n\n  const openModalHandler = (index: number) => {\n    const buttonRef = buttonsRef.current[index];\n    const content = buttonsBodyData[index].props.children;\n    const modalConfig: ModalConfiguration = {\n      closeButtonLabel: `${modalCloseButtonLabel}`,\n      darkMode: false,\n      onHide: () => {\n        buttonRef?.focus();\n      }\n    };\n    show(<ModalContent content={content} />, modalConfig);\n  };\n\n  useEffect(() => {\n    if (focusedButton !== undefined && buttonsRef.current[focusedButton]) {\n      buttonsRef.current[focusedButton]?.focus();\n    }\n  }, [focusedButton]);\n\n  const handleKeyDown = (evt: KeyboardEvent, index?: number) => {\n    const currentFocus = document.activeElement;\n    const isFocusOnPanelButtons = buttonsRef.current.includes(currentFocus as HTMLButtonElement);\n\n    if ((evt.code === 'ArrowUp' || evt.code === 'ArrowDown') && isFocusOnPanelButtons) {\n      evt.preventDefault();\n\n      setFocusedButton((prevBtn) => {\n        const currentButton = prevBtn ?? 0;\n        const totalButtons = buttonsHeaderData.length;\n\n        if (evt.code === 'ArrowUp') {\n          return (currentButton - 1 + totalButtons) % totalButtons;\n        } else if (evt.code === 'ArrowDown') {\n          return (currentButton + 1) % totalButtons;\n        }\n      });\n    }\n\n    if (evt.code === 'Tab') {\n      const isKey = evt.code === 'Tab';\n\n      if (isKey && isFocusOnPanelButtons) {\n        if (evt.shiftKey) {\n          buttonsRef.current[0]?.focus();\n        } else {\n          buttonsRef.current[buttonsRef.current.length - 1]?.focus();\n        }\n      }\n    }\n\n    if ((evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') && isFocusOnPanelButtons) {\n      setIsPressed((prev) => {\n        const newPressedState = [...prev];\n        if (index !== undefined) newPressedState[index] = true;\n        return newPressedState;\n      });\n    }\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent, index: number) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      setIsPressed((prev) => {\n        const newPressedState = [...prev];\n        newPressedState[index] = false;\n        return newPressedState;\n      });\n    }\n  };\n\n  const handleMouseDown = (index: number) => {\n    setIsPressed((prev) => {\n      const newPressedState = [...prev];\n      newPressedState[index] = true;\n      return newPressedState;\n    });\n  };\n\n  const handleMouseUp = (index: number) => {\n    setIsPressed((prev) => {\n      const newPressedState = [...prev];\n      newPressedState[index] = false;\n      return newPressedState;\n    });\n  };\n\n  return (\n    <div className={panelSwitcherMobileClassName}>\n      <div ref={buttonListRef} className={panelButtonListClassNames}>\n        {Children.map(buttonsHeaderData, (child, index) => {\n          const key = `button-${generatedId}-${index}`;\n          const panelButtonClassNames = classNames('panel-button', { 'with-leading-icon': withIcon });\n          const pressingIcon = isPressed[index] ? leadingIconHover : leadingIcon;\n          return (\n            <Button\n              ref={(el) => {\n                buttonsRef.current[index] = el;\n              }}\n              key={key}\n              id={key}\n              className={panelButtonClassNames}\n              appearance=\"link\"\n              variant=\"neutral\"\n              hasIcon={true}\n              leadingIcon={withIcon ? pressingIcon : ''}\n              leadingIconHover={withIcon ? leadingIconHover : ''}\n              trailingIcon={isPressed[index] ? 'agora-solid-arrow-right-circle' : 'agora-line-arrow-right-circle'}\n              trailingIconHover=\"agora-solid-arrow-right-circle\"\n              onClick={() => openModalHandler(index)}\n              onMouseDown={() => handleMouseDown(index)}\n              onMouseUp={() => handleMouseUp(index)}\n              onKeyDown={(evt) => handleKeyDown(evt, index)}\n              onKeyUp={(evt) => handleKeyUp(evt, index)}\n            >\n              {child.props.children}\n            </Button>\n          );\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport const PanelSwitcherMobile: FC<PanelSwitcherMobileProps> = (props) => {\n  return (\n    <ModalProvider>\n      <PanelSwitcherMobileInternal {...props} />\n    </ModalProvider>\n  );\n};\n","import React, { Children, FC, isValidElement, ReactElement, useEffect, useRef, useState } from 'react';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { TabBodyProps, TabHeaderProps, TabProps } from '../tabs';\nimport { PanelSwitcherDesktop } from './desktop/panel-switcher-desktop';\nimport { PanelSwitcherMobile } from './mobile/panel-switcher-mobile';\n\nexport interface PanelSwitcherContainerProps {\n  /**\n   * Collection of the content displayed by triggering a panel button.\n   */\n  children: ReactElement<TabProps> | Array<ReactElement<TabProps>>;\n  /**\n   * Defines if the panel tabs have an icon preceding the text.\n   */\n  withIcon?: BooleanProp;\n  /**\n   * Defines the label of the modal close button.\n   */\n  modalCloseButtonLabel: string;\n  /**\n   * Defines the name of the icon to be displayed\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the icon to be displayed on mouse hover.\n   */\n  leadingIconHover?: string;\n}\n\nexport const PanelSwitcherContainer: FC<PanelSwitcherContainerProps> = ({\n  children,\n  withIcon,\n  modalCloseButtonLabel,\n  leadingIcon,\n  leadingIconHover\n}) => {\n  const panelRef = useRef<HTMLDivElement | null>(null);\n  const buttonListRef = useRef<HTMLDivElement | null>(null);\n\n  const [activeButton, setActiveButton] = useState(0);\n  const [buttonsHeaderData, setButtonsHeaderData] = useState<Array<ReactElement<TabHeaderProps>>>([]);\n  const [buttonsBodyData, setButtonsBodyData] = useState<Array<ReactElement<TabBodyProps>>>([]);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileOrTablet = width < xlScreen;\n\n  const activateButton = (index: number) => {\n    setActiveButton(index);\n  };\n\n  useEffect(() => {\n    const parsedChildren = Children.toArray(children) as ReactElement<TabProps>[];\n    const header: Array<ReactElement<TabHeaderProps>> = [];\n    const body: Array<ReactElement<TabBodyProps>> = [];\n\n    parsedChildren.forEach((element) => {\n      if (Array.isArray(element.props.children)) {\n        const [headerChild, bodyChild] = element.props.children;\n\n        if (headerChild && isValidElement(headerChild)) {\n          header.push(headerChild as ReactElement<TabHeaderProps>);\n        }\n\n        if (bodyChild && isValidElement(bodyChild)) {\n          body.push(bodyChild as ReactElement<TabBodyProps>);\n        }\n      }\n    });\n\n    setButtonsHeaderData(header);\n    setButtonsBodyData(body);\n  }, [children]);\n\n  return (\n    <>\n      {!isMobileOrTablet ? (\n        <PanelSwitcherDesktop\n          buttonsHeaderData={buttonsHeaderData}\n          buttonsBodyData={buttonsBodyData}\n          buttonListRef={buttonListRef}\n          panelRef={panelRef}\n          withIcon={withIcon}\n          leadingIcon={leadingIcon}\n          leadingIconHover={leadingIconHover}\n          activeButton={activeButton}\n          activateButton={activateButton}\n        />\n      ) : (\n        <PanelSwitcherMobile\n          buttonListRef={buttonListRef}\n          buttonsHeaderData={buttonsHeaderData}\n          buttonsBodyData={buttonsBodyData}\n          withIcon={withIcon}\n          leadingIcon={leadingIcon}\n          leadingIconHover={leadingIconHover}\n          modalCloseButtonLabel={modalCloseButtonLabel}\n          activeButton={activeButton}\n        />\n      )}\n    </>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\n\nexport interface TabBodyProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab body content.\n   */\n  children?: ReactNode;\n  /**\n   * Flag that sets the tab index of the tab body container accordingly to the following accessibility rule: When the tab panel does not contain any focusable elements or the first element with content is not focusable, the tabpanel should set tabindex=\"0\" to include it in the tab sequence of the page.\n   */\n  focusableContent?: BooleanProp;\n}\n\nexport const TabBody: FC<TabBodyProps> = (props: TabBodyProps) => <div {...props} />;\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nexport interface TabHeaderProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab header content.\n   */\n  children?: ReactNode;\n}\n\nexport const TabHeader: FC<TabHeaderProps> = (props: TabHeaderProps) => <div {...props} />;\n","import React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport { BooleanProp } from '@/models';\nimport { TabBodyProps } from './tab-body';\nimport { TabHeaderProps } from './tab-header';\n\nexport interface TabProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab content structure that contains a header and a body.\n   */\n  children?: Array<ReactElement<TabHeaderProps> | ReactElement<TabBodyProps>>;\n  /**\n   * Set tab as the active tab.\n   */\n  active?: BooleanProp;\n}\n\nexport const Tab: FC<TabProps> = (props: TabProps) => <div {...props} />;\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, RefObject, useId } from 'react';\nimport { TabBodyProps } from '../tab-body';\nimport { TabHeaderProps } from '../tab-header';\nimport { TabCurrentType } from '../tabs';\nimport './tabs-desktop.scss';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\n\nexport interface TabsDesktopProps extends ComponentPropsWithoutRef<'div'> {\n  fullWidth: BooleanProp;\n  vertically?: BooleanProp;\n  tabListRef: RefObject<HTMLDivElement | null>;\n  tabPanelRef: RefObject<HTMLDivElement | null>;\n  activeTab: number;\n  activateTab: (index: number) => void;\n  currentType: TabCurrentType;\n  tabPanelClassName: string;\n  tabsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  tabsBodyData: Array<ReactElement<TabBodyProps>>;\n}\n\nexport const TabsDesktop: FC<TabsDesktopProps> = ({\n  fullWidth,\n  className,\n  vertically,\n  tabListRef,\n  tabPanelRef,\n  activeTab,\n  activateTab,\n  currentType,\n  tabPanelClassName,\n  tabsHeaderData,\n  tabsBodyData\n}) => {\n  const generatedId = useId();\n\n  const tabsClassName = classNames(\n    'agora-tabs desktop',\n    { 'full-width': stringToBoolean(fullWidth), 'vertically': stringToBoolean(vertically) },\n    className\n  );\n\n  const tabListClassNames = classNames('tab-list desktop');\n\n  //  DESKTOP MUST ALWAYS KEEP A TAB OPEN\n  const desktopActiveTab = Math.max(activeTab, 0);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isDesktop = width >= xlScreen;\n\n  return (\n    <div hidden={!isDesktop} className={tabsClassName}>\n      <div ref={tabListRef} role=\"tablist\" className={tabListClassNames}>\n        {Children.map(tabsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n          const isActive = desktopActiveTab === index;\n\n          const key = `agora-tab-${generatedId}-${index}`;\n          const tabListItemClassNames = classNames('tab-list-item', {\n            'active': isActive,\n            'current-neutral': currentType === 'neutral',\n            'current-primary': currentType === 'primary',\n            'current-secondary': currentType === 'secondary'\n          });\n\n          return (\n            <button\n              id={key}\n              key={key}\n              role=\"tab\"\n              tabIndex={isActive ? 0 : -1}\n              onClick={(evt) => {\n                evt.currentTarget.blur();\n                activateTab(index);\n              }}\n              aria-selected={isActive}\n              className={tabListItemClassNames}\n            >\n              {child.props.children}\n            </button>\n          );\n        })}\n      </div>\n\n      {tabsBodyData[desktopActiveTab] && (\n        <div role=\"tabpanel\" className={tabPanelClassName} aria-labelledby={`agora-tab-${generatedId}-${desktopActiveTab}`}>\n          <div\n            className=\"tab-panel-content\"\n            ref={tabPanelRef}\n            {...(stringToBoolean(tabsBodyData[desktopActiveTab].props.focusableContent) ? { tabIndex: 0 } : { tabIndex: -1 })}\n          >\n            {tabsBodyData[desktopActiveTab].props.children}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, RefObject, useId } from 'react';\nimport { TabBodyProps } from '../tab-body';\nimport { TabHeaderProps } from '../tab-header';\nimport { TabCurrentType } from '../tabs';\nimport './tabs-mobile.scss';\n\nimport { Accordion } from '@/components/accordion';\nimport { AccordionGroup } from '@/components/accordion-group';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\n\ninterface TabsMobileProps extends ComponentPropsWithoutRef<'div'> {\n  fullWidth: BooleanProp;\n  tabListRef: RefObject<HTMLDivElement | null>;\n  activeTab: number;\n  activateTab: (index: number) => void;\n  currentType: TabCurrentType;\n  tabsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  tabsBodyData: Array<ReactElement<TabBodyProps>>;\n}\n\nexport const TabsMobile: FC<TabsMobileProps> = ({\n  fullWidth,\n  className,\n  tabListRef,\n  activeTab,\n  activateTab,\n  currentType,\n  tabsHeaderData,\n  tabsBodyData\n}) => {\n  const generatedId = useId();\n\n  const tabsClassName = classNames('agora-tabs mobile', { 'full-width': stringToBoolean(fullWidth) }, className);\n\n  const tabListClassNames = classNames('tab-list mobile');\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isTabletOrMobile = width < xlScreen;\n\n  return (\n    <div hidden={!isTabletOrMobile} className={tabsClassName}>\n      <div ref={tabListRef} role=\"tablist\" className={tabListClassNames}>\n        <AccordionGroup>\n          {Children.map(tabsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n            const isActive = activeTab === index;\n            const key = `agora-tab-${generatedId}-${index}`;\n            const tabListItemClassNames = classNames('tab-list-item mobile', {\n              'active': isActive,\n              'current-neutral': currentType === 'neutral',\n              'current-primary': currentType === 'primary',\n              'current-secondary': currentType === 'secondary'\n            });\n\n            return (\n              <Accordion\n                id={key}\n                key={key}\n                role=\"tab\"\n                onExpanded={() => {\n                  activateTab(index);\n                }}\n                onCollapsed={() => {\n                  activateTab(-1);\n                }}\n                aria-selected={isActive}\n                className={tabListItemClassNames}\n                headingTitle={child.props.children}\n                expanded={isActive}\n              >\n                {tabsBodyData[index].props.children}\n              </Accordion>\n            );\n          })}\n        </AccordionGroup>\n      </div>\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { TabProps } from './tab';\nimport { TabBodyProps } from './tab-body';\nimport { TabHeaderProps } from './tab-header';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { TabsDesktop } from './desktop/tabs-desktop';\nimport { TabsMobile } from './mobile/tabs-mobile';\n\nexport type TabCurrentType = 'neutral' | 'primary' | 'secondary';\n\nexport interface TabsProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Collection of tabs.\n   */\n  children: ReactElement<TabProps> | Array<ReactElement<TabProps>>;\n  /**\n   * Defines if tab headers should be rendered as full width tabs.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Automatic activation.\n   */\n  automaticActivation?: BooleanProp;\n  /**\n   * Tab vertical orientation\n   */\n  vertically?: BooleanProp;\n  /**\n   * Tab current style type\n   */\n  currentType?: TabCurrentType;\n  /**\n   * Tab activation event.\n   */\n  onTabActivation?: (index: number) => void;\n}\n\nexport const Tabs: FC<TabsProps> = ({\n  children,\n  automaticActivation = true,\n  fullWidth = false,\n  className = '',\n  vertically,\n  onTabActivation,\n  currentType = 'neutral',\n  ...props\n}) => {\n  const tabPanelRef = useRef<HTMLDivElement | null>(null);\n\n  const desktopTabListRef = useRef<HTMLDivElement | null>(null);\n  const mobileTabListRef = useRef<HTMLDivElement | null>(null);\n\n  const [activeTab, setActiveTab] = useState(0);\n  const [focusedTab, setFocusedTab] = useState(0);\n  const [tabsHeaderData, setTabsHeaderData] = useState<Array<ReactElement<TabHeaderProps>>>([]);\n  const [tabsBodyData, setTabsBodyData] = useState<Array<ReactElement<TabBodyProps>>>([]);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileOrTablet = width < xlScreen;\n\n  const activateTab = (index: number) => {\n    setActiveTab(index);\n    onTabActivation?.(index);\n  };\n\n  const activateFocusedTab = () => {\n    activateTab(focusedTab);\n  };\n\n  useEffect(() => {\n    const header: Array<ReactElement<TabHeaderProps>> = [];\n    const body: Array<ReactElement<TabBodyProps>> = [];\n\n    const parsedChildren = Children.toArray(children) as ReactElement<TabProps>[];\n\n    Children.forEach(parsedChildren, (element: ReactElement<TabProps>, index) => {\n      if (!isValidElement(element)) {\n        return;\n      }\n\n      if (stringToBoolean(element.props.active)) {\n        activateTab(index);\n      }\n\n      header.push(element.props?.children?.[0] as ReactElement<TabHeaderProps>);\n      body.push(element.props?.children?.[1] as ReactElement<TabBodyProps>);\n    });\n\n    setTabsHeaderData(header);\n    setTabsBodyData(body);\n  }, [children]);\n\n  const navigationArrowRight = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (!stringToBoolean(vertically) && !isMobileOrTablet) {\n      if (focusedTab === currentTabList.length - 1) {\n        currentTabList[0].focus();\n        newFocusedTab = 0;\n      } else {\n        newFocusedTab = focusedTab + 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n  const navigationArrowLeft = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (!stringToBoolean(vertically) && !isMobileOrTablet) {\n      if (focusedTab === 0) {\n        currentTabList[currentTabList.length - 1].focus();\n        newFocusedTab = currentTabList.length - 1;\n      } else {\n        newFocusedTab = focusedTab - 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n  const navigationArrowDown = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (stringToBoolean(vertically) || isMobileOrTablet) {\n      if (focusedTab === currentTabList.length - 1) {\n        currentTabList[0].focus();\n        newFocusedTab = 0;\n      } else {\n        newFocusedTab = focusedTab + 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n  const navigationArrowUp = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (stringToBoolean(vertically) || isMobileOrTablet) {\n      if (focusedTab === 0) {\n        currentTabList[currentTabList.length - 1].focus();\n        newFocusedTab = currentTabList.length - 1;\n      } else {\n        newFocusedTab = focusedTab - 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n  const navigationHome = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    const newFocusedTab = 0;\n\n    if (currentTabList[newFocusedTab]) {\n      currentTabList[newFocusedTab].focus();\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n  const navigationEnd = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    const newFocusedTab = currentTabList.length - 1;\n\n    if (currentTabList[newFocusedTab]) {\n      currentTabList[newFocusedTab].focus();\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const handleTabListItemKeyDown = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const eventTargetTag = (evt.target as HTMLElement).tagName;\n    const eventTargetParentRole = (evt.target as HTMLElement).parentElement?.role;\n\n    if (isMobileOrTablet) {\n      return;\n    }\n\n    const tabs = Array.from(desktopTabListRef.current?.querySelectorAll('.tab-list-item') ?? []).map((o) => o as HTMLButtonElement);\n    if (tabs.length == 0) {\n      return;\n    }\n\n    if (evt.code === 'Tab') {\n      const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n      if (isOnTabList && !evt.shiftKey) {\n        evt.preventDefault();\n        tabPanelRef.current?.focus();\n        return;\n      }\n\n      const isOnTabPanel = tabPanelRef.current === document.activeElement;\n      if (isOnTabPanel && evt.shiftKey) {\n        evt.preventDefault();\n\n        if (tabs[activeTab]) {\n          tabs[activeTab].focus();\n        }\n        return;\n      }\n\n      return;\n    }\n\n    switch (evt.code) {\n      case 'Home':\n        navigationHome(tabs);\n        break;\n\n      case 'End':\n        navigationEnd(tabs);\n        break;\n\n      case 'ArrowRight':\n        navigationArrowRight(tabs);\n        break;\n\n      case 'ArrowLeft':\n        navigationArrowLeft(tabs);\n        break;\n\n      case 'ArrowDown':\n        navigationArrowDown(tabs);\n        break;\n\n      case 'ArrowUp':\n        navigationArrowUp(tabs);\n        break;\n\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        if (eventTargetTag === 'BUTTON' && eventTargetParentRole === 'tablist') {\n          evt.preventDefault();\n          activateFocusedTab();\n          break;\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  const tabPanelClassName = classNames('tab-panel', {\n    'current-neutral': currentType === 'neutral',\n    'current-primary': currentType === 'primary',\n    'current-secondary': currentType === 'secondary'\n  });\n\n  return (\n    <div {...props} role=\"none\" onKeyDown={handleTabListItemKeyDown}>\n      <TabsDesktop\n        className={className}\n        fullWidth={fullWidth}\n        vertically={vertically}\n        tabListRef={desktopTabListRef}\n        tabPanelRef={tabPanelRef}\n        activeTab={activeTab}\n        activateTab={activateTab}\n        currentType={currentType}\n        tabPanelClassName={tabPanelClassName}\n        tabsHeaderData={tabsHeaderData}\n        tabsBodyData={tabsBodyData}\n      />\n\n      <TabsMobile\n        className={className}\n        fullWidth={fullWidth}\n        tabListRef={mobileTabListRef}\n        activeTab={activeTab}\n        activateTab={activateTab}\n        currentType={currentType}\n        tabsHeaderData={tabsHeaderData}\n        tabsBodyData={tabsBodyData}\n      />\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { FC, ReactNode } from 'react';\nimport { PanelSwitcherContainer } from './panel-switcher-container';\nimport { Tab, TabBody, TabHeader } from '../tabs';\nimport { BooleanProp } from '@/models';\n\nexport interface PanelSwitcherProps {\n  /**\n   * Collection of the content displayed by triggering a panel button.\n   */\n  children: ReactNode | Array<ReactNode>;\n  /**\n   * Collection of the string content displayed inside each panel button.\n   */\n  panelButtons: string | Array<string>;\n  /**\n   * Defines the label of the modal close button.\n   */\n  modalCloseButtonLabel: string;\n  /**\n   * Defines if the panel buttons have an icon preceding the text.\n   */\n  withIcon?: BooleanProp;\n  /**\n   * Defines the name of the icon to be displayed.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the icon to be displayed on mouse hover.\n   */\n  leadingIconHover?: string;\n}\n\nexport const PanelSwitcher: FC<PanelSwitcherProps> = ({ children, panelButtons, ...props }) => {\n  const panelSwitcherHeaders = Array.isArray(panelButtons) ? panelButtons : [panelButtons];\n  const panelSwitcherContent = Array.isArray(children) ? children : [children];\n\n  const switcherButtons = panelSwitcherHeaders.map((header, index) => ({\n    header,\n    body: panelSwitcherContent[index]\n  }));\n\n  const panelSwitcherClassName = classNames('agora-panel-switcher');\n\n  return (\n    <div className={panelSwitcherClassName}>\n      <PanelSwitcherContainer {...props}>\n        {switcherButtons.map((btn, index) => {\n          const key = `key-${index}`;\n          return (\n            <Tab key={key}>\n              <TabHeader>{btn.header}</TabHeader>\n              <TabBody>{btn.body}</TabBody>\n            </Tab>\n          );\n        })}\n      </PanelSwitcherContainer>\n    </div>\n  );\n};\n","import { createContext, ReactNode, useContext } from 'react';\nimport { DialogElement } from '../dialog';\nimport { PopupConfiguration } from './popup-config.model';\n\nexport interface PopupContextProps {\n  /**\n   * The visible dialog element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a dialog is visible or not.\n   */\n  visibility?: boolean;\n  /**\n   * Shows a new popup with the configurations provided.\n   */\n  show: (content: ReactNode, config: PopupConfiguration) => void;\n  /**\n   * Hides the visible popup.\n   */\n  hide: () => void;\n}\n\nconst PopupContext = createContext<PopupContextProps>({} as PopupContextProps);\n\nconst usePopupContext = (): PopupContextProps => {\n  return useContext(PopupContext);\n};\n\nexport { PopupContext, usePopupContext };\n","import { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { PopupConfiguration } from './popup-config.model';\nimport { usePopupContext } from './popup-context';\nimport './popup-dialog.scss';\nimport { useWindowSize } from '@/hooks';\n\nexport interface PopupDialogProps {\n  /**\n   *  Popup configurations\n   */\n  configurations: PopupConfiguration;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nexport const PopupDialog: FC<PopupDialogProps> = ({ configurations, children }) => {\n  const { height, width } = useWindowSize();\n\n  const popupContainerRef = useRef<HTMLDivElement>(null);\n  const popupHeaderRef = useRef<HTMLDivElement>(null);\n\n  const [containerMaxHeight, setContainerMaxHeight] = useState('');\n  const [maxHeight, setMaxHeight] = useState('');\n\n  const { hide } = usePopupContext();\n\n  const dialogClassNames = classNames('agora-popup-dialog max-h-full rounded-16 p-32', `agora-popup-dialog-${configurations.dimensions}`, {\n    'dark-mode': stringToBoolean(configurations.darkMode)\n  });\n\n  const titleClassNames = classNames('title mt-8 w-full line-clamp-6 text-xl-bold');\n\n  useEffect(() => {\n    const containerElem = popupContainerRef.current;\n    const headerElem = popupHeaderRef.current;\n\n    if (containerElem && headerElem) {\n      let margins = 64 * 2;\n\n      if (width >= 768) {\n        margins = 128 * 2;\n      }\n\n      const containerHeight = height - margins;\n      const { height: headerHeight } = (headerElem as HTMLElement).getBoundingClientRect();\n\n      setContainerMaxHeight(`${containerHeight}px`);\n      setMaxHeight(`${containerHeight - headerHeight - 16 - 64}px`);\n    }\n  }, [children, width, height]);\n\n  return (\n    <div className=\"absolute z-dialog  max-h-full flex justify-center my-64 md:my-128 mx-32 md:mx-auto\">\n      <div ref={popupContainerRef} className={dialogClassNames} style={{ maxHeight: containerMaxHeight ?? 'none' }}>\n        <div ref={popupHeaderRef} className=\"agora-popup-dialog-header flex flex-row items-start gap-24 mb-16\">\n          <div className={titleClassNames}>{configurations.title}</div>\n          <Button\n            onClick={hide}\n            appearance=\"link\"\n            variant=\"neutral\"\n            iconOnly\n            hasIcon\n            trailingIcon=\"agora-line-x\"\n            trailingIconHover=\"agora-solid-x\"\n            aria-label={configurations.closeAriaLabel}\n            darkMode={configurations.darkMode}\n          ></Button>\n        </div>\n        <div style={{ maxHeight: maxHeight ?? 'none' }} className={`agora-popup-dialog-body overflow-y-auto`}>\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils';\nimport { PopupConfiguration } from './popup-config.model';\nimport { PopupContext, PopupContextProps } from './popup-context';\nimport { PopupDialog } from './popup-dialog';\n\nexport interface PopupProviderProps {\n  /**\n   * If not a fullscreen dialog, allows the user to dismiss the dialog by clicking in the backdrop\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Allows the dialog to be closed by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n}\n\nconst PopupProvider: FC<PopupProviderProps> = ({ dismissOnBackdropClick = true, dismissOnEscape = true, children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n  const [dialogConfigs, setDialogConfigs] = useState<PopupConfiguration>();\n\n  const show = useCallback(\n    (currentDialogChildren: ReactNode, currentDialogConfigs: PopupConfiguration) => {\n      setDialogChildren(currentDialogChildren);\n      setDialogConfigs(currentDialogConfigs);\n      dialogRef.current?.show();\n    },\n    [setDialogChildren, setDialogConfigs]\n  );\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        show,\n        hide\n      }) as PopupContextProps,\n    [show, hide]\n  );\n\n  return (\n    <PopupContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen={false}\n        dismissOnBackdropClick={stringToBoolean(dismissOnBackdropClick)}\n        dismissOnEscape={stringToBoolean(dismissOnEscape)}\n        aria-label={dialogConfigs?.['aria-label']}\n      >\n        {!!dialogConfigs && <PopupDialog configurations={dialogConfigs}>{dialogChildren}</PopupDialog>}\n      </Dialog>\n      {children}\n    </PopupContext>\n  );\n};\n\nexport { PopupProvider };\n","import React, { ComponentProps, FC, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './progress-bar.scss';\n\nexport interface ProgressBarProps extends ComponentProps<'div'> {\n  /**\n   * The current value of the progress.\n   */\n  value?: number;\n  /**\n   * The maximum value of the progress.\n   */\n  max?: number;\n  /**\n   * The label text to display.\n   */\n  label?: string;\n  /**\n   * Whether to hide the label or not.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Whether to hide the percentage value or not.\n   */\n  hidePercentageValue?: BooleanProp;\n  /**\n   * Whether the progress is current/active or not.\n   */\n  current?: BooleanProp;\n  /**\n   * Whether the progress has error or not.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Whether the progress bar is the first or not.\n   */\n  isFirst?: boolean;\n  /**\n   * Whether the progress bar is the last or not.\n   */\n  isLast?: boolean;\n  /**\n   * Whether the progress bass is in the middle or not.\n   */\n  isMiddle?: boolean;\n  /**\n   * The flag to set if the progress bar is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const ProgressBar: FC<ProgressBarProps> = ({\n  value = 0,\n  max = 0,\n  className,\n  label,\n  hideLabel,\n  hidePercentageValue,\n  current,\n  hasError,\n  isFirst,\n  isLast,\n  isMiddle,\n  darkMode = false,\n  ...props\n}) => {\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const progressPercentage = max !== 0 ? ((value / max) * 100).toFixed(0) : 0;\n\n  const classes = classNames('agora-progress-bar', className, {\n    'progress-error': stringToBoolean(hasError),\n    'progress-complete': value > 0 && value === max,\n    'progress-empty': value === 0,\n    'progress-progress': stringToBoolean(current) && value < max,\n    'progress-hold': !stringToBoolean(current) && value < max,\n    'progress-bar-border-left': isFirst,\n    'progress-bar-border-right': isLast,\n    'progress-bar-border-horizontal': !isFirst && !isLast && !isMiddle,\n    'dark-mode': darkMode\n  });\n\n  const labelsClasses = classNames('agora-progress-bar progress-bar-labels', {\n    'dark-mode': darkMode\n  });\n\n  const percentageClasses = classNames(labelsClasses, {\n    'sr-only': stringToBoolean(hidePercentageValue),\n    'not-sr-only': !stringToBoolean(hidePercentageValue)\n  });\n\n  return (\n    <div className={classes} {...props}>\n      {!stringToBoolean(hideLabel) && (\n        <label htmlFor={propsClone.id} className={labelsClasses}>\n          {label}\n        </label>\n      )}\n      <progress\n        id={propsClone.id}\n        className=\"progress-bar\"\n        value={value}\n        max={max}\n        aria-valuetext={`${value}/${max}`}\n        aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n      />\n      <p className={percentageClasses} role=\"status\">\n        {progressPercentage}%\n      </p>\n    </div>\n  );\n};\n","import React, { Children, cloneElement, FC, Fragment, HtmlHTMLAttributes, isValidElement, ReactElement, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ProgressBarProps } from '@/components/progress-bar';\n\nimport './progress-bar-group.scss';\nimport { BooleanProp } from '@/models';\n\nexport interface ProgressBarGroupProps extends HtmlHTMLAttributes<HTMLDivElement> {\n  /**\n   * The label text to display.\n   */\n  label?: string;\n  /**\n   * Whether to hide the label or not.\n   */\n  hideLabel?: boolean;\n  /**\n   * List of progress components to use as children of the group.\n   */\n  children?: ReactElement<ProgressBarProps> | Array<ReactElement<ProgressBarProps>>;\n  /**\n   * Whether to hide the percentage value or not.\n   */\n  hidePercentageValues?: boolean;\n  /**\n   * Whether to display the progress bars in a sequential order or not.\n   */\n  sequential?: boolean;\n  /**\n   * The flag to set if the progress bar group is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const ProgressBarGroup: FC<ProgressBarGroupProps> = ({\n  label,\n  hideLabel,\n  hidePercentageValues,\n  children,\n  sequential,\n  darkMode = false,\n  ...props\n}): ReactElement => {\n  const progressBars = Children.toArray(children);\n\n  const activeCurrent = useMemo(() => {\n    let foundCurrent = false;\n    let currentCount = 0;\n\n    progressBars.forEach((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        if (p.props.current) {\n          currentCount += 1;\n          foundCurrent = true;\n        }\n      }\n    });\n\n    if (!foundCurrent) {\n      return 0;\n    }\n\n    if (foundCurrent && currentCount === 1) {\n      return progressBars.findIndex((p) => isValidElement<ProgressBarProps>(p) && p.props.current);\n    }\n\n    const firstNotCompletedIndex = progressBars.findIndex((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        const validatedValue = Math.max(0, Math.min(p.props.value ?? 0, p.props.max ?? 0));\n\n        return validatedValue < (p.props.max ?? 0);\n      }\n\n      return false;\n    });\n\n    return firstNotCompletedIndex < 0 ? progressBars.length - 1 : firstNotCompletedIndex;\n  }, [progressBars]);\n\n  const sumMaxValues = useMemo(() => {\n    let currentCount = 0;\n\n    progressBars.forEach((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        currentCount += p.props.max ?? 0;\n      }\n    });\n\n    return currentCount;\n  }, [progressBars]);\n\n  // function to render progress bars\n  const renderProgressBars = (child: ReactElement<ProgressBarProps>, index: number) => {\n    const isCurrent = index === activeCurrent;\n    let currentVal = child.props.value ?? 0;\n\n    if (sequential) {\n      currentVal = activeCurrent < index ? 0 : currentVal;\n    }\n    const isFirst = index === 0;\n    const isLast = index === progressBars.length - 1;\n    const isSingle = progressBars.length === 1;\n    const isMiddle = !isFirst && !isLast && !isSingle;\n\n    return cloneElement<ProgressBarProps>(child, {\n      'current': isCurrent,\n      'value': currentVal,\n      'aria-hidden': true,\n      isFirst,\n      isLast,\n      isMiddle,\n      darkMode\n    });\n  };\n\n  // function to be used to calculate the progress value\n  const getProgressValue = () => {\n    let value = 0;\n    Children.forEach(children, (child, index) => {\n      if (isValidElement<ProgressBarProps>(child)) {\n        if (child.props.value !== undefined && child.props.max !== undefined) {\n          if (!sequential || index <= activeCurrent) {\n            value += Math.min(child.props.value, child.props.max);\n          }\n        }\n      }\n    });\n    return Math.round((value / sumMaxValues) * 100);\n  };\n\n  const labelsClasses = classNames('agora-progress-bar progress-bar-labels', {\n    'dark-mode': darkMode\n  });\n\n  const percentageClasses = classNames(labelsClasses, {\n    'sr-only': hidePercentageValues,\n    'not-sr-only': !hidePercentageValues\n  });\n\n  const progressValue = getProgressValue();\n\n  return (\n    <div {...props}>\n      {!hideLabel && (\n        <div aria-hidden className={labelsClasses}>\n          {label}\n        </div>\n      )}\n      <div\n        className=\"progress-bar-group\"\n        role=\"progressbar\"\n        aria-valuenow={progressValue}\n        aria-valuetext={`${progressValue}%`}\n        aria-valuemax={100}\n        aria-label={label}\n      >\n        {Children.map(children, (child, index) =>\n          isValidElement<ProgressBarProps>(child) ? (\n            <Fragment key={child.props.id ?? index}>{renderProgressBars(child, index)}</Fragment>\n          ) : null\n        )}\n      </div>\n      {!hidePercentageValues && (\n        <div className={percentageClasses} role=\"status\">\n          {progressValue}%\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Feedback } from '@/components/shared/feedback';\n\nimport './radio.scss';\n\nexport interface RadioButtonProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Child elements to render as custom label.\n   */\n  children?: ReactNode;\n  /**\n   * The flag to set if the radio button is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst RadioButton: FC<RadioButtonProps> = ({\n  ref = null,\n  label,\n  hasError,\n  hideLabel,\n  required = true,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  darkMode,\n  children,\n  className = '',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const inputWrapper = classNames(\n    'agora-radio-button',\n    {\n      disabled: props.disabled,\n      error: stringToBoolean(hasError),\n      dark: stringToBoolean(darkMode)\n    },\n    className\n  );\n\n  return (\n    <>\n      <div hidden={propsClone.hidden} className={inputWrapper}>\n        <input\n          {...propsClone}\n          aria-describedby={hasFeedbackText ? `radio-${propsClone.id}-feedback` : (propsClone['aria-describedby'] ?? undefined)}\n          className=\"inner-input\"\n          type=\"radio\"\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          ref={ref}\n          required={isRequired}\n          tabIndex={propsClone.disabled ? -1 : 0}\n          disabled={propsClone.disabled}\n        />\n\n        <div className=\"radio-wrapper\">\n          <div className=\"mark-wrapper\">\n            <span className=\"mark\" />\n          </div>\n          {!hideLabel && (\n            <label className=\"label-wrapper\" htmlFor={propsClone.id}>\n              <span className=\"label\">{children ?? label}</span>\n            </label>\n          )}\n        </div>\n      </div>\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <div className=\"agora-radio-button-feedback px-8\">\n          <Feedback\n            id={`radio-${propsClone.id}-feedback`}\n            feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n            feedbackText={feedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport { RadioButton };\n","import { Checkbox, CheckboxProps } from '@/components/checkbox';\nimport { InputSelectProps } from '@/components/input-select';\nimport { RadioButton, RadioButtonProps } from '@/components/radio';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, isValidElement, ReactElement } from 'react';\nimport './quiz-option.scss';\n\nexport interface QuizOptionProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactElement<RadioButtonProps | CheckboxProps | InputSelectProps>;\n}\n\nexport const QuizOption: FC<QuizOptionProps> = ({ children, className = '', ...props }) => {\n  let isChildrenSelected = false;\n\n  if (isValidElement<RadioButtonProps>(children) && (children as ReactElement).type === RadioButton) {\n    isChildrenSelected = !!children.props.checked;\n  }\n\n  if (isValidElement<CheckboxProps>(children) && (children as ReactElement).type === Checkbox) {\n    isChildrenSelected = !!children.props.checked;\n  }\n\n  //  There is no need to check for input select because there is no need to style it (check figma).\n\n  const QuizOptionsClassName = classNames(className, 'agora-quiz-option', {\n    selected: isChildrenSelected\n  });\n\n  return (\n    <div className={QuizOptionsClassName} {...props}>\n      {children}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport { QuizOptionProps } from '@/components/quiz/quiz-option';\n\nexport interface QuizOptionsProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children: ReactElement<QuizOptionProps> | Array<ReactElement<QuizOptionProps>>;\n}\n\nexport const QuizOptions: FC<QuizOptionsProps> = ({ ...props }) => {\n  return <div {...props}>{props.children}</div>;\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Button } from '@/components/button';\nimport './quiz-item-summary.scss';\n\nexport interface QuizItemSummaryProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * The dark mode boolean.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Navigation link. It can be a native anchor or any other type of link (example: NextJS link, ReactRouter Link, etc...).\n   */\n  backLink?: ReactNode;\n}\n\nexport const QuizItemSummary: FC<QuizItemSummaryProps> = ({ children, darkMode = false, backLink, className = '', ...props }) => {\n  const QuizItemSummaryClassName = classNames(className, 'agora-quiz-item-summary flex gap-x-32 justify-between items-center flex-wrap');\n\n  return (\n    <div className={QuizItemSummaryClassName} {...props}>\n      <div>{children}</div>\n      <Button\n        hasIcon\n        leadingIcon=\"agora-line-arrow-left-anchor\"\n        leadingIconHover=\"agora-solid-arrow-left-anchor\"\n        variant=\"primary\"\n        appearance=\"link\"\n        darkMode={stringToBoolean(darkMode)}\n      >\n        {backLink}\n      </Button>\n    </div>\n  );\n};\n","import React, { ChangeEvent, Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { RadioButtonProps } from '@/components/radio';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport interface RadioButtonGroupProps extends Omit<HtmlHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n  /**\n   * Group legend.\n   */\n  legend?: ReactNode;\n  /**\n   * Group name\n   */\n  name?: string;\n  /**\n   * Sets the radio button in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below radio-button.\n   */\n  feedbackText?: ReactNode;\n\n  /**\n   *  List of radio button components to use as children of the group.\n   */\n  children?: ReactElement<RadioButtonProps> | Array<ReactElement<RadioButtonProps>>;\n  /**\n   *  Event triggered whenever any of the radio buttons changes is own state.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n}\nconst RadioButtonGroup: FC<RadioButtonGroupProps> = ({\n  className,\n  legend,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  onChange,\n\n  children,\n  name,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const innerOnChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(evt);\n  };\n\n  const containerClasses = classNames('agora-radio-button-group', className);\n\n  const mappedRadioButtons = Children.map(children, (child) => {\n    if (!isValidElement<RadioButtonProps>(child)) {\n      return null;\n    }\n\n    return cloneElement<RadioButtonProps>(child, {\n      'onChange': innerOnChange,\n      'name': name ?? generatedId,\n      'hasError': stringToBoolean(hasError),\n      'hasFeedback': stringToBoolean(hasFeedback),\n      'aria-describedby': hasFeedbackText ? `radio-group-${generatedId}-feedback` : undefined\n    } as RadioButtonProps);\n  });\n\n  return (\n    <div className={containerClasses}>\n      <fieldset {...props}>\n        {legend && <legend className=\"text-primary-900 text-m-medium mb-8\">{legend}</legend>}\n\n        {mappedRadioButtons}\n      </fieldset>\n\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <Feedback\n          id={`radio-group-${generatedId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { RadioButtonGroup };\n","import { SVGIconProps } from '@/models';\nimport { ComponentType, lazy, LazyExoticComponent } from 'react';\n\nexport const scribblesList: Record<string, LazyExoticComponent<ComponentType<SVGIconProps>>> = {\n  // Wave\n  'agora-wave-left-l': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-left-l')),\n  'agora-wave-right-l': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-right-l')),\n  'agora-wave-right-m': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-right-m')),\n\n  // Detail\n  'agora-detail-fluid': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-fluid')),\n  'agora-detail-talk': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-talk')),\n  'agora-detail-chat': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-chat')),\n  'agora-detail-movement': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-movement')),\n  'agora-detail-attention': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-attention')),\n\n  // Arrow\n  'agora-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-right')),\n  'agora-arrow-curve-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-curve-right')),\n  'agora-arrow-down-left': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-down-left')),\n  'agora-arrow-loop': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-loop')),\n  'agora-arrow-down-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-down-right')),\n  'agora-arrow-up-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-up-right')),\n\n  // Bold\n  'agora-bold-arrow': lazy<ComponentType<SVGIconProps>>(() => import('./bold/bold-arrow')),\n  'agora-bold-line': lazy<ComponentType<SVGIconProps>>(() => import('./bold/bold-line')),\n\n  // Line\n  'agora-line-straight': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-straight')),\n  'agora-line-zig-zag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-zig-zag')),\n  'agora-line-zig': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-zig')),\n\n  // Circle\n  'agora-circle-right-l': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-right-l')),\n  'agora-circle-left-l': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-left-l')),\n  'agora-circle-right-xxl': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-right-xxl')),\n  'agora-circle-left-xxl': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-left-xxl'))\n};\n\nexport const allScribbles = Object.keys(scribblesList);\n\nexport type ScribblesName = (typeof allScribbles)[number];\n\nexport const isBundledScribbles = (name: string) => {\n  return !!allScribbles.find((i) => i === name);\n};\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, ComponentType, FC, HTMLProps, LazyExoticComponent, Suspense, SVGProps } from 'react';\nimport { BooleanProp, SVGIconProps } from '@/models';\nimport { isBundledScribbles, scribblesList, ScribblesName } from './assets';\nimport './scribbles.scss';\nimport { stringToBoolean } from '@/utils';\n\nconst scribblesCache: Record<ScribblesName, LazyExoticComponent<ComponentType<SVGIconProps>>> = {};\n\nconst loadScribbles = (name: ScribblesName): LazyExoticComponent<ComponentType<SVGIconProps>> => {\n  const cachedScribbles = scribblesCache[name];\n\n  if (cachedScribbles) {\n    return cachedScribbles;\n  }\n\n  const lazyScribble = scribblesList[name];\n\n  scribblesCache[name] = lazyScribble;\n\n  return lazyScribble;\n};\n\ntype SuperScribblesProps = SVGProps<SVGSVGElement> & HTMLProps<HTMLImageElement>;\n\nexport interface ScribblesProps extends SuperScribblesProps {\n  /**\n   * Scribbles name to be used.\n   */\n  name: ScribblesName;\n  /**\n   * Dark mode\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Callback to run when scribble is loaded.\n   */\n  onScribblesLoad?: () => void;\n\n  /**\n   * Callback to run when scribble fails to load.\n   */\n  onScribblesError?: () => void;\n}\n\nexport const Scribbles: FC<ScribblesProps> = ({ name, darkMode, onScribblesLoad, onScribblesError, ...props }) => {\n  const classes = classNames('agora-scribbles', props.className, name, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const onLoad = () => {\n    onScribblesLoad?.();\n  };\n\n  const onError = () => {\n    onScribblesError?.();\n  };\n\n  //  CHECK IF HAS NAME AND IF EXISTS ON BUNDLE\n  const isScribbles = name !== '' && isBundledScribbles(name);\n  if (!isScribbles) {\n    onError();\n    return;\n  }\n\n  //  LOAD IT\n  const LazyScribble = loadScribbles(name);\n\n  const fullProps = {\n    ...props,\n    className: classes,\n    title: props.title ?? props.alt\n  } as ComponentPropsWithoutRef<'svg'>;\n\n  onLoad();\n\n  return (\n    LazyScribble && (\n      <Suspense>\n        <LazyScribble {...fullProps} />\n      </Suspense>\n    )\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\nimport { BooleanProp } from '@/models';\nimport classNames from 'classnames';\nimport { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\n\nexport interface SearchPageProps extends ComponentProps<'div'> {\n  /**\n   * Current page.\n   */\n  current?: BooleanProp;\n\n  /**\n   * Page number.\n   */\n  pageNumber?: number;\n}\n\nconst SearchPage: FC<SearchPageProps> = ({ ref = null, className, current, pageNumber, ...props }) => {\n  const containerClasses = classNames('search-page', className, {\n    current: stringToBoolean(current)\n  });\n\n  return (\n    <div {...props} ref={ref}>\n      <Button\n        className={containerClasses}\n        appearance=\"link\"\n        aria-label={pageNumber?.toString()}\n        {...(stringToBoolean(current) ? { 'aria-current': 'page' } : {})}\n      >\n        {pageNumber}\n      </Button>\n    </div>\n  );\n};\n\nexport { SearchPage };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nexport interface SearchPaginationNumberOverlayProps extends ComponentProps<'div'> {\n  /**\n   * Dots value.\n   */\n  value?: string;\n}\n\nconst SearchPaginationNumberOverlay: FC<SearchPaginationNumberOverlayProps> = ({ ref = null, className, value, ...props }) => {\n  const classes = classNames('nav-number-overlay', className);\n\n  return (\n    <div {...props} ref={ref} className={classes}>\n      {value}\n    </div>\n  );\n};\n\nexport { SearchPaginationNumberOverlay };\n","import React, { cloneElement, ComponentProps, FC, useEffect, useMemo, useState } from 'react';\nimport { Button } from '@/components/button';\nimport { useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport { SearchPage, SearchPageProps } from './search-page';\nimport { SearchPaginationNumberOverlay } from './search-pagination-number-overlay';\nimport './search-pagination.scss';\n\nexport interface SearchPaginationProps extends Omit<ComponentProps<'nav'>, 'onChange'> {\n  /**\n   * Define the total number of pages.\n   */\n  totalPages?: number;\n\n  /**\n   * The flag to hide previous page button.\n   */\n  hidePreviousPageButton?: BooleanProp;\n\n  /**\n   * The flag to hide next page button.\n   */\n  hideNextPageButton?: BooleanProp;\n\n  /**\n   * Define the number of visible page buttons at the beginning and end.\n   */\n  boundaryCount?: number;\n\n  /**\n   * Define the number of visible page buttons before and after the current page.\n   */\n  siblingCount?: number;\n\n  /**\n   * Search Pagination navigation alternative text.\n   */\n  label: string;\n\n  /**\n   * Next page button alternative text.\n   */\n  nextPageAriaLabel: string;\n\n  /**\n   * Previous page button alternative text.\n   */\n  previousPageAriaLabel: string;\n\n  /**\n   *  Event triggered whenever any of the search pages changes is current state.\n   */\n  onChange?: (page: number) => void;\n}\n\nconst SearchPagination: FC<SearchPaginationProps> = ({\n  ref = null,\n  totalPages = 0,\n  className,\n  hidePreviousPageButton,\n  hideNextPageButton,\n  boundaryCount = 0,\n  siblingCount = 0,\n  label,\n  nextPageAriaLabel,\n  previousPageAriaLabel,\n  onChange,\n  ...props\n}) => {\n  const { width } = useWindowSize();\n  const [activePage, setActivePage] = useState(0);\n  const navArrowsClasses = classNames('nav-arrows');\n\n  // Mobile screen limitations\n  if (width < 360) {\n    boundaryCount = 1;\n    siblingCount = 0;\n  }\n\n  useEffect(() => {\n    asyncTrigger(() => onChange?.(activePage));\n  }, [activePage]);\n\n  const prev = () => {\n    if (activePage > 0) {\n      setActivePage((prevPage) => prevPage - 1);\n    }\n  };\n\n  const next = () => {\n    if (activePage < totalPages - 1) {\n      setActivePage((prevPage) => prevPage + 1);\n    }\n  };\n\n  const pages = Array.from({ length: totalPages }, (_, index) => {\n    return <SearchPage key={index} pageNumber={index + 1} />;\n  });\n\n  const showAllPagesContent = useMemo(() => {\n    return pages?.map((page, page_index) => {\n      return cloneElement<SearchPageProps>(page, {\n        ...page.props,\n        onClick: () => setActivePage(page_index),\n        current: stringToBoolean(activePage === page_index)\n      } as SearchPageProps);\n    });\n  }, [className, totalPages, boundaryCount, siblingCount, activePage]);\n\n  const paginationContent = useMemo(() => {\n    // Calculate left and right sibling index and make sure they are within range index 0 and totalPages\n    const leftSiblingIndex = Math.max(activePage - siblingCount, 0);\n    const rightSiblingIndex = Math.min(activePage + siblingCount, totalPages);\n\n    // Get visible pagination numbers\n    const leftRange = pages.slice(0, boundaryCount);\n    const middleRange = pages.slice(leftSiblingIndex, rightSiblingIndex + 1);\n    const rightRange = pages.slice(totalPages - boundaryCount, totalPages);\n    const visiblePages = [...new Set([...leftRange, ...middleRange, ...rightRange])];\n\n    // Preview pagination dots if necessary\n    const shouldShowLeftDots = leftSiblingIndex > boundaryCount;\n    const shouldShowRightDots = rightSiblingIndex < totalPages - (boundaryCount + 1);\n\n    return pages?.map((page, page_index) => {\n      if (visiblePages.some((item) => page == item)) {\n        return cloneElement<SearchPageProps>(page, {\n          ...page.props,\n          onClick: () => setActivePage(page_index),\n          current: stringToBoolean(activePage === page_index)\n        } as SearchPageProps);\n      }\n\n      if (shouldShowLeftDots && page_index == boundaryCount) {\n        return <SearchPaginationNumberOverlay key=\"left-dots\" value=\"...\" />;\n      }\n\n      if (shouldShowRightDots && page_index == totalPages - boundaryCount - 1) {\n        return <SearchPaginationNumberOverlay key=\"right-dots\" value=\"...\" />;\n      }\n    });\n  }, [className, totalPages, boundaryCount, siblingCount, activePage]);\n\n  return (\n    <nav {...props} aria-label={label} className=\"agora-search-pagination\" ref={ref}>\n      <Button\n        onClick={prev}\n        appearance=\"link\"\n        hasIcon=\"true\"\n        iconOnly=\"true\"\n        leadingIcon=\"agora-solid-chevron-left\"\n        leadingIconHover=\"agora-solid-chevron-left\"\n        disabled={activePage === 0}\n        className={`${navArrowsClasses} ${stringToBoolean(hidePreviousPageButton) ? 'hide-arrow' : 'show-arrow'}`}\n        aria-label={previousPageAriaLabel}\n      ></Button>\n      <div className=\"nav-pages\">{boundaryCount === 0 && siblingCount === 0 ? showAllPagesContent : paginationContent}</div>\n      <Button\n        onClick={next}\n        appearance=\"link\"\n        hasIcon=\"true\"\n        iconOnly=\"true\"\n        trailingIcon=\"agora-solid-chevron-right\"\n        trailingIconHover=\"agora-solid-chevron-right\"\n        disabled={activePage === totalPages - 1}\n        className={`${navArrowsClasses} ${stringToBoolean(hideNextPageButton) ? 'hide-arrow' : 'show-arrow'}`}\n        aria-label={nextPageAriaLabel}\n      ></Button>\n    </nav>\n  );\n};\n\nexport { SearchPagination };\n","import { RefObject } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\n// Function to, when sidebar navigation, expand all items until level of current item.\nexport const openOnCurrentItem = (sidebarRef: RefObject<HTMLUListElement>, flat: BooleanProp) => {\n  const agoraSidebar: HTMLUListElement | null = sidebarRef.current as unknown as HTMLUListElement;\n  const treeItems = agoraSidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLAnchorElement[];\n  const currentTreeItem = [...treeItems].find((e) => e.ariaCurrent === 'page');\n\n  if (stringToBoolean(flat)) {\n    currentTreeItem?.parentElement?.classList?.add('agora-sidebar-anchor-item-current');\n  } else {\n    let initialPrevItem;\n    if (currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling?.classList.contains('agora-sidebar-button-item')) {\n      currentTreeItem?.parentElement?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling as HTMLElement;\n    } else {\n      currentTreeItem?.closest('.agora-link-wrapper')?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n    }\n    let elements: HTMLElement[] = [...[initialPrevItem]];\n    while (initialPrevItem) {\n      if (\n        (initialPrevItem as HTMLElement)\n          ?.closest('.agora-sidebar-content-item')\n          ?.previousElementSibling?.classList.contains('agora-sidebar-button-item')\n      ) {\n        initialPrevItem = (initialPrevItem as HTMLElement)?.closest('.agora-sidebar-content-item')?.previousElementSibling;\n      } else {\n        initialPrevItem = (initialPrevItem as HTMLElement)\n          ?.closest('.agora-sidebar-content-item')\n          ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n      }\n\n      if (initialPrevItem) {\n        elements = [...elements, initialPrevItem as HTMLElement];\n      }\n    }\n    elements = elements.reverse();\n\n    elements.forEach((el: HTMLElement) => {\n      if (el?.classList.contains('agora-sidebar-button-item') && !stringToBoolean(el?.ariaExpanded ?? '')) {\n        el.setAttribute('data-custom-triggered-click', 'true');\n        el.click();\n      } else if (!stringToBoolean(el?.ariaExpanded ?? '')) {\n        (el?.querySelector('.icon-wrapper') as HTMLElement)?.click();\n      }\n    });\n  }\n};\n","import { Button } from '@/components/button';\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { SidebarProps } from '@/components/sidebar';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, RefObject, useRef } from 'react';\nimport { openOnCurrentItem } from '../utils/openOnCurrentItem';\nimport './sidebar-item-navigation-mobile.scss';\n\nexport const SidebarItemNavigationMobile: FC<SidebarProps & { sidebarRef: RefObject<HTMLUListElement> }> = ({\n  children,\n  darkMode,\n  flat,\n  sidebarMenuLabel,\n  backButtonLabel,\n  sidebarRef\n}) => {\n  const refDialog = useRef<DialogElement>(null);\n  const backButtonHandler = () => {\n    refDialog.current?.hide();\n  };\n  const openButtonHandler = () => {\n    refDialog.current?.show();\n    if (sidebarRef.current) {\n      // Assertion of tabIndex with/without defined aria-current\n      const treeItems = (sidebarRef.current as HTMLElement).querySelectorAll('[role=\"treeitem\"]');\n      const hasAriaCurrent = !!(sidebarRef.current as HTMLElement).querySelectorAll('[aria-current=\"page\"]');\n      treeItems?.forEach((itemTree, idx) => {\n        if (itemTree.hasAttribute('aria-current') && hasAriaCurrent) {\n          itemTree.setAttribute('tabIndex', '0');\n        } else if (!hasAriaCurrent && idx === 0) {\n          itemTree.setAttribute('tabIndex', '0');\n        } else {\n          itemTree.setAttribute('tabIndex', '-1');\n        }\n      });\n      openOnCurrentItem(sidebarRef, flat ?? 'false');\n    }\n  };\n\n  const sidebarNavigationMobileClassName = classNames(\n    'agora-sidebar-navigation-mobile grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12',\n    {\n      darkMode: stringToBoolean(darkMode)\n    }\n  );\n\n  const sidebarItemNavigationMobileMenuClassName = classNames('agora-snm-menu', { darkMode: stringToBoolean(darkMode) });\n\n  const sidebarItemNavigationMobileBackButtonClassName = classNames('agora-snm-back mb-16', { darkMode: stringToBoolean(darkMode) });\n\n  const sidebarItemNavigationMobileDialogClassName = classNames('z-dialog absolute w-full h-full container', {\n    'bg-white': !stringToBoolean(darkMode),\n    'bg-primary-900': stringToBoolean(darkMode)\n  });\n\n  return (\n    <div className={sidebarNavigationMobileClassName}>\n      <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\">\n        <Button\n          className={sidebarItemNavigationMobileMenuClassName}\n          appearance=\"link\"\n          variant=\"primary\"\n          fullWidth\n          hasIcon\n          leadingIcon=\"agora-line-layers-menu\"\n          leadingIconHover=\"agora-solid-layers-menu\"\n          onClick={openButtonHandler}\n        >\n          {sidebarMenuLabel}\n        </Button>\n        <Dialog ref={refDialog} className=\"container\">\n          <div className={sidebarItemNavigationMobileDialogClassName}>\n            <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 h-full content-start\">\n              <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\">\n                <Button\n                  appearance=\"link\"\n                  variant=\"neutral\"\n                  hasIcon\n                  leadingIcon=\"agora-line-arrow-left-anchor\"\n                  leadingIconHover=\"agora-solid-arrow-left-anchor\"\n                  onClick={backButtonHandler}\n                  className={sidebarItemNavigationMobileBackButtonClassName}\n                >\n                  {backButtonLabel}\n                </Button>\n              </div>\n              <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12 overflow-auto\">{children}</div>\n            </div>\n          </div>\n        </Dialog>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  ReactElement,\n  ReactNode,\n  RefObject,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { SidebarVariantType } from './models/sidebar-variant.type';\nimport { SidebarItemProps } from './sidebar-item';\nimport { SidebarItemNavigationMobile } from './sidebar-item-navigation-mobile/sidebar-item-navigation-mobile';\nimport './sidebar.scss';\nimport { openOnCurrentItem } from './utils/openOnCurrentItem';\n\nexport interface SidebarProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * Whether the sidebar is for filtering data or for navigation\n   */\n  variant: SidebarVariantType;\n\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n\n  /**\n   * All item tree open. Non-collapsible.\n   */\n  flat?: BooleanProp;\n\n  /**\n   * Sidebar children content\n   */\n  children: ReactElement<SidebarItemProps> | Array<ReactElement<SidebarItemProps>>;\n\n  /**\n   * Sidebar mobile button menu label\n   */\n  sidebarMenuLabel?: ReactNode;\n\n  /**\n   *  Back button label\n   */\n  backButtonLabel?: ReactNode;\n}\n\nexport const Sidebar: FC<SidebarProps> = ({\n  className,\n  children,\n  flat = 'false',\n  variant,\n  darkMode,\n  sidebarMenuLabel,\n  backButtonLabel,\n  ...props\n}) => {\n  let newSidebarItem: ReactElement | Array<ReactElement | undefined> | undefined;\n  let listSidebarItem: Array<ReactElement<SidebarItemProps>> = [];\n  const generateId = useId();\n  const sidebarRef = useRef<HTMLUListElement>(null);\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileAndTablet = width < xlScreen;\n  const [trailingFilter, setTrailingFilter] = useState(false);\n  const [leadingFilter, setLeadingFilter] = useState(false);\n\n  const sidebarClassName = classNames('agora-sidebar', { darkMode: stringToBoolean(darkMode) }, className);\n\n  if (children) {\n    if (!Array.isArray(children)) {\n      [children].forEach((child) => listSidebarItem.push(child));\n    } else {\n      listSidebarItem = children;\n    }\n  }\n\n  if (stringToBoolean(flat)) {\n    newSidebarItem = listSidebarItem?.map((data, index) => {\n      const key = `li-${index}-${generateId}`;\n      return cloneElement(data, {\n        flat: stringToBoolean(flat),\n        variant: variant,\n        key,\n        darkMode: stringToBoolean(darkMode),\n        className: `${trailingFilter ? 'trailed' : ''} ${leadingFilter ? 'leaded' : ''}`\n      });\n    });\n  } else {\n    newSidebarItem = listSidebarItem?.map((data, index) => {\n      const key = `li-${index}-${generateId}`;\n      return cloneElement(data, {\n        variant: variant,\n        key,\n        darkMode: stringToBoolean(darkMode),\n        className: `${trailingFilter ? 'trailed' : ''} ${leadingFilter ? 'leaded' : ''}`\n      });\n    });\n  }\n\n  //When leave focus of sidebar, if current are collapsed and not visible, expand all item until level of current item\n  const onBodyFocus = (event: Event) => {\n    if (sidebarRef.current) {\n      if (sidebarRef.current?.contains(event.target as HTMLElement)) {\n        sidebarRef.current?.parentElement?.classList.add('focus');\n      } else {\n        sidebarRef.current?.parentElement?.classList.remove('focus');\n        openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n      }\n    }\n  };\n\n  const navigationHandler = () => {\n    if (variant === 'navigation' && !isMobileAndTablet) {\n      if (sidebarRef.current) {\n        // Assertion of tabIndex with/without defined aria-current\n        const treeItems = sidebarRef.current.querySelectorAll('[role=\"treeitem\"]');\n        const hasAriaCurrent = !!sidebarRef.current.querySelectorAll('[aria-current=\"page\"]');\n        treeItems?.forEach((itemTree, idx) => {\n          if (itemTree.hasAttribute('aria-current') && hasAriaCurrent) {\n            itemTree.setAttribute('tabIndex', '0');\n          } else if (!hasAriaCurrent && idx === 0) {\n            itemTree.setAttribute('tabIndex', '0');\n          } else {\n            itemTree.setAttribute('tabIndex', '-1');\n          }\n        });\n      }\n\n      openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n\n      const loadHandler = () => {\n        openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n      };\n\n      document.addEventListener('load', loadHandler);\n      document.addEventListener('focusin', onBodyFocus);\n      document.addEventListener('mousedown', onBodyFocus);\n\n      return () => {\n        document.removeEventListener('load', loadHandler);\n        document.removeEventListener('focusin', onBodyFocus);\n        document.removeEventListener('mousedown', onBodyFocus);\n      };\n    }\n  };\n\n  const filterHandler = () => {\n    if (variant === 'filter') {\n      const checkLeading: boolean[] = [];\n      const checkTrailing: boolean[] = [];\n      if (sidebarRef.current) {\n        const parsedChildren = Children.toArray(children);\n        Children.forEach(parsedChildren, (element) => {\n          if (!isValidElement(element)) {\n            return;\n          }\n          const itemProps = element.props as SidebarItemProps;\n          const foundedLeadingIcon = [itemProps.item].some((a) => !!a.collapsedIconLeading);\n          checkLeading.push(foundedLeadingIcon);\n          const foundedTrailingIcon = [itemProps.item].some((a) => !!a.collapsedIconTrailing);\n          checkTrailing.push(foundedTrailingIcon);\n        });\n\n        if (checkLeading.every((l) => l === false)) {\n          setLeadingFilter(false);\n        } else if (checkLeading.every((l) => l === true)) {\n          setLeadingFilter(false);\n        } else if (checkLeading.some((k) => k)) {\n          setLeadingFilter(true);\n        }\n\n        if (checkTrailing.every((t) => t === false)) {\n          setTrailingFilter(false);\n        } else if (checkTrailing.every((t) => t === true)) {\n          setTrailingFilter(false);\n        } else if (checkTrailing.some((j) => j)) {\n          setTrailingFilter(true);\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    navigationHandler();\n    filterHandler();\n  }, [sidebarRef.current]);\n\n  return (\n    <>\n      {(!isMobileAndTablet || variant === 'filter') && (\n        <ul ref={sidebarRef} className={sidebarClassName} {...props} {...(variant === 'navigation' ? { role: 'tree' } : undefined)}>\n          {newSidebarItem}\n        </ul>\n      )}\n      {variant === 'navigation' && isMobileAndTablet && (\n        <SidebarItemNavigationMobile\n          {...props}\n          darkMode={darkMode}\n          variant={variant}\n          sidebarMenuLabel={sidebarMenuLabel}\n          backButtonLabel={backButtonLabel}\n          sidebarRef={sidebarRef as RefObject<HTMLUListElement>}\n        >\n          <ul ref={sidebarRef} className={sidebarClassName} {...props} {...(variant === 'navigation' ? { role: 'tree' } : undefined)}>\n            {newSidebarItem}\n          </ul>\n        </SidebarItemNavigationMobile>\n      )}\n    </>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ButtonItemProps, LinkItemProps } from '../models';\n\nexport const setIconsExpandCollapsed = (item: ButtonItemProps | LinkItemProps, ariaExpanded: BooleanProp) => {\n  return {\n    leadingIcon: stringToBoolean(ariaExpanded) ? item.collapsedIconLeading : item.expandedIconLeading,\n    leadingIconHover: stringToBoolean(ariaExpanded) ? item.collapsedIconHoverLeading : item.expandedIconHoverLeading,\n    trailingIcon: stringToBoolean(ariaExpanded) ? item.collapsedIconTrailing : item.expandedIconTrailing,\n    trailingIconHover: stringToBoolean(ariaExpanded) ? item.collapsedIconHoverTrailing : item.expandedIconHoverTrailing\n  };\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport const setInitialSidebarItem = (\n  flat: BooleanProp,\n  sidebarItemChildren: HTMLDivElement | HTMLUListElement | null,\n  open: BooleanProp,\n  ariaExpanded: BooleanProp\n): BooleanProp => {\n  if (!sidebarItemChildren) {\n    return stringToBoolean(open);\n  }\n\n  if (stringToBoolean(flat)) {\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return true;\n  } else if (stringToBoolean(open) && stringToBoolean(ariaExpanded)) {\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return stringToBoolean(open);\n  } else if (!stringToBoolean(open)) {\n    sidebarItemChildren.style.maxHeight = '';\n    return stringToBoolean(open);\n  }\n  return stringToBoolean(open);\n};\n","import { stringToBoolean } from '@/utils';\n\nexport const toggleSidebarItem = (sidebarItem: HTMLAnchorElement | HTMLButtonElement) => {\n  if (!sidebarItem.ariaExpanded) {\n    return false;\n  }\n  const sidebarItemExpanded = stringToBoolean(sidebarItem.ariaExpanded);\n  sidebarItem.setAttribute('aria-expanded', (!sidebarItemExpanded).toString());\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { SidebarVariantType } from '../models/sidebar-variant.type';\n\nexport const toggleSidebarItemChildren = (\n  variant: SidebarVariantType,\n  sidebarItemChildren: HTMLDivElement | HTMLUListElement | null\n): BooleanProp => {\n  if (!sidebarItemChildren) {\n    return false;\n  }\n  //If sidebar item children is collapsed then expand it.\n  if (sidebarItemChildren.classList.contains('collapsed')) {\n    sidebarItemChildren.classList.remove('collapsed');\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return true;\n  }\n  // If sidebar item children is expanded then collapse it.\n  else {\n    sidebarItemChildren.classList.add('collapsed');\n    sidebarItemChildren.style.maxHeight = '';\n    if (variant === 'navigation') {\n      const sidebarItemChildrenTreeItem = sidebarItemChildren.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLElement[];\n      const sidebarItemChildrenTreeItemReversed = [...sidebarItemChildrenTreeItem].reverse();\n      // Collapse or expande recursively\n      sidebarItemChildrenTreeItemReversed.forEach((itemTree) => {\n        if (!itemTree.ariaExpanded) {\n          return false;\n        }\n        //Check if is possible to expand and if is a button or a link, to click on icon to expand/collapse.\n        if (stringToBoolean(itemTree.ariaExpanded)) {\n          if (itemTree.classList.contains('agora-sidebar-button-item')) {\n            itemTree.setAttribute('data-custom-triggered-click', 'true');\n            itemTree.click();\n          } else {\n            (itemTree.querySelector('.icon-wrapper') as HTMLElement)?.click();\n          }\n        }\n      });\n    }\n    return false;\n  }\n};\n","type Icons = {\n  leadingIcon: string | undefined;\n  leadingIconHover: string | undefined;\n  trailingIcon: string | undefined;\n  trailingIconHover: string | undefined;\n};\n\nexport const handlerSetGapPill = (rect: DOMRect | undefined, icons: Icons | undefined): number => {\n  if (!rect?.width) return 0;\n\n  const hasIconInTheBeginning = icons?.leadingIcon || icons?.leadingIconHover;\n  const DEFAULT_SPACE = 32;\n\n  const valueToAdd = hasIconInTheBeginning ? DEFAULT_SPACE : 0;\n  return rect?.width + valueToAdd;\n};\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, MouseEvent, Ref, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { ButtonItemProps, SidebarItemRef } from '../models';\nimport { SidebarItemProps } from '../sidebar-item';\nimport { setIconsExpandCollapsed } from '../utils/setIconsExpandCollapsed';\nimport { setInitialSidebarItem } from '../utils/setInitialSidebarItem';\nimport { toggleSidebarItem } from '../utils/toggleSidebarItem';\nimport { toggleSidebarItemChildren } from '../utils/toggleSidebarItemChildren';\nimport { Pill } from '@/components/pill';\nimport { handlerSetGapPill } from '../utils/handlerSetGapPill';\n\nconst SidebarItemFilter: FC<SidebarItemProps> = ({\n  ref = null,\n  children,\n  item,\n  hasPill,\n  pillValue,\n  pillAriaLabel,\n  darkMode,\n  open = false,\n  flat = false\n}) => {\n  const generateId = useId();\n  const buttonItemRef = useRef<HTMLButtonElement>(null);\n  const contentItemRef = useRef<HTMLDivElement>(null);\n  const [gapPill, setGapPill] = useState(0);\n\n  const [ariaExpanded, setAriaExpanded] = useState<BooleanProp>(stringToBoolean(open));\n\n  const buttonItemClassName = classNames('agora-sidebar-btn-item-filter');\n  const contentItemClassName = classNames('agora-sidebar-content-item', {\n    collapsed: !stringToBoolean(open) && !stringToBoolean(flat)\n  });\n\n  const toggleItemContent = () => {\n    setAriaExpanded(toggleSidebarItemChildren('filter', contentItemRef.current));\n  };\n\n  const toggleItemExpand = () => {\n    if (buttonItemRef.current) {\n      toggleSidebarItem(buttonItemRef.current);\n      toggleItemContent();\n    }\n  };\n\n  const onMouseClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    toggleItemExpand();\n    (item as ButtonItemProps).onClick?.(evt);\n  };\n\n  useEffect(() => {\n    setAriaExpanded(setInitialSidebarItem(flat, contentItemRef.current, open, ariaExpanded));\n  }, []);\n\n  useEffect(() => {\n    if ((contentItemRef.current as HTMLElement).classList.contains('collapsed')) {\n      const initialElementsTabindex = [\n        ...(contentItemRef.current as HTMLElement).querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      ];\n      initialElementsTabindex.forEach((el) => {\n        (el as HTMLElement).tabIndex = -1;\n      });\n    } else {\n      const initialElementsTabindex = [\n        ...(contentItemRef.current as HTMLElement).querySelectorAll(\n          'a:not([tabindex=\"0\"]), button:not([tabindex=\"0\"]), input:not([tabindex=\"0\"]), textarea:not([tabindex=\"0\"]), select:not([tabindex=\"0\"]), details:not([tabindex=\"0\"]), [tabindex]:not([tabindex=\"0\"])'\n        )\n      ];\n      initialElementsTabindex.forEach((el) => {\n        (el as HTMLElement).tabIndex = 0;\n      });\n    }\n  }, [ariaExpanded]);\n\n  const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n  const newItem = { ...item };\n  delete newItem.collapsedIconLeading;\n  delete newItem.collapsedIconHoverLeading;\n  delete newItem.expandedIconLeading;\n  delete newItem.expandedIconHoverLeading;\n  delete newItem.collapsedIconTrailing;\n  delete newItem.collapsedIconHoverTrailing;\n  delete newItem.expandedIconTrailing;\n  delete newItem.expandedIconHoverTrailing;\n\n  useImperativeHandle(\n    ref as Ref<SidebarItemRef>,\n    () => {\n      return {\n        current: buttonItemRef.current,\n        isExpanded: ariaExpanded\n      } as SidebarItemRef;\n    },\n    [buttonItemRef.current, ariaExpanded, ref]\n  );\n\n  useEffect(() => {\n    if (!hasPill) return;\n    if (!buttonItemRef.current) return;\n\n    const childrenWrapper = buttonItemRef.current?.querySelector('.children-wrapper');\n    childrenWrapper?.classList.add('agora-btn-limit');\n    const rect = childrenWrapper?.getBoundingClientRect();\n\n    const value = handlerSetGapPill(rect, icons);\n\n    if (value === gapPill) return;\n\n    setGapPill(value);\n  });\n\n  return (\n    <>\n      <div className=\"container-button\">\n        {!stringToBoolean(flat) && (\n          <Button\n            appearance={'link'}\n            variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n            className={buttonItemClassName}\n            fullWidth\n            {...icons}\n            {...(newItem as ButtonItemProps)}\n            darkMode={darkMode}\n            aria-expanded={ariaExpanded}\n            aria-controls={`aria-controls-sidebar-${generateId}-id`}\n            onClick={onMouseClickHandler}\n            ref={buttonItemRef}\n            aria-describedby={`pill-${generateId}`}\n          />\n        )}\n\n        {hasPill && (\n          <div style={{ left: `${gapPill}px` }} className=\"pill\">\n            <Pill\n              id={`pill-${generateId}`}\n              className={`ml-16 ${ariaExpanded ? 'bg-white' : ''} pill-size`}\n              variant=\"neutral\"\n              appearance={ariaExpanded ? 'outline' : 'solid'}\n              aria-label={pillAriaLabel}\n            >\n              {pillValue}\n            </Pill>\n          </div>\n        )}\n      </div>\n\n      {stringToBoolean(flat) && <div className=\"p-16 agora-sidebar-flat-item\">{item.children}</div>}\n\n      <div className={contentItemClassName} id={`aria-controls-sidebar-${generateId}-id`} ref={contentItemRef}>\n        {children}\n      </div>\n    </>\n  );\n};\nexport { SidebarItemFilter };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport const getParentTreeItem = (itemTree: HTMLElement, expand: BooleanProp) => {\n  if (itemTree.closest('.agora-sidebar-item')?.parentElement?.classList.contains('.agora-sidebar') && !expand) {\n    return itemTree;\n  }\n  const nodeContent: HTMLElement | null = itemTree.closest('.agora-sidebar-content-item') as HTMLElement;\n  const node: HTMLElement | null = nodeContent?.previousSibling as HTMLElement;\n  if (node && nodeContent) {\n    if (nodeContent.classList.contains('collapsed')) {\n      return false;\n    }\n    if (stringToBoolean(expand)) {\n      nodeContent.classList.remove('collapsed');\n      nodeContent.style.maxHeight = '100vh';\n    }\n\n    return node.querySelector('[role=\"treeitem\"]') ?? node;\n  }\n  if (itemTree.closest('.agora-sidebar') && !stringToBoolean(expand)) {\n    return itemTree;\n  }\n  return false;\n};\n","import { KeyboardEvent, MouseEvent } from 'react';\nimport { getParentTreeItem } from './getParentTreeItem';\n\nexport const toggleParentItemExpand = (itemTree: HTMLElement) => {\n  let parentNode = getParentTreeItem(itemTree, true);\n  while (parentNode) {\n    parentNode.setAttribute('aria-expanded', 'true');\n    parentNode = getParentTreeItem(parentNode as HTMLElement, true);\n  }\n};\n\nexport const navigationSidebarItemHandler = (\n  evt:\n    | MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>\n    | KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>\n) => {\n  const sidebar: HTMLUListElement | null = evt.currentTarget.closest('.agora-sidebar');\n  const treeItems = sidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLAnchorElement[];\n  treeItems?.forEach((itemTree: HTMLAnchorElement) => {\n    if (itemTree?.href === (evt.currentTarget as HTMLAnchorElement).href && itemTree.parentElement) {\n      itemTree.closest('.agora-link-wrapper')?.classList.add('agora-sidebar-anchor-item-current');\n      itemTree.setAttribute('aria-current', 'page');\n      toggleParentItemExpand(itemTree);\n      itemTree.setAttribute('tabIndex', '0');\n    } else if (itemTree.parentElement) {\n      itemTree.closest('.agora-link-wrapper')?.classList.remove('agora-sidebar-anchor-item-current');\n      itemTree.removeAttribute('aria-current');\n      itemTree.setAttribute('tabIndex', '-1');\n    }\n  });\n};\n","import { stringToBoolean } from '@/utils';\nimport { TreeItemsType } from './treeItemsType';\n\nexport const toggleExpandAllSiblingItems = (itemTree: TreeItemsType) => {\n  const contentParent = itemTree.closest('.agora-sidebar-content-item') ?? itemTree.closest('.agora-sidebar');\n  const directChildrenItems = [\n    ...(contentParent?.querySelectorAll('&>.agora-sidebar-item>*>[role=\"treeitem\"]') as unknown as HTMLAnchorElement[]),\n    ...(contentParent?.querySelectorAll('&>*>[role=\"treeitem\"]') as unknown as HTMLButtonElement[])\n  ];\n  directChildrenItems.forEach((adsItem) => {\n    if (adsItem.ariaExpanded === undefined || adsItem.ariaExpanded === null) {\n      return;\n    }\n    if (!stringToBoolean(adsItem.ariaExpanded) && (adsItem as HTMLAnchorElement).href) {\n      (adsItem.querySelector('.icon-wrapper') as HTMLElement)?.click();\n    } else if (!stringToBoolean(adsItem.ariaExpanded)) {\n      (adsItem as HTMLButtonElement)?.setAttribute('data-custom-triggered-click', 'true');\n      (adsItem as HTMLButtonElement)?.click();\n    }\n  });\n};\n","import { KeyboardEvent } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { getParentTreeItem } from './getParentTreeItem';\nimport { navigationSidebarItemHandler } from './navigationSidebarItemHandler';\nimport { toggleExpandAllSiblingItems } from './toggleExpandAllSiblingItems';\nimport { TreeItemsArray, TreeItemsType } from './treeItemsType';\n\nexport const navigationEnterSpace = (event: KeyboardEvent<TreeItemsType>) => {\n  if (event.currentTarget.classList.contains('agora-sidebar-button-item')) {\n    return;\n  }\n  navigationSidebarItemHandler(event);\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const getAllVisibleItems = (treeItems: TreeItemsArray) => {\n  const allVisibleItems = [];\n  for (const item of treeItems) {\n    const parentNode = getParentTreeItem(item, false);\n    if (parentNode) {\n      allVisibleItems.push(item);\n    }\n  }\n  return allVisibleItems;\n};\n\nexport const navigationUp = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  let prevItem;\n\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  for (const visibleItem of allVisibleItems) {\n    if (visibleItem === event.currentTarget) {\n      break;\n    }\n    prevItem = visibleItem;\n  }\n\n  if (prevItem) {\n    prevItem.focus();\n  } else {\n    allVisibleItems[allVisibleItems.length - 1].focus();\n  }\n\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nconst navigateAndFocusUntilCurrent = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  let nextItem;\n\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  for (let i = allVisibleItems.length - 1; i >= 0; i--) {\n    if (allVisibleItems[i] === event.currentTarget) {\n      break;\n    }\n    nextItem = allVisibleItems[i];\n  }\n  if (nextItem) {\n    nextItem.focus();\n  } else {\n    allVisibleItems[0].focus();\n  }\n};\n\nexport const navigationDown = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  navigateAndFocusUntilCurrent(event, treeItems);\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const navigationRight = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  navigateAndFocusUntilCurrent(event, treeItems);\n};\n\nexport const navigationLeft = (event: KeyboardEvent<TreeItemsType>) => {\n  const prevItem = event.currentTarget?.closest('.agora-sidebar-content-item')?.previousElementSibling;\n  if (prevItem?.classList.contains('agora-sidebar-button-item')) {\n    (prevItem as unknown as HTMLButtonElement)?.focus();\n  } else {\n    (prevItem?.querySelector('[role=\"treeitem\"]') as unknown as HTMLAnchorElement)?.focus();\n  }\n};\n\nexport const navigationTab = (treeItems: TreeItemsArray) => {\n  const currentTreeItem = [...treeItems].find((e) => e.ariaCurrent === 'page');\n  if (currentTreeItem?.closest('.agora-sidebar-content-item')?.classList.contains('collapsed')) {\n    let initialPrevItem;\n    if (currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling?.classList.contains('agora-sidebar-button-item')) {\n      currentTreeItem?.parentElement?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling as HTMLElement;\n    } else {\n      initialPrevItem = currentTreeItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n    }\n    let elements: HTMLElement[] = [...[initialPrevItem]];\n    while (initialPrevItem) {\n      initialPrevItem = initialPrevItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n      if (initialPrevItem) {\n        elements = [...elements, initialPrevItem];\n      }\n    }\n    elements = elements.reverse();\n\n    elements.forEach((el: HTMLElement) => {\n      if (!el?.ariaExpanded) {\n        return;\n      }\n      if (el.classList.contains('agora-sidebar-button-item') && !stringToBoolean(el.ariaExpanded)) {\n        el.setAttribute('data-custom-triggered-click', 'true');\n        el.click();\n      } else if (!stringToBoolean(el.ariaExpanded)) {\n        (el.querySelector('.icon-wrapper') as HTMLElement)?.click();\n      }\n    });\n  }\n};\n\nexport const setFocusByFirstCharacter = (itemTree: TreeItemsType, treeItems: TreeItemsArray, char: string) => {\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  char = char.toLowerCase();\n\n  allVisibleItems.forEach((ti: HTMLAnchorElement | HTMLButtonElement | HTMLDivElement) => {\n    if (char === ti.textContent?.trim()[0].toLocaleLowerCase()) {\n      ti.focus();\n    }\n  });\n\n  let i,\n    ti,\n    index = -1;\n  const start = allVisibleItems.indexOf(itemTree) + 1 >= allVisibleItems.length ? 0 : allVisibleItems.indexOf(itemTree) + 1;\n\n  for (i = start; i < allVisibleItems.length; i++) {\n    ti = allVisibleItems[i];\n    if (char === ti.textContent?.trim()[0].toLowerCase()) {\n      index = i;\n      break;\n    }\n  }\n\n  if (index === -1) {\n    for (i = 0; i < start; i++) {\n      ti = allVisibleItems[i];\n      if (char === ti.textContent?.trim()[0].toLowerCase()) {\n        index = i;\n        break;\n      }\n    }\n  }\n\n  if (index > -1) {\n    allVisibleItems[index].focus();\n  }\n};\n\nexport const defaultPrintableCharacters = (event: KeyboardEvent<TreeItemsType>, flat: BooleanProp, treeItems: TreeItemsArray) => {\n  if (event.key == '*' && !stringToBoolean(flat)) {\n    toggleExpandAllSiblingItems(event.currentTarget);\n    event.stopPropagation();\n    event.preventDefault();\n  } else {\n    setFocusByFirstCharacter(event.currentTarget, treeItems, event.key);\n  }\n};\n\nexport const navigationHome = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  if (treeItems) {\n    treeItems[0].focus();\n  }\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const navigationEnd = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  if (treeItems) {\n    const allVisibleItems = getAllVisibleItems(treeItems);\n    allVisibleItems[allVisibleItems.length - 1].focus();\n  }\n  event.stopPropagation();\n  event.preventDefault();\n};\n","import { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  cloneElement,\n  FC,\n  HTMLProps,\n  KeyboardEvent,\n  MouseEvent,\n  PropsWithChildren,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport { SidebarItemProps } from '../sidebar-item';\nimport {\n  defaultPrintableCharacters,\n  navigationDown,\n  navigationEnd,\n  navigationEnterSpace,\n  navigationHome,\n  navigationLeft,\n  navigationRight,\n  navigationTab,\n  navigationUp\n} from '../utils/keyboardSidebarItemHandlers';\nimport { navigationSidebarItemHandler } from '../utils/navigationSidebarItemHandler';\nimport { setIconsExpandCollapsed } from '../utils/setIconsExpandCollapsed';\nimport { setInitialSidebarItem } from '../utils/setInitialSidebarItem';\nimport { toggleSidebarItem } from '../utils/toggleSidebarItem';\nimport { toggleSidebarItemChildren } from '../utils/toggleSidebarItemChildren';\nimport { ReactParameters } from '@storybook/react/*';\nexport const SidebarItemNavigation: FC<SidebarItemProps> = ({ children, variant, item, open = false, flat = false, darkMode }) => {\n  const generateId = useId();\n\n  let newSidebarItem: ReactElement | Array<ReactElement | undefined> | undefined;\n  let newSidebarItemChildren: ReactElement | Array<ReactElement | undefined> | undefined;\n  let listInnerSidebarItem: ReactElement<PropsWithChildren>[] = [];\n  let listSidebarItemChildren: ReactElement<SidebarItemProps>[] = [];\n\n  const [ariaExpanded, setAriaExpanded] = useState<BooleanProp>(stringToBoolean(open));\n  const [showIconHover, setShowIconHover] = useState<boolean>(false);\n\n  const contentItemClassName = classNames('agora-sidebar-content-item', {\n    collapsed: !stringToBoolean(open) && !stringToBoolean(flat)\n  });\n\n  const anchorItemRef = useRef<HTMLAnchorElement>(null);\n  const buttonItemRef = useRef<HTMLButtonElement>(null);\n  const contentItemRef = useRef<HTMLUListElement>(null);\n\n  const toggleItemContent = () => {\n    setAriaExpanded(toggleSidebarItemChildren('navigation', contentItemRef.current));\n  };\n\n  const toggleItemExpand = () => {\n    if (anchorItemRef.current) {\n      toggleSidebarItem(anchorItemRef.current);\n      toggleItemContent();\n    }\n    if (buttonItemRef.current) {\n      toggleSidebarItem(buttonItemRef.current);\n      toggleItemContent();\n    }\n  };\n\n  const handleAnchorClick = (evt: MouseEvent<HTMLAnchorElement>, data: HTMLProps<HTMLAnchorElement>) => {\n    navigationSidebarItemHandler(evt);\n    data.onClick?.(evt);\n  };\n\n  const handleOnKeyUp = (event: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>) => {\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n    const agoraSidebar: HTMLUListElement | null = event.currentTarget.closest('.agora-sidebar');\n    const treeItems = agoraSidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as\n      | HTMLAnchorElement[]\n      | HTMLButtonElement[]\n      | HTMLDivElement[];\n    const isPrintableCharacter = (str: string) => {\n      return str.length === 1 && RegExp(/\\S/).exec(str);\n    };\n\n    const handleRightArrow = () => {\n      if (event.currentTarget.getAttribute('aria-expanded') === 'true' && !stringToBoolean(flat)) {\n        navigationRight(event, treeItems);\n      } else if (!stringToBoolean(flat)) {\n        toggleItemExpand();\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    };\n\n    const handleLeftArrow = () => {\n      if (event.currentTarget.getAttribute('aria-expanded') === 'true' && !stringToBoolean(flat)) {\n        toggleItemExpand();\n      } else if (!stringToBoolean(flat)) {\n        navigationLeft(event);\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    };\n\n    if (event.shiftKey) {\n      if (event.code == 'SPACE' || event.code == 'RETURN') {\n        event.stopPropagation();\n      } else if (isPrintableCharacter(event.key)) {\n        defaultPrintableCharacters(event, flat, treeItems);\n      }\n    } else {\n      switch (event.code) {\n        case 'Enter':\n        case 'NumpadEnter':\n        case 'Space':\n          navigationEnterSpace(event);\n          break;\n\n        case 'Up':\n        case 'ArrowUp': {\n          navigationUp(event, treeItems);\n          break;\n        }\n\n        case 'Down':\n        case 'ArrowDown': {\n          navigationDown(event, treeItems);\n          break;\n        }\n\n        case 'Right':\n        case 'ArrowRight':\n          handleRightArrow();\n          break;\n\n        case 'Left':\n        case 'ArrowLeft':\n          handleLeftArrow();\n          break;\n\n        case 'Home':\n          navigationHome(event, treeItems);\n          break;\n\n        case 'End': {\n          navigationEnd(event, treeItems);\n          break;\n        }\n        case 'Tab': {\n          navigationTab(treeItems);\n          break;\n        }\n\n        default:\n          if (isPrintableCharacter(event.key)) {\n            defaultPrintableCharacters(event, flat, treeItems);\n          }\n          break;\n      }\n    }\n  };\n  const handleOnKeyDown = (event: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n      case 'Up':\n      case 'ArrowUp':\n      case 'Down':\n      case 'ArrowDown':\n      case 'Right':\n      case 'ArrowRight':\n      case 'Left':\n      case 'ArrowLeft':\n      case 'Home':\n      case 'End':\n        event.stopPropagation();\n        event.preventDefault();\n\n        break;\n    }\n  };\n\n  const handleClickIcon = (event: MouseEvent<HTMLElement | HTMLButtonElement>, data?: HTMLProps<HTMLElement | HTMLButtonElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n    toggleItemExpand();\n    data?.onClick?.(event);\n  };\n\n  const handleMouseEnterIcon = (event: MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    setShowIconHover(true);\n  };\n\n  const handleMouseLeaveIcon = (event: MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    setShowIconHover(false);\n  };\n\n  const handleMouseDown = (event: MouseEvent<HTMLElement | HTMLButtonElement>, data?: HTMLProps<HTMLElement | HTMLButtonElement>) => {\n    event.preventDefault();\n    data?.onMouseDown?.(event);\n  };\n\n  if (children) {\n    if (!Array.isArray(children)) {\n      [children].forEach((child) => listSidebarItemChildren.push(child as ReactElement<SidebarItemProps>));\n    } else {\n      listSidebarItemChildren = children as ReactElement<SidebarItemProps>[];\n    }\n  }\n  if (item.children) {\n    if (!Array.isArray(item.children)) {\n      [item.children].forEach((child) => listInnerSidebarItem.push(child as ReactElement<PropsWithChildren>));\n    } else {\n      listInnerSidebarItem = item.children as ReactElement<PropsWithChildren>[];\n    }\n  }\n\n  // Used to wrap on LinkWrapper if has link\n  let isLinkedSidebarItem = false;\n  const getFinalFlat = (elements: ReactElement[], childData: ReactElement, key: string) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      if (e === 0) {\n        final = cloneElement(elements[0], {\n          children: childData,\n          key\n        } as HTMLProps<ReactParameters>);\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e], { children: final, key } as HTMLProps<ReactParameters>);\n        }\n      }\n    }\n    return final;\n  };\n  const getFlatNotDirectAnchor = (data: ReactElement, ariaOwns: string, key: string) => {\n    // Not a direct anchor\n    let childData: ReactElement | null = data;\n    let elements: ReactElement[] = [];\n\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          // Children has href\n          isLinkedSidebarItem = true;\n          childData = cloneElement(childData, {\n            'role': 'treeitem',\n            'aria-expanded': ariaExpanded,\n            'aria-owns': ariaOwns,\n            key,\n            'className':\n              'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n            'ref': anchorItemRef\n          } as HTMLProps<ReactParameters>);\n\n          elements = elements.reverse();\n          const final = getFinalFlat(elements, childData, key);\n\n          childData = null;\n          return final;\n        } else {\n          // This childData not has href, search next children\n          elements = [...elements, childData];\n          childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n        }\n      } else {\n        childData = null;\n      }\n    }\n\n    // Not href found\n    return cloneElement(data, {\n      key,\n      className:\n        'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full'\n    } as HTMLProps<ReactParameters>);\n  };\n\n  const getFlatSidebarItem = () => {\n    return listInnerSidebarItem?.map((data, index) => {\n      const key = `item-${index}-${generateId}`;\n      const ariaOwns = `treeitem-${generateId}`;\n      if (!(data.props as HTMLProps<ReactElement>).href) {\n        return getFlatNotDirectAnchor(data, ariaOwns, key);\n      } else {\n        // Direct anchor\n        isLinkedSidebarItem = true;\n        return cloneElement(data, {\n          'onClick': (event: MouseEvent<HTMLAnchorElement>) => handleAnchorClick(event, data.props as HTMLProps<HTMLAnchorElement>),\n          'onKeyUp': handleOnKeyUp,\n          'onKeyDown': handleOnKeyDown,\n          'onMouseDown': (event: MouseEvent<HTMLAnchorElement>) => handleMouseDown(event, data.props as HTMLProps<HTMLAnchorElement>),\n          'role': 'treeitem',\n          'aria-expanded': ariaExpanded,\n          'aria-owns': ariaOwns,\n          'children': <span className=\"children-wrapper\">{(data.props as HTMLProps<HTMLElement>).children}</span>,\n          key,\n          'className':\n            'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n          'ref': anchorItemRef\n        } as HTMLProps<ReactParameters>);\n      }\n    });\n  };\n\n  const anchorIconWrapper = (\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    },\n    data: ReactElement<PropsWithChildren>\n  ) => {\n    return (\n      <>\n        {(icons.leadingIcon || icons.leadingIconHover) && (\n          <span className=\"icon-wrapper mr-8 justify-start\" role=\"none\" onClick={handleClickIcon}>\n            {icons.leadingIcon && (\n              <Icon name={icons.leadingIcon} dimensions=\"m\" aria-hidden {...(showIconHover ? { style: { display: 'none' } } : '')} />\n            )}\n\n            {icons.leadingIconHover && (\n              <Icon name={icons.leadingIconHover} dimensions=\"m\" aria-hidden {...(showIconHover ? '' : { style: { display: 'none' } })} />\n            )}\n          </span>\n        )}\n        <span\n          className={`data-children-wrapper ${icons.leadingIcon || icons.leadingIconHover ? '' : 'pl-[44px]'} ${icons.trailingIcon || icons.trailingIconHover ? '' : 'pr-[44px]'}`}\n        >\n          {[data.props.children].map((e) => {\n            return e as ReactNode;\n          })}\n        </span>\n        {(icons.trailingIcon || icons.trailingIconHover) && (\n          <span className=\"icon-wrapper ml-auto justify-end\" role=\"none\" onClick={handleClickIcon}>\n            {icons.trailingIcon && (\n              <Icon name={icons.trailingIcon} dimensions=\"m\" aria-hidden {...(showIconHover ? { style: { display: 'none' } } : '')} />\n            )}\n            {icons.trailingIconHover && (\n              <Icon name={icons.trailingIconHover} dimensions=\"m\" aria-hidden {...(showIconHover ? '' : { style: { display: 'none' } })} />\n            )}\n          </span>\n        )}\n      </>\n    );\n  };\n\n  const cloneAnchorElement = (data: ReactElement, ariaOwns: string, key: string, dataChildren: ReactElement) => {\n    return cloneElement(data, {\n      'onClick': (event: MouseEvent<HTMLAnchorElement>) => handleAnchorClick(event, data.props as HTMLProps<HTMLAnchorElement>),\n      'onKeyUp': handleOnKeyUp,\n      'onKeyDown': handleOnKeyDown,\n      'onMouseDown': (event: MouseEvent<HTMLAnchorElement>) => handleMouseDown(event, data.props as HTMLProps<HTMLAnchorElement>),\n      'onMouseEnter': handleMouseEnterIcon,\n      'onMouseLeave': handleMouseLeaveIcon,\n      'role': 'treeitem',\n      'aria-expanded': ariaExpanded,\n      'aria-owns': ariaOwns,\n      key,\n      'children': dataChildren,\n      'className':\n        'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n      'ref': anchorItemRef\n    } as HTMLProps<ReactParameters>);\n  };\n\n  const getFinal = (\n    elements: ReactElement<PropsWithChildren>[],\n    key: string,\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    },\n    ariaOwns: string\n  ) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      const insideLoopElements = elements;\n      const dataChildren = anchorIconWrapper(icons, insideLoopElements[0]);\n      if (e === 0) {\n        final = cloneAnchorElement(insideLoopElements[0], ariaOwns, key, dataChildren);\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e], { children: final, key } as HTMLProps<ReactParameters>);\n        }\n      }\n    }\n    return final;\n  };\n\n  const getNotDirectAnchor = (\n    data: ReactElement<PropsWithChildren>,\n    ariaOwns: string,\n    key: string,\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    }\n  ) => {\n    // Not a direct anchor\n    let childData: ReactElement<PropsWithChildren> | null = data;\n    let elements: ReactElement<PropsWithChildren>[] = [];\n\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          // Children has href\n          isLinkedSidebarItem = true;\n          elements = [...elements, childData];\n          elements = elements.reverse();\n\n          childData = null;\n          const final = getFinal(elements, key, icons, ariaOwns);\n\n          return final;\n        } else {\n          // This childData not has href, search next children\n          elements = [...elements, childData];\n          if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n            childData = null;\n          } else {\n            childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement<PropsWithChildren>;\n          }\n        }\n      } else {\n        childData = null;\n      }\n    }\n    if (isLinkedSidebarItem) {\n      const dataChildren = anchorIconWrapper(icons, data);\n      return cloneAnchorElement(data, ariaOwns, key, dataChildren);\n    } else {\n      return cloneElement(data, { key });\n    }\n  };\n\n  const getSidebarItem = () => {\n    return listInnerSidebarItem?.map((data, index) => {\n      const key = `item-${index}-${generateId}`;\n      const ariaOwns = `treeitem-${generateId}`;\n      const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n      if (!(data.props as HTMLProps<ReactElement>).href) {\n        return getNotDirectAnchor(data, ariaOwns, key, icons);\n      } else {\n        isLinkedSidebarItem = true;\n        const dataChildren = anchorIconWrapper(icons, data);\n        return cloneAnchorElement(data, ariaOwns, key, dataChildren);\n      }\n    });\n  };\n\n  const getSidebarItemChildren = () => {\n    return listSidebarItemChildren?.map((data: ReactElement<SidebarItemProps>, index: number) => {\n      const key = `li-${index}-${generateId}`;\n      if (data.props.item) {\n        return cloneElement(data, { flat: `${flat}`, variant: variant, darkMode: stringToBoolean(darkMode), key });\n      } else {\n        return (\n          <li key={key} role=\"none\" className=\"agora-sidebar-item\">\n            {cloneElement(data)}\n          </li>\n        );\n      }\n    });\n  };\n\n  //Flat\n  if (stringToBoolean(flat)) {\n    newSidebarItem = getFlatSidebarItem();\n    newSidebarItemChildren = getSidebarItemChildren();\n  } else {\n    //Not Flat\n    newSidebarItem = getSidebarItem();\n    newSidebarItemChildren = getSidebarItemChildren();\n  }\n\n  useEffect(() => {\n    setAriaExpanded(setInitialSidebarItem(flat, contentItemRef.current, open, ariaExpanded));\n  }, []);\n\n  const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n  const agoraSidebarButtonItemClassName = classNames('agora-sidebar-button-item', {\n    '!pl-[42px]': icons.leadingIcon === undefined,\n    '!pr-[42px]': icons.trailingIcon === undefined\n  });\n\n  return (\n    <>\n      {isLinkedSidebarItem && newSidebarItem.length > 0 && (\n        <LinkWrapper\n          variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n          appearance=\"link\"\n          fullWidth\n          className=\"min-h-[60px] min-w-[60px] px-16\"\n          darkMode={stringToBoolean(darkMode)}\n        >\n          {newSidebarItem}\n        </LinkWrapper>\n      )}\n      {!isLinkedSidebarItem && newSidebarItem.length > 0 && !stringToBoolean(flat) && (\n        <Button\n          role=\"treeitem\"\n          appearance=\"link\"\n          variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n          className={agoraSidebarButtonItemClassName}\n          fullWidth\n          {...(stringToBoolean(flat) ? undefined : { hasIcon: true })}\n          {...icons}\n          aria-expanded={ariaExpanded}\n          aria-owns={`treeitem-${generateId}`}\n          onClick={(event: MouseEvent<HTMLButtonElement>) => handleClickIcon(event, item as HTMLProps<HTMLButtonElement>)}\n          onKeyUp={handleOnKeyUp}\n          onKeyDown={handleOnKeyDown}\n          ref={buttonItemRef}\n          darkMode={stringToBoolean(darkMode)}\n        >\n          {newSidebarItem}\n        </Button>\n      )}\n      {!isLinkedSidebarItem && stringToBoolean(flat) && item.children && (\n        <div\n          role=\"treeitem\"\n          aria-selected={undefined}\n          tabIndex={-1}\n          className=\"p-16 sidebar-item-non-interactive\"\n          aria-expanded={ariaExpanded}\n          aria-owns={`treeitem-${generateId}`}\n          onKeyUp={handleOnKeyUp}\n          onKeyDown={handleOnKeyDown}\n          onMouseDown={handleMouseDown}\n        >\n          {item.children}\n        </div>\n      )}\n\n      {newSidebarItemChildren && (\n        <ul\n          ref={contentItemRef}\n          className={contentItemClassName}\n          id={`treeitem-${generateId}`}\n          role=\"group\"\n          aria-label={item['aria-label']}\n        >\n          {newSidebarItemChildren}\n        </ul>\n      )}\n    </>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { ButtonItemProps, LinkItemProps } from './models';\nimport { SidebarVariantType } from './models/sidebar-variant.type';\nimport { SidebarItemFilter } from './sidebar-filter/sidebar-item-filter';\nimport './sidebar-item.scss';\nimport { SidebarItemNavigation } from './sidebar-navigation/sidebar-item-navigation';\n\nexport interface SidebarItemProps extends ComponentProps<'li'> {\n  /**\n   * Item of sidebar\n   */\n  item: ButtonItemProps | LinkItemProps;\n  /**\n   * Open on beginning\n   */\n  open?: BooleanProp;\n  /**\n   * All item tree open. Non-collapsible.\n   */\n  flat?: BooleanProp;\n  /**\n   * Whether the sidebar item is on filter sidebar or navigation sidebar\n   */\n  variant?: SidebarVariantType;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the pill\n   */\n  hasPill?: boolean;\n  /**\n   * Sets the pill value\n   */\n  pillValue?: number;\n  /**\n   * Sets the pill aria-label\n   */\n  pillAriaLabel?: string;\n}\nconst SidebarItem: FC<SidebarItemProps> = ({ ref = null, className, variant, item, darkMode, ...props }) => {\n  const sidebarItemClassName = classNames('agora-sidebar-item', className);\n\n  return (\n    <li className={sidebarItemClassName} {...(variant === 'navigation' ? { role: 'none' } : undefined)}>\n      {variant === 'filter' && <SidebarItemFilter {...props} darkMode={darkMode} item={item} ref={ref} />}\n      {variant === 'navigation' && (\n        <SidebarItemNavigation {...props} darkMode={darkMode} {...(variant ? { variant: variant } : undefined)} item={item} />\n      )}\n    </li>\n  );\n};\n\nexport { SidebarItem };\n","import { Button } from '@/components/button';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport React, {\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  Fragment,\n  HTMLAttributes,\n  HTMLProps,\n  KeyboardEvent,\n  ReactElement,\n  RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { MultipleLinksProps } from './skip-navigation';\nimport { ReactParameters } from '@storybook/react/*';\nexport interface SkipNavigationMultipleProps extends ComponentProps<'div'> {\n  className: string | undefined;\n  containerSkipNavRef: RefObject<HTMLDivElement>;\n  multipleLinks: MultipleLinksProps;\n}\n\nexport const SkipNavigationMultiple: FC<SkipNavigationMultipleProps> = ({ className, containerSkipNavRef, multipleLinks, ...props }) => {\n  const skipOptionsRef = useRef<HTMLDivElement>(null);\n\n  const [ariaExpand, setAriaExpand] = useState(false);\n\n  const handleClick = () => {\n    skipOptionsRef.current?.classList.add('hidden');\n    containerSkipNavRef.current?.classList.remove('show');\n    setAriaExpand(false);\n  };\n\n  const handleFocus = (evt: FocusEvent<HTMLDivElement>) => {\n    containerSkipNavRef.current?.classList.add('show');\n    props.onFocus?.(evt);\n  };\n\n  const handleBlur = (evt: FocusEvent<HTMLDivElement>) => {\n    if (!ariaExpand) {\n      evt.currentTarget.focus();\n      containerSkipNavRef.current?.classList.remove('show');\n    }\n    props.onBlur?.(evt);\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const code = evt.code;\n\n    const allSkipMenuItems: HTMLElement[] = containerSkipNavRef.current?.querySelectorAll('[role=\"menuitem\"]') as unknown as HTMLElement[];\n    const currentIndexFocus = [...allSkipMenuItems].findIndex((mi) => mi === evt.currentTarget);\n    if (code === 'ArrowDown') {\n      if (currentIndexFocus + 1 !== allSkipMenuItems.length) {\n        allSkipMenuItems[currentIndexFocus + 1].focus();\n      } else {\n        allSkipMenuItems[0].focus();\n      }\n    }\n\n    if (code === 'ArrowUp') {\n      if (currentIndexFocus - 1 !== allSkipMenuItems.length && currentIndexFocus - 1 >= 0) {\n        allSkipMenuItems[currentIndexFocus - 1].focus();\n      } else {\n        allSkipMenuItems[allSkipMenuItems.length - 1].focus();\n      }\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const handleSkipOptionControlKeyDownCapture = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (!skipOptionsRef.current) {\n      return;\n    }\n\n    if (ariaExpand) {\n      switch (evt.code) {\n        case 'Escape':\n        case 'Tab':\n          containerSkipNavRef.current?.classList.remove('show');\n          skipOptionsRef.current.classList.add('hidden');\n          setAriaExpand(false);\n          break;\n        case 'ArrowDown':\n        case 'ArrowUp':\n          //  PREVENT SCROLL AND TAB INDEX CHANGE FOCUS\n          evt.preventDefault();\n          evt.stopPropagation();\n          break;\n      }\n    }\n  };\n\n  const handleButtonSkipClick = () => {\n    if (skipOptionsRef.current && !ariaExpand) {\n      skipOptionsRef.current.classList.remove('hidden');\n      setAriaExpand(true);\n    } else if (skipOptionsRef.current && ariaExpand) {\n      skipOptionsRef.current.classList.add('hidden');\n      setAriaExpand(false);\n    }\n  };\n  const handleButtonFocus = () => {\n    containerSkipNavRef.current?.classList.add('show');\n    if (skipOptionsRef.current) {\n      skipOptionsRef.current.classList.remove('hidden');\n      setAriaExpand(true);\n      (document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[0] as HTMLElement)?.focus();\n    }\n  };\n  const handleButtonBlur = () => {\n    containerSkipNavRef.current?.classList.remove('show');\n  };\n\n  const handleButtonKeyUp = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (skipOptionsRef.current) {\n      switch (evt.code) {\n        case 'Escape':\n        case 'Tab':\n          skipOptionsRef.current.classList.add('hidden');\n          setAriaExpand(false);\n          break;\n        case 'ArrowDown':\n          if (ariaExpand) {\n            (document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[0] as HTMLElement)?.focus();\n          }\n          break;\n        case 'ArrowUp':\n          if (ariaExpand) {\n            (\n              document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[\n                document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]').length - 1\n              ] as HTMLElement\n            )?.focus();\n          }\n          break;\n      }\n    }\n  };\n\n  const handleButtonControlKeyDownCapture = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n\n    if (!skipOptionsRef.current) {\n      return;\n    }\n\n    if (ariaExpand) {\n      if (code === 'Tab' || code === 'ArrowDown' || code === 'ArrowUp') {\n        //  PREVENT SCROLL AND TAB INDEX CHANGE FOCUS\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      if (skipOptionsRef.current && !ariaExpand) {\n        skipOptionsRef.current.classList.remove('hidden');\n      } else if (skipOptionsRef.current && ariaExpand) {\n        skipOptionsRef.current.classList.add('hidden');\n      }\n    }\n  };\n\n  const getFinal = (elements: ReactElement[], lvl: number) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      if (e === 0) {\n        final = cloneElement(elements[0] as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n          role: 'menuitem',\n          className: `skip-level-${lvl}`,\n          onClick: handleClick,\n          onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt),\n          onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt),\n          onKeyUp: (evt: KeyboardEvent<HTMLDivElement>) => handleKeyUp(evt),\n          onKeyDownCapture: (evt: KeyboardEvent<HTMLDivElement>) => handleSkipOptionControlKeyDownCapture(evt)\n        });\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e] as ReactElement<HTMLAttributes<HTMLDivElement>>, { children: final });\n        }\n      }\n    }\n    return final;\n  };\n\n  const getNotDirectAnchor = (initLink: ReactElement, lvl: number) => {\n    let childData: ReactElement | null = initLink;\n    let elements: ReactElement[] = [];\n    let isLink: boolean = false;\n    let final;\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          isLink = true;\n          elements = [...elements, childData];\n          elements = elements.reverse();\n          final = getFinal(elements, lvl);\n          childData = null;\n        } else {\n          elements = [...elements, childData];\n          if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n            childData = null;\n          } else {\n            childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n          }\n        }\n      } else {\n        childData = null;\n      }\n    }\n    if (isLink) {\n      return final;\n    } else {\n      return initLink;\n    }\n  };\n\n  type RecursiveLinkType = Record<string, Record<string, ReactElement>>;\n\n  let groupAnchors: ReactElement[] = [];\n  const recursiveLinks = (links: RecursiveLinkType[], lvl: number = 0) => {\n    links.forEach((level: RecursiveLinkType, index) => {\n      const getKeys = Object.keys(level);\n      const keyIndex = getKeys.findIndex((o) => o != 'link');\n      const key = getKeys[keyIndex];\n\n      let newLink;\n      const init = level[key];\n      const initLink = init.link;\n      const initLength = Object.keys(init).length;\n\n      if ((initLink?.props as HTMLProps<ReactElement>)?.href) {\n        newLink = cloneElement(init.link, {\n          role: 'menuitem',\n          className: `skip-level-${lvl}`,\n          onClick: handleClick,\n          onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt),\n          onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt),\n          onKeyUp: (evt: KeyboardEvent<HTMLDivElement>) => handleKeyUp(evt),\n          onKeyDownCapture: (evt: KeyboardEvent<HTMLDivElement>) => handleSkipOptionControlKeyDownCapture(evt)\n        } as HTMLProps<ReactParameters>);\n      } else {\n        newLink = getNotDirectAnchor(initLink, lvl);\n      }\n\n      const idx = `link-lvl-${lvl}-${index}`;\n      if (initLength > 1) {\n        groupAnchors = [\n          ...groupAnchors,\n          <LinkWrapper key={idx} appearance=\"link\" variant=\"neutral\" className=\"skip-option\">\n            {newLink}\n          </LinkWrapper>\n        ];\n\n        recursiveLinks([init as unknown as RecursiveLinkType], lvl + 1);\n      } else {\n        groupAnchors = [\n          ...groupAnchors,\n          <LinkWrapper key={idx} appearance=\"link\" variant=\"neutral\" className=\"skip-option\">\n            {newLink}\n          </LinkWrapper>\n        ];\n      }\n    });\n  };\n\n  const menuSkipNavigation = () => {\n    const menu = multipleLinks?.skipList.map((element, index) => {\n      groupAnchors = [];\n      const idx = index;\n      const links = element.links as unknown as RecursiveLinkType[];\n      recursiveLinks(links, 0);\n      return (\n        <Fragment key={idx}>\n          <div role=\"separator\" id={`skip-separator-${idx}`} className=\"skip-section-separator\">\n            {element.sectionLabel}\n          </div>\n          <div role=\"group\" aria-labelledby={`skip-separator-${idx}`} className=\"flex flex-col\">\n            {groupAnchors}\n          </div>\n        </Fragment>\n      );\n    });\n\n    return menu;\n  };\n  const handleClickOutside = useCallback((evt: MouseEvent) => {\n    if (!containerSkipNavRef.current?.contains(evt.target as HTMLElement)) {\n      skipOptionsRef.current?.classList.add('hidden');\n      containerSkipNavRef.current?.classList.remove('show');\n      setAriaExpand(false);\n    }\n  }, []);\n\n  useEffect(() => {\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  return (\n    <div className={className} ref={containerSkipNavRef} {...props}>\n      <Button\n        {...multipleLinks.skipButton}\n        appearance=\"link\"\n        className=\"skip-button\"\n        aria-expanded={ariaExpand ? 'true' : 'false'}\n        onClick={handleButtonSkipClick}\n        onFocus={handleButtonFocus}\n        onBlur={handleButtonBlur}\n        onKeyUp={handleButtonKeyUp}\n        onKeyDownCapture={handleButtonControlKeyDownCapture}\n      />\n      <div role=\"menu\" aria-label={multipleLinks.skipAriaLabel} className=\"skip-options hidden\" ref={skipOptionsRef}>\n        {menuSkipNavigation()}\n      </div>\n    </div>\n  );\n};\n","import { LinkWrapper } from '@/components/link-wrapper';\nimport React, {\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  HTMLAttributes,\n  HTMLProps,\n  ReactElement,\n  MouseEvent as ReactMouseEvent,\n  RefObject\n} from 'react';\nexport interface SkipNavigationSingleProps extends ComponentProps<'div'> {\n  className: string | undefined;\n  containerSkipNavRef: RefObject<HTMLDivElement>;\n  singleLink: ReactElement;\n}\nconst handleClick = (evt: ReactMouseEvent<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  const content = document.getElementById(window.location.hash.slice(1));\n  if (content) {\n    content.focus();\n  }\n  props.onClick?.(evt);\n};\n\nconst handleFocus = (evt: FocusEvent<HTMLDivElement>, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  containerSkipNavRef.current?.classList.add('show');\n  props.onFocus?.(evt);\n};\n\nconst handleBlur = (evt: FocusEvent<HTMLDivElement>, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  containerSkipNavRef.current?.classList.remove('show');\n  props.onBlur?.(evt);\n};\n\nconst getFinal = (elements: ReactElement[], containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let final;\n  for (let e = 0; e < elements.length; e++) {\n    if (e === 0) {\n      final = cloneElement(elements[0] as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n        className: 'skip-item',\n        onClick: (evt: ReactMouseEvent<HTMLDivElement>) => handleClick(evt, props),\n        onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt, containerSkipNavRef, props),\n        onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt, containerSkipNavRef, props)\n      });\n    } else if (e > 0) {\n      if (final) {\n        final = cloneElement(elements[e] as ReactElement<HTMLAttributes<HTMLDivElement>>, { children: final });\n      }\n    }\n  }\n  return final;\n};\n\nconst getNotDirectAnchor = (singleLink: ReactElement, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let childData: ReactElement | null = singleLink;\n  let elements: ReactElement[] = [];\n  let isLink: boolean = false;\n  let final;\n\n  while (childData !== null) {\n    if ((childData.props as HTMLProps<ReactElement>)?.children) {\n      if ((childData.props as HTMLProps<ReactElement>).href) {\n        isLink = true;\n        elements = [...elements, childData];\n        elements = elements.reverse();\n        final = getFinal(elements, containerSkipNavRef, props);\n        childData = null;\n      } else {\n        elements = [...elements, childData];\n        if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n          childData = null;\n        } else {\n          childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n        }\n      }\n    } else {\n      childData = null;\n    }\n  }\n  if (isLink) {\n    return final;\n  } else {\n    return singleLink;\n  }\n};\n\nconst buildAnchor = (singleLink: ReactElement, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let newSingleLink;\n\n  if (singleLink && (singleLink?.props as HTMLProps<ReactElement>).href) {\n    newSingleLink = cloneElement(singleLink as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n      className: 'skip-item',\n      onClick: (evt: ReactMouseEvent<HTMLDivElement>) => handleClick(evt, props),\n      onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt, containerSkipNavRef, props),\n      onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt, containerSkipNavRef, props)\n    });\n  } else {\n    newSingleLink = getNotDirectAnchor(singleLink, containerSkipNavRef, props);\n  }\n\n  return newSingleLink;\n};\n\nexport const SkipNavigationSingle: FC<SkipNavigationSingleProps> = ({ className, containerSkipNavRef, singleLink, ...props }) => {\n  const newSingleLink = buildAnchor(singleLink, containerSkipNavRef, { className, containerSkipNavRef, singleLink, ...props });\n\n  return (\n    <>\n      {newSingleLink && (\n        <div className={className} ref={containerSkipNavRef} {...props}>\n          <LinkWrapper inline={true}>{newSingleLink}</LinkWrapper>\n        </div>\n      )}\n    </>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, RefObject, useImperativeHandle, useRef } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ButtonProps } from '@/components/button';\nimport { SkipNavigationMultiple } from './skip-navigation-multiple';\nimport { SkipNavigationSingle } from './skip-navigation-single';\nimport './skip-navigation.scss';\n\nexport interface LevelLinks {\n  level1: {\n    link: ReactNode;\n    level2?: {\n      link: ReactNode;\n      level3?: {\n        link: ReactNode;\n      };\n    };\n  };\n}\n\nexport interface SkipListProps {\n  sectionLabel: string;\n  links: LevelLinks[];\n}\nexport interface MultipleLinksProps {\n  skipButton: ButtonProps;\n  skipAriaLabel: string;\n  skipList: SkipListProps[];\n}\n\nexport interface SkipNavigationProps extends ComponentProps<'div'> {\n  /**\n   * Skip navigation multiple links or single link\n   */\n  multiple?: BooleanProp;\n\n  /**\n   * Single Link\n   */\n  singleLink?: ReactElement;\n\n  /**\n   * Multiple Links\n   */\n  multipleLinks?: MultipleLinksProps;\n}\n\nconst SkipNavigation: FC<SkipNavigationProps> = ({ ref = null, multiple = 'false', singleLink, multipleLinks, ...props }) => {\n  const containerSkipNavRef = useRef<HTMLDivElement>(null);\n\n  useImperativeHandle(ref, () => containerSkipNavRef.current as HTMLDivElement);\n\n  const navigationClassName = classNames('agora-skip-navigation container mx-auto py-16', props.className);\n\n  return (\n    <>\n      {stringToBoolean(multiple) && multipleLinks && (\n        <SkipNavigationMultiple\n          className={navigationClassName}\n          containerSkipNavRef={containerSkipNavRef as RefObject<HTMLDivElement>}\n          multipleLinks={multipleLinks}\n        />\n      )}\n      {!stringToBoolean(multiple) && singleLink && (\n        <SkipNavigationSingle\n          className={navigationClassName}\n          containerSkipNavRef={containerSkipNavRef as RefObject<HTMLDivElement>}\n          singleLink={singleLink}\n          {...props}\n        />\n      )}\n    </>\n  );\n};\n\nexport { SkipNavigation };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode, useMemo } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { StatusCardType } from './status-card';\n\nexport interface InteractiveStatusCardProps extends ComponentProps<'div'> {\n  className?: string;\n  interactive?: boolean;\n  children?: ReactNode;\n  type?: StatusCardType;\n  onActivate?: () => void;\n}\n\nconst InteractiveStatusCard: FC<InteractiveStatusCardProps> = ({\n  ref = null,\n  className,\n  onActivate,\n  interactive,\n  children,\n  'aria-label': ariaLabel,\n  ...props\n}) => {\n  const containerClasses = classNames(`agora-status-card status-${props.type}`, className, {\n    interactive\n  });\n\n  const onClickHandler = () => {\n    onActivate?.();\n  };\n\n  const leadingIconName = useMemo(() => {\n    switch (props.type) {\n      case 'info':\n        return 'agora-solid-info-mark';\n      case 'success':\n        return 'agora-solid-check-circle';\n      case 'warning':\n        return 'agora-solid-info-mark';\n      case 'danger':\n        return 'agora-solid-alert-triangle';\n\n      default:\n        return 'agora-solid-info-mark';\n    }\n  }, [props.type]);\n\n  return (\n    <div role=\"status\" {...props} ref={ref}>\n      <Button\n        className={containerClasses}\n        type=\"button\"\n        onClick={onClickHandler}\n        fullWidth\n        hasIcon\n        aria-label={ariaLabel}\n        trailingIcon=\"agora-line-arrow-right-circle\"\n        trailingIconHover=\"agora-solid-arrow-right-circle\"\n      >\n        <Icon name={leadingIconName} aria-hidden />\n        {children}\n      </Button>\n    </div>\n  );\n};\n\nexport { InteractiveStatusCard };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport { StatusCardType } from './status-card';\n\nexport interface NonInteractiveStatusCardProps extends ComponentProps<'div'> {\n  className?: string;\n  children?: ReactNode;\n  type?: StatusCardType;\n}\n\nconst NonInteractiveStatusCard: FC<NonInteractiveStatusCardProps> = ({\n  ref = null,\n  className,\n  'aria-label': ariaLabel,\n  children,\n  ...props\n}) => {\n  const containerClasses = classNames(`agora-status-card status-${props.type} non-interactive`, className);\n\n  return (\n    <div {...props} role=\"status\" className={containerClasses} ref={ref}>\n      <span className=\"sr-only\">{ariaLabel}</span>\n      <div aria-hidden={!!ariaLabel}>{children}</div>\n    </div>\n  );\n};\n\nexport { NonInteractiveStatusCard };\n","import React, { ComponentProps, FC, ReactNode, useMemo } from 'react';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { InteractiveStatusCard } from './interactive-status-card';\nimport { NonInteractiveStatusCard } from './non-interactive-status-card';\nimport './status-card.scss';\n\nexport type StatusCardType = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface StatusCardProps extends ComponentProps<'div'> {\n  /**\n   * Status card description content\n   */\n  description: ReactNode;\n\n  /**\n   * The available Status card types. Defines the appearance of the cards.\n   */\n  type: StatusCardType;\n\n  /**\n   * The flag to make the status card interactive. When it is interactive,\n   * card can be focused by clicking on it.\n   */\n  interactive?: BooleanProp;\n\n  /**\n   * Callback to run whenever the status card is interactive.\n   */\n  onActivate?: () => void;\n}\n\nconst StatusCard: FC<StatusCardProps> = ({ ref = null, className, description, type = 'info', interactive, onActivate, ...props }) => {\n  const memoContent = useMemo(() => {\n    const handleIcon = (iconType: StatusCardType) => {\n      switch (iconType) {\n        case 'info':\n          return 'agora-solid-info-mark';\n        case 'success':\n          return 'agora-solid-check-circle';\n        case 'warning':\n          return 'agora-solid-info-mark';\n        case 'danger':\n          return 'agora-solid-alert-triangle';\n        default:\n          return undefined;\n      }\n    };\n\n    return (\n      <>\n        {!stringToBoolean(interactive) && <Icon className=\"status-icon\" name={handleIcon(type)} aria-hidden />}\n        <span className=\"status-description\">{description}</span>\n      </>\n    );\n  }, [className, description, type, interactive]);\n\n  if (stringToBoolean(interactive)) {\n    return (\n      <InteractiveStatusCard\n        {...props}\n        className={className}\n        type={type}\n        ref={ref}\n        onActivate={onActivate}\n        interactive={stringToBoolean(interactive)}\n      >\n        {memoContent}\n      </InteractiveStatusCard>\n    );\n  }\n\n  return (\n    <NonInteractiveStatusCard {...props} className={className} type={type} ref={ref}>\n      {memoContent}\n    </NonInteractiveStatusCard>\n  );\n};\n\nexport { StatusCard };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport './step-list.scss';\n\nexport interface StepListProps extends ComponentPropsWithoutRef<'ol'> {\n  /**\n   * Children content.\n   */\n  children?: ReactElement<HTMLLIElement> | Array<ReactElement<HTMLLIElement>>;\n}\n\nexport const StepList: FC<StepListProps> = ({ children, ...props }) => {\n  const stepListClass = classNames(`agora-step-list`);\n\n  return (\n    <ol className={stepListClass} {...props}>\n      {children}\n    </ol>\n  );\n};\n","import React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactElement, useRef, useState } from 'react';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport { Icon, IconDimensions, IconProps } from '../icon';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetProps, IconSetState } from '../shared/icon-set/icon-set';\nimport './step.scss';\n\n/**\n * Available step status.\n */\nexport type StepStatusType = 'done' | 'error' | 'current' | 'draft' | 'disabled' | 'default';\n\nexport interface StepProps extends ComponentProps<'button'> {\n  /**\n   * Defines if the step is interactive. If the parent stepper have interactive prop defined, it will override this prop.\n   */\n  interactive?: BooleanProp;\n  /**\n   * The status of the step.\n   */\n  status?: StepStatusType;\n}\n\nconst getInteractiveIconSet = (\n  activeState: IconSetState,\n  status: StepStatusType,\n  dimensions: IconDimensions\n): ReactElement<IconSetProps> => {\n  return (\n    <>\n      {status === 'draft' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-edit\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'current' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-edit\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'done' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-check\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-check\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-check\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'error' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-alert-triangle\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-alert-triangle\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-alert-triangle\" aria-hidden />\n        </IconSet>\n      )}\n    </>\n  );\n};\n\nconst getNonInteractiveIcon = (status: StepStatusType, dimensions: IconDimensions): ReactElement<IconProps> => {\n  return (\n    <>\n      {status === 'draft' && <Icon dimensions={dimensions} name=\"agora-line-edit\" aria-hidden />}\n      {status === 'current' && <Icon dimensions={dimensions} name=\"agora-line-edit\" aria-hidden />}\n      {status === 'done' && <Icon dimensions={dimensions} name=\"agora-line-check\" aria-hidden />}\n      {status === 'error' && <Icon dimensions={dimensions} name=\"agora-line-alert-triangle\" aria-hidden />}\n    </>\n  );\n};\n\nexport const Step: FC<StepProps> = ({ interactive = false, status = 'default', children, ...props }) => {\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n\n  const isMobileOrTablet = width < xlScreen;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const classes = classNames('step', status, { 'read-only': !stringToBoolean(interactive) });\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      buttonRef.current?.classList.add('active');\n\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      buttonRef.current?.classList.remove('active');\n\n      setActiveState('default');\n\n      buttonRef.current?.setAttribute('data-custom-triggered-click', 'true');\n      buttonRef.current?.click();\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    buttonRef.current?.classList.remove('active');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseDownHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n\n    buttonRef.current?.classList.add('active');\n\n    props.onMouseDown?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseUpHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    buttonRef.current?.classList.remove('active');\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    //  TRUE MOUSE CLICK OR TOUCH CLICK\n    if (evt.detail > 0) {\n      setActiveState(isTouchDevice ? 'default' : 'hover');\n      props.onClick?.(evt);\n      return;\n    }\n\n    //  CLICK FROM KEYBOARD\n\n    //  NEED TO CHECK THIS ATTRIBUTE BECAUSE FIREFOX DOES NOT TRIGGER CLICK EVENTS WHENEVER THE ENTER/SPACE/NUMPADENTER KEY IS PRESSED.\n    //  TO FIX THAT INCONSISTENCY, WE ADD A CUSTOM ATTRIBUTE TO SIGNAL THE ARTIFICIAL CLICK TRIGGER AND PREVENT THE CHROMIUM BASED BROWSERS OF DUPLICATE CLICK EVENTS.\n    //  ON KEYUP THE CLICK EVENT IS TRIGGERED AND WILL BE ADDED THE CUSTOM ATTRIBUTE. THEN, IF THE BROWSER TRIGGERED ANOTHER CLICK, THE HANDLER WILL NOT FIND THE CUSTOM ATTRIBUTE AND WILL NOT TRIGGER A DUPLICATED EVENT.\n    const shouldTriggerClick = buttonRef.current?.getAttribute('data-custom-triggered-click') === 'true';\n    buttonRef.current?.removeAttribute('data-custom-triggered-click');\n\n    if (!shouldTriggerClick) {\n      evt.preventDefault();\n      return;\n    }\n\n    setActiveState('default');\n    props.onClick?.(evt);\n  };\n\n  return (\n    <li className={classes} {...(status === 'current' ? { 'aria-current': 'step' } : {})}>\n      <span className=\"line\" />\n\n      <button\n        {...props}\n        ref={buttonRef}\n        type=\"button\"\n        disabled={status === 'disabled'}\n        {...(!stringToBoolean(interactive) || status === 'disabled'\n          ? { tabIndex: -1 }\n          : {\n              onClick: onClickHandler,\n              onKeyDown: onKeyDownHandler,\n              onKeyUp: onKeyUpHandler,\n              onMouseDown: onMouseDownHandler,\n              onMouseUp: onMouseUpHandler,\n              onMouseLeave: onMouseLeaveHandler,\n              onMouseEnter: onMouseEnterHandler\n            })}\n      >\n        {stringToBoolean(interactive) && (\n          <span className=\"counter\">{getInteractiveIconSet(activeState, status, isMobileOrTablet ? 'xs' : 'm')}</span>\n        )}\n\n        {!stringToBoolean(interactive) && <span className=\"counter\">{getNonInteractiveIcon(status, isMobileOrTablet ? 'xs' : 'm')}</span>}\n\n        <span className=\"content\">{children}</span>\n      </button>\n    </li>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, useId } from 'react';\nimport { Step, StepProps } from './step';\nimport './stepper.scss';\n\nexport interface StepperProps extends ComponentProps<'div'> {\n  /**\n   * Defines if the stepper is interactive or not.\n   */\n  interactive?: BooleanProp;\n  /**\n   * List of steps.\n   */\n  children?: ReactElement<StepProps> | ReactElement<StepProps>[];\n}\n\nconst Stepper: FC<StepperProps> = ({ ref = null, className, children, interactive = false, ...props }) => {\n  const generatedId = useId();\n\n  const classes = classNames('agora-stepper', interactive, className);\n\n  return (\n    <nav {...props} ref={ref} className={classes}>\n      <ol>\n        {Children.map(children, (c, index) => {\n          if (!isValidElement<StepProps>(c)) {\n            return null;\n          }\n\n          const key = `agora-stepper-${generatedId}-${index}`;\n\n          return (\n            <Step\n              {...c.props}\n              interactive={typeof interactive !== 'undefined' ? stringToBoolean(interactive) : stringToBoolean(c.props.interactive)}\n              key={key}\n            />\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n\nexport { Stepper };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useEffect, useId, useRef, useState } from 'react';\nimport './switch.scss';\n\nexport type SwitchPosition = 'start' | 'center' | 'space-between' | 'space-around' | 'space-evenly';\n\nexport interface SwitchProps extends ComponentProps<'input'> {\n  /**\n   * The flag to set dark mode as active or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Whether the switch is reversed.\n   */\n  reverse?: BooleanProp;\n  /**\n   * The position of the switch.\n   */\n  position?: SwitchPosition;\n  /**\n   * Defines if the Switch should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlight the switch indicating some error.\n   */\n  hasError?: BooleanProp;\n}\n\nconst Switch: FC<SwitchProps> = ({\n  ref = null,\n  darkMode = false,\n  className,\n  label,\n  hideLabel,\n  disabled,\n  reverse,\n  position,\n  fullWidth,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  hasError,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentChecked, setCurrentChecked] = useState(stringToBoolean(propsClone.checked ?? propsClone.defaultChecked));\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const handleChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentChecked((last) => !last);\n    asyncTrigger(() => onChange?.(evt));\n  };\n\n  useEffect(() => {\n    const checked = propsClone.checked ?? propsClone.defaultChecked;\n    if (checked !== undefined) {\n      setCurrentChecked(checked);\n    }\n  }, [propsClone.checked, propsClone.defaultChecked]);\n\n  const handleCustomSwitchKeydown = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (wrapperRef !== null && (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter')) {\n      evt.preventDefault();\n      wrapperRef.current?.querySelector('input')?.click();\n    }\n  };\n\n  const handleCustomSwitchClick = (evt: MouseEvent<HTMLDivElement>) => {\n    if (wrapperRef !== null) {\n      evt.preventDefault();\n      wrapperRef.current?.querySelector('input')?.click();\n    }\n  };\n\n  const switchWrapperClasses = classNames('agora-switch-wrapper', className, {\n    'dark-mode': stringToBoolean(darkMode),\n    'switch-side': stringToBoolean(reverse),\n    [`switch-${position}`]: position,\n    'switch-full-width': stringToBoolean(fullWidth),\n    'switch-disabled': disabled,\n    'switch-focus': hideLabel,\n    'switch-label-focus': !hideLabel,\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const markerClasses = classNames('toggle-ball', {\n    'icon-disabled': disabled,\n    'icon-off': !currentChecked && !disabled\n  });\n\n  const switchLabelClasses = classNames('switch-label', {\n    'label-disabled': disabled\n  });\n\n  const ariaLabel = props['aria-label'] ?? label;\n\n  return (\n    <div>\n      <div ref={wrapperRef} className={switchWrapperClasses}>\n        <input {...propsClone} type=\"checkbox\" tabIndex={-1} disabled={disabled} onChange={handleChange} ref={ref} id={propsClone.id} />\n        <div\n          className={`toggle-switch ${currentChecked ? 'on' : 'off'}`}\n          role=\"switch\"\n          aria-checked={currentChecked ? 'true' : 'false'}\n          tabIndex={!disabled ? 0 : -1}\n          aria-label={ariaLabel}\n          aria-describedby={\n            (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText ? `switch-${propsClone.id}-feedback` : undefined\n          }\n          onClick={handleCustomSwitchClick}\n          onKeyDown={handleCustomSwitchKeydown}\n        >\n          <span className={markerClasses}>\n            {currentChecked ? (\n              <Icon name=\"agora-solid-check\" aria-hidden className=\"on\" dimensions=\"xs\" />\n            ) : (\n              <Icon name=\"agora-solid-x\" aria-hidden className=\"off\" dimensions=\"xs\" />\n            )}\n          </span>\n        </div>\n        {!hideLabel && label && (\n          <label htmlFor={propsClone.id} className={switchLabelClasses}>\n            {label}\n          </label>\n        )}\n      </div>\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`switch-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          className=\"px-16\"\n        />\n      )}\n    </div>\n  );\n};\n\nexport { Switch };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableRowProps } from './table-row';\n\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactElement<TableRowProps> | Array<ReactElement<TableRowProps>>;\n}\n\nconst TableBody: FC<TableBodyProps> = ({ children, ...props }) => {\n  return <tbody {...props}>{children}</tbody>;\n};\n\nexport { TableBody };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n  children: ReactNode;\n}\n\nconst TableCaption: FC<TableCaptionProps> = ({ children, ...props }) => {\n  return <caption {...props}>{children}</caption>;\n};\n\nexport { TableCaption };\n","import React, { FC, ReactNode, TdHTMLAttributes } from 'react';\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n  children: ReactNode;\n  /**\n   * Header label.\n   */\n  headerLabel: ReactNode;\n  /**\n   * Header identification key.\n   */\n  headerKey?: string;\n  /**\n   * Value of the cell.\n   */\n  value?: string | number | Date;\n}\n\nconst TableCell: FC<TableCellProps> = ({ children, headerKey = '', headerLabel, ...props }) => {\n  return (\n    <td {...props} data-header-key={headerKey} data-label={headerLabel}>\n      {children}\n    </td>\n  );\n};\n\nexport { TableCell };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableFooterProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactNode;\n}\n\nconst TableFooter: FC<TableFooterProps> = ({ children, ...props }) => {\n  return <tfoot {...props}>{children}</tfoot>;\n};\n\nexport { TableFooter };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableRowProps } from './table-row';\n\nexport interface TableHeaderProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactElement<TableRowProps> | Array<ReactElement<TableRowProps>>;\n}\n\nconst TableHeader: FC<TableHeaderProps> = ({ children, ...props }) => {\n  return <thead {...props}>{children}</thead>;\n};\n\nexport { TableHeader };\n","import React, { FC, HTMLAttributes, KeyboardEvent, ReactNode, useMemo } from 'react';\nimport { Icon } from '@/components/icon';\nimport { SortOrder } from './models/sort-order.type';\nimport { SortType } from './models/sort-type.type';\n\nconst DESCENDING_ICON_NAMES: Record<SortType, string> = {\n  string: 'agora-line-sort-alpha-up',\n  date: 'agora-solid-sort-generic-up',\n  numeric: 'agora-solid-sort-generic-up'\n};\n\nconst ASCENDING_ICON_NAMES: Record<SortType, string> = {\n  string: 'agora-solid-sort-alpha-down',\n  date: 'agora-solid-sort-generic-down',\n  numeric: 'agora-solid-sort-generic-down'\n};\n\nexport interface TableHeaderCellProps extends HTMLAttributes<HTMLTableCellElement> {\n  children: ReactNode;\n  /**\n   * The sort type applied.\n   * */\n  sortType?: SortType;\n  /**\n   * The sort order applied.\n   * */\n  sortOrder?: SortOrder;\n  /**\n   * Callback to be called when the sort change\n   */\n  onSortChange?: (sortOrder: SortOrder) => void;\n}\n\nconst TableHeaderCell: FC<TableHeaderCellProps> = ({ sortType, sortOrder = 'none', onSortChange, children, ...props }) => {\n  const circularSortOrder = ['none', 'ascending', 'descending'] as SortOrder[];\n  const currentSortOrderIndex = circularSortOrder.findIndex((order) => order === sortOrder);\n\n  const sortIconName = useMemo(() => {\n    if (!sortType) {\n      return '';\n    }\n\n    if (sortOrder === 'ascending') {\n      return ASCENDING_ICON_NAMES[sortType];\n    }\n\n    if (sortOrder === 'descending') {\n      return DESCENDING_ICON_NAMES[sortType];\n    }\n\n    return 'agora-solid-sort-vertical';\n  }, [sortType, sortOrder]);\n\n  const ariaSortValue = useMemo(() => {\n    if (!sortType) {\n      return 'none';\n    }\n\n    if (sortOrder === 'ascending') {\n      return 'ascending';\n    }\n\n    if (sortOrder === 'descending') {\n      return 'descending';\n    }\n\n    return 'none';\n  }, [sortType, sortOrder]);\n\n  const applySort = () => {\n    if (!sortType) {\n      return '';\n    }\n\n    let nextSortOrder = currentSortOrderIndex + 1;\n\n    if (nextSortOrder >= circularSortOrder.length) {\n      nextSortOrder = 0;\n    }\n\n    onSortChange?.(circularSortOrder[nextSortOrder]);\n  };\n\n  const handleKeyUpHeader = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      applySort();\n    }\n  };\n\n  return (\n    <th {...props} className={props.className} aria-sort={ariaSortValue}>\n      {sortType && (\n        <button className=\"table-header-cell\" onClick={applySort} onKeyUp={handleKeyUpHeader}>\n          <div className=\"w-24\">\n            <Icon name={sortIconName} aria-hidden />\n          </div>\n          {children}\n        </button>\n      )}\n\n      {!sortType && <span className=\"table-header-cell\">{children}</span>}\n    </th>\n  );\n};\n\nexport { TableHeaderCell };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableCellProps } from './table-cell';\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n  children: ReactElement<TableCellProps> | Array<ReactElement<TableCellProps>>;\n}\n\nconst TableRow: FC<TableRowProps> = ({ children, ...props }) => {\n  return <tr {...props}>{children}</tr>;\n};\n\nexport { TableRow };\n","import { Button } from '@/components/button';\nimport { Dropdown, DropdownElement, DropdownOption, DropdownOptionProps, DropdownSection } from '@/components/dropdown';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent as ReactMouseEvent,\n  Ref,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport './table-pagination.scss';\n\nexport interface TablePaginationProps extends ComponentProps<'div'> {\n  /**\n   * Defines the label for the items per page\n   */\n  itemsPerPageLabel: string;\n  /**\n   * Defines the page size\n   */\n  itemsPerPage: number;\n  /**\n   * Total items of the table\n   */\n  totalItems: number;\n  /**\n   * Array of values to be displayed in the dropdown\n   */\n  availablePageSizes: number[];\n  /**\n   * Current page of the table\n   */\n  currentPage: number;\n  /**\n   * Aria label for the button\n   */\n  buttonDropdownAriaLabel: string;\n  /**\n   * Aria label for the dropdown list\n   */\n  dropdownListAriaLabel: string;\n  /**\n   * Aria label for the previous button\n   */\n  prevButtonAriaLabel?: string;\n  /**\n   * Aria label for the next button\n   */\n  nextButtonAriaLabel?: string;\n  /**\n   * Callback to be called when the page changes\n   */\n  onPageChange?: (newPage: number) => void;\n  /**\n   * Callback to be called when the dropdown changes\n   */\n  onPageSizeChange?: (newPageSize: number) => void;\n}\n\nconst TablePagination: FC<TablePaginationProps> = ({\n  ref = null,\n  itemsPerPageLabel,\n  itemsPerPage,\n  totalItems,\n  availablePageSizes,\n  currentPage,\n  buttonDropdownAriaLabel,\n  dropdownListAriaLabel,\n  prevButtonAriaLabel,\n  nextButtonAriaLabel,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const dropdownRef = useRef<DropdownElement>(null);\n  const dropdownWrapperRef = useRef<HTMLDivElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const toggleVisibility = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n\n    buttonRef.current?.classList.remove('active');\n  };\n\n  const onDropdownButtonClickHandler = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (typeof evt.detail === 'number' && evt.detail === 0) {\n      //  EVENT DETAIL IS THE NUMBER OF CLICKS. KEYBOARD DOES NOT ADD A CLICK COUNTER.\n      //  KEYBOARD IS HANDLED ON KEYDOWN\n      return;\n    }\n\n    toggleVisibility();\n  };\n\n  const onDropdownButtonKeydownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n\n    if (code === 'Escape' && dropdownRef.current?.visibility) {\n      dropdownRef.current.hide();\n    }\n\n    if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {\n      toggleVisibility();\n    }\n  };\n\n  const onShowDropdownHandler = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const onHideDropDownHandler = () => {\n    setIsDropdownVisible(false);\n    buttonRef.current?.focus();\n  };\n\n  const onDropdownChangeHandler = (options: DropdownOptionProps[]) => {\n    if (options.length > 0) {\n      const option = options[0];\n      props.onPageSizeChange?.(+option.value);\n    }\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (dropdownRef.current?.visibility && !dropdownWrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const totalPages = Math.ceil(totalItems / itemsPerPage);\n\n  const handlePrevPage = () => {\n    props.onPageChange?.(Math.max(0, currentPage - 1));\n  };\n\n  const handleNextPage = () => {\n    props.onPageChange?.(Math.min(currentPage + 1, totalPages - 1));\n  };\n\n  //  Utility to change button icon\n  const iconDefinition = useMemo(() => {\n    if (!isDropdownVisible) {\n      return {\n        default: 'agora-solid-chevron-down',\n        hover: 'agora-line-chevron-down'\n      };\n    }\n\n    return {\n      default: 'agora-solid-chevron-up',\n      hover: 'agora-line-chevron-up'\n    };\n  }, [isDropdownVisible]);\n\n  return (\n    <div className=\"agora-table-pagination\" ref={ref}>\n      <div className=\"section-items\" ref={dropdownWrapperRef}>\n        <Button\n          ref={buttonRef}\n          appearance=\"link\"\n          hasIcon\n          trailingIcon={iconDefinition.default}\n          trailingIconHover={iconDefinition.hover}\n          aria-label={buttonDropdownAriaLabel}\n          role=\"combobox\"\n          aria-controls={generatedId}\n          aria-expanded={isDropdownVisible}\n          onClick={onDropdownButtonClickHandler}\n          onKeyDown={onDropdownButtonKeydownHandler}\n        >\n          {itemsPerPageLabel} {itemsPerPage}\n        </Button>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            id={generatedId}\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            type=\"text\"\n            onHide={onHideDropDownHandler}\n            onShow={onShowDropdownHandler}\n            onChange={onDropdownChangeHandler}\n            hideSectionNames\n            aria-label={dropdownListAriaLabel}\n          >\n            <DropdownSection label=\"pagination\" name=\"page-size-dropdown\">\n              {availablePageSizes.map((ps) => {\n                return (\n                  <DropdownOption key={ps} value={String(ps)}>\n                    {String(ps)}\n                  </DropdownOption>\n                );\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n      <div className=\"action-buttons\">\n        <div className=\"prev_box\">\n          <Button\n            variant=\"neutral\"\n            darkMode\n            className=\"prev\"\n            hasIcon\n            iconOnly\n            trailingIcon=\"agora-solid-chevron-left\"\n            trailingIconHover=\"agora-line-chevron-left\"\n            onClick={handlePrevPage}\n            disabled={currentPage === 0}\n            aria-label={prevButtonAriaLabel}\n          />\n        </div>\n        <div className=\"next_box\">\n          <Button\n            variant=\"neutral\"\n            darkMode\n            className=\"next\"\n            hasIcon\n            iconOnly\n            trailingIcon=\"agora-solid-chevron-right\"\n            trailingIconHover=\"agora-line-chevron-right\"\n            onClick={handleNextPage}\n            disabled={currentPage === totalPages - 1}\n            aria-label={nextButtonAriaLabel}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { TablePagination };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement } from 'react';\nimport { TableLayout } from './models/table-layout.type';\nimport { TableBodyProps } from './table-body';\nimport { TableCaptionProps } from './table-caption';\nimport { TableFooterProps } from './table-footer';\nimport { TableHeaderProps } from './table-header';\nimport { TablePagination, TablePaginationProps } from './table-pagination';\nimport './table.scss';\n\nexport interface TableProps extends ComponentProps<'table'> {\n  /**\n   * Table children content\n   */\n  children?:\n    | ReactElement<TableCaptionProps>\n    | ReactElement<TableHeaderProps>\n    | ReactElement<TableBodyProps>\n    | ReactElement<TableFooterProps>\n    | Array<\n        ReactElement<TableCaptionProps> | ReactElement<TableHeaderProps> | ReactElement<TableBodyProps> | ReactElement<TableFooterProps>\n      >;\n  /**\n   * Define layout for mobile breakpoint\n   */\n  mobileLayout?: TableLayout;\n  /**\n   * Define layout for tablet breakpoint\n   */\n  tabletLayout?: TableLayout;\n  /**\n   * Define layout for desktop breakpoint\n   */\n  desktopLayout?: TableLayout;\n  /**\n   * Configurations used for pagination\n   */\n  paginationProps?: TablePaginationProps;\n  /**\n   * Alternative text describing the current sort applied.\n   */\n  sortDescription?: string;\n}\n\nconst Table: FC<TableProps> = ({\n  ref = null,\n  className = '',\n  mobileLayout = 'list',\n  tabletLayout = 'table',\n  desktopLayout = 'table',\n  children,\n  paginationProps,\n  sortDescription = '',\n  ...props\n}) => {\n  const tableClassNames = classNames(\n    'agora-table-container',\n    {\n      'layout-table-mobile': mobileLayout === 'table',\n      'layout-list-mobile': mobileLayout === 'list',\n      'layout-table-tablet': tabletLayout === 'table',\n      'layout-list-tablet': tabletLayout === 'list',\n      'layout-table-desktop': desktopLayout === 'table',\n      'layout-list-desktop': desktopLayout === 'list'\n    },\n    className\n  );\n\n  return (\n    <div className=\"agora-table\">\n      <table {...props} className={tableClassNames} ref={ref}>\n        {children}\n      </table>\n      {paginationProps && <TablePagination {...paginationProps} />}\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {sortDescription}\n      </span>\n    </div>\n  );\n};\n\nexport { Table };\n","import { Button, ButtonAppearance, ButtonVariant } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode, useMemo } from 'react';\nimport './tag.scss';\n\nexport interface TagProps extends ComponentProps<'button'> {\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the icon to use.\n   */\n  icon?: string;\n  /**\n   * Defines the name of the icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  iconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Add a darkMode to the button tag.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst Tag: FC<TagProps> = ({ ref = null, darkMode = false, icon = '', iconHover = '', children, className = '', ...props }) => {\n  const tagClassName = classNames('agora-btn-tag', className);\n\n  const buttonStyleMemo = useMemo<{ appearance: ButtonAppearance; variant: ButtonVariant }>(() => {\n    return {\n      appearance: 'outline',\n      variant: 'neutral',\n      darkMode: stringToBoolean(darkMode)\n    };\n  }, [darkMode]);\n\n  return (\n    <Button\n      {...props}\n      fullWidth={false}\n      hasIcon\n      trailingIcon=\"agora-line-x\"\n      trailingIconHover=\"agora-solid-x\"\n      leadingIcon={stringToBoolean(props.hasIcon) ? icon : undefined}\n      leadingIconHover={stringToBoolean(props.hasIcon) ? iconHover : undefined}\n      className={tagClassName}\n      ref={ref}\n      {...buttonStyleMemo}\n    >\n      {children}\n    </Button>\n  );\n};\n\nexport { Tag };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport './timeline-event.scss';\n\nexport interface TimelineEventProps extends ComponentPropsWithoutRef<'button'> {\n  /**\n   * Hide the label\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Label for the event\n   */\n  label?: string;\n  /**\n   * Additional class names\n   */\n  className?: string;\n  /**\n   * Is the event active\n   */\n  active?: boolean;\n  /**\n   * Has an icon\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Icon name\n   */\n  icon?: string;\n  /**\n   * Icon alt text\n   */\n  altIcon?: string;\n  /**\n   * Determines if the timeline event is interactive or not\n   */\n  interactive?: BooleanProp;\n  /**\n   * Children\n   */\n  children: ReactNode;\n}\n\nexport const TimelineEvent: FC<TimelineEventProps> = ({ label, hideLabel, active, className, interactive, ...props }) => {\n  const timelineEventClassNames = classNames('agora-timeline-step', className, { active: stringToBoolean(active) });\n  const timelineLabelClassNames = classNames('timeline-label', { 'invisible h-0 overflow-hidden': stringToBoolean(hideLabel) });\n\n  const propsClone = { ...props };\n  delete propsClone.children;\n\n  return (\n    <button\n      {...propsClone}\n      className={timelineEventClassNames}\n      tabIndex={interactive ? 0 : -1}\n      aria-current={stringToBoolean(active)}\n      aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n    >\n      {label && !stringToBoolean(hideLabel) && (\n        <div className={timelineLabelClassNames} aria-labelledby={label}>\n          {label}\n        </div>\n      )}\n      <div className=\"timeline-event-container\">\n        <div className=\"timeline-event-left-indicator\" />\n        <div className=\"timeline-event-dot\">\n          <div className=\"timeline-event\" />\n        </div>\n        <div className=\"timeline-event-right-indicator\" />\n      </div>\n    </button>\n  );\n};\n","import React, { FC } from 'react';\nimport { Icon } from '@/components/icon';\nimport { stringToBoolean } from '@/utils';\nimport { TimelineEventProps } from '../timeline-event/timeline-event';\nimport './timeline-event-vertical.scss';\n\nexport const TimelineEventVertical: FC<TimelineEventProps> = ({ hasIcon, icon, altIcon, children }) => {\n  return (\n    <li className=\"agora-timeline-item\">\n      <div className=\"timeline-event\">\n        {!stringToBoolean(hasIcon) ? (\n          <div className=\"timeline-dot\" />\n        ) : (\n          <div className=\"timeline-icon\">\n            <Icon name={icon} alt={altIcon} aria-hidden={!altIcon} />\n          </div>\n        )}\n        <div className=\"timeline-line\" />\n      </div>\n      <div className=\"timeline-content\">{children}</div>\n    </li>\n  );\n};\n","import React, { Children, ComponentPropsWithoutRef, FC, ReactElement, useEffect, useId, useState } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { TimelineEventVertical } from '../shared/timeline-event-vertical';\nimport { TimelineEventProps } from '../shared/timeline-event/timeline-event';\nimport './timeline-vertical.scss';\n\nexport interface TimelineVerticalProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Hide the labels\n   */\n  hideLabels: BooleanProp;\n  /**\n   * Timeline events\n   */\n  children: ReactElement<TimelineEventProps> | Array<ReactElement<TimelineEventProps>>;\n}\n\nexport const TimelineVertical: FC<TimelineVerticalProps> = ({ hideLabels, ...props }) => {\n  const generateId = useId();\n  const [events, setEvents] = useState<Array<Array<ReactElement<TimelineEventProps>>>>([]);\n\n  useEffect(() => {\n    const sortedEvents = Children.toArray(props.children) as Array<ReactElement<TimelineEventProps>>;\n\n    const groupedEvents = sortedEvents.reduce(\n      (grouped, event) => {\n        const label = event.props.label ?? '';\n        grouped[label] = grouped[label] || [];\n        grouped[label].push(event);\n        return grouped;\n      },\n      {} as Record<string, ReactElement<TimelineEventProps>[]>\n    );\n\n    const groupedEventsArray = Object.values(groupedEvents);\n\n    setEvents(groupedEventsArray);\n  }, [props.children]);\n\n  return (\n    <div {...props} className={classNames('agora-timeline-vertical')}>\n      {events.map((group, groupIndex) => {\n        const keyGroup = `timeline-group-${groupIndex}-${generateId}`;\n\n        const groupClassNames = classNames('timeline-group', { 'has-label': !stringToBoolean(hideLabels) });\n\n        return (\n          <div key={keyGroup} className={groupClassNames}>\n            {!stringToBoolean(hideLabels) && group[0]?.props.label && (\n              <div className=\"timeline-label-wrapper\">\n                <div className=\"timeline-label\">{group[0].props.label}</div>\n              </div>\n            )}\n            <div className=\"timeline-items\">\n              {group.map((event, eventIndex) => {\n                const keyEvent = `timeline-event-${groupIndex}-${eventIndex}-${generateId}`;\n                return (\n                  <TimelineEventVertical key={keyEvent} hasIcon={event.props.hasIcon} icon={event.props.icon} altIcon={event.props.altIcon}>\n                    {event.props.children}\n                  </TimelineEventVertical>\n                );\n              })}\n            </div>\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, useEffect, useLayoutEffect, useState } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Button } from '@/components/button';\nimport { TimelineEvent, TimelineEventProps } from '../shared/timeline-event/timeline-event';\nimport { TimelineVertical } from '../timeline-vertical';\nimport './timeline-horizontal.scss';\n\nexport interface TimelineHorizontalProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Label for the next button\n   **/\n  nextLabel: string;\n  /**\n   * Label for the previous button\n   **/\n  previousLabel: string;\n  /**\n   * Determines if the timeline is interactive or not\n   **/\n  interactive?: BooleanProp;\n  /**\n   * Timeline events\n   **/\n  children: ReactElement<TimelineEventProps> | Array<ReactElement<TimelineEventProps>>;\n}\n\nexport const TimelineHorizontal: FC<TimelineHorizontalProps> = ({\n  children,\n  nextLabel,\n  previousLabel,\n  interactive = true,\n  className,\n  ...props\n}) => {\n  const [isMobile, setIsMobile] = useState(window.innerWidth < 768);\n  const maxVisibleEvents = 6;\n  const [events, setEvents] = useState<Array<ReactElement<TimelineEventProps>>>([]);\n  const [activeEvent, setActiveEvent] = useState<number>(0);\n\n  const [startIndex, setStartIndex] = useState<number>(0);\n  const [endIndex, setEndIndex] = useState<number>(maxVisibleEvents);\n\n  useEffect(() => {\n    const eventChildren = Children.toArray(children) as Array<ReactElement<TimelineEventProps>>;\n    setEvents(eventChildren);\n    const activeIndex = eventChildren.findIndex((child) => child.props.active);\n    setActiveEvent(activeIndex !== -1 ? activeIndex : 0);\n  }, [children]);\n\n  const handleClickEvent = (index: number) => {\n    setActiveEvent(index);\n  };\n\n  const getTimelineStepClasses = (index: number, currentActiveEvent: number) => {\n    return index < currentActiveEvent ? 'completed' : '';\n  };\n\n  const handleNextButtonClick = () => {\n    const newEvent = Math.min(activeEvent + 1, Children.count(children) - 1);\n    setActiveEvent(newEvent);\n\n    if (newEvent >= endIndex) {\n      setStartIndex(startIndex + 1);\n      setEndIndex(endIndex + 1);\n    }\n  };\n\n  const handlePreviousButtonClick = () => {\n    const newEvent = Math.max(activeEvent - 1, 0);\n    setActiveEvent(newEvent);\n\n    if (newEvent < startIndex) {\n      setStartIndex(startIndex - 1);\n      setEndIndex(endIndex - 1);\n    }\n  };\n\n  const selectedContentEvent = Children.map(children, (child, index) => {\n    return index === activeEvent ? child.props.children : null;\n  });\n\n  const visibleEvents = events.slice(startIndex, endIndex);\n\n  useEffect(() => {\n    if (activeEvent > endIndex - 1 || activeEvent < startIndex) {\n      const newStartIndex = Math.max(0, activeEvent - Math.floor(maxVisibleEvents / 2));\n      const newEndIndex = newStartIndex + maxVisibleEvents;\n\n      if (newEndIndex > events.length) {\n        setStartIndex(events.length - maxVisibleEvents);\n        setEndIndex(events.length);\n      } else {\n        setStartIndex(newStartIndex);\n        setEndIndex(newEndIndex);\n      }\n    }\n  }, [activeEvent, events, maxVisibleEvents, startIndex, endIndex]);\n\n  useLayoutEffect(() => {\n    function updateSize() {\n      setIsMobile(window.innerWidth < 768);\n    }\n    window.addEventListener('resize', updateSize);\n    updateSize();\n    return () => window.removeEventListener('resize', updateSize);\n  }, []);\n\n  const renderTimelineActions = () => {\n    const isPreviousButtonDisabled = activeEvent === 0;\n    const isLastButtonDisabled = activeEvent === Children.count(children) - 1;\n\n    return (\n      <div className=\"timeline-actions\">\n        <Button\n          appearance=\"link\"\n          variant=\"primary\"\n          hasIcon\n          leadingIcon=\"agora-line-arrow-left-circle\"\n          leadingIconHover=\"agora-line-arrow-left-circle\"\n          className=\"button-previous\"\n          onClick={handlePreviousButtonClick}\n          disabled={isPreviousButtonDisabled}\n        >\n          {previousLabel}\n        </Button>\n        <Button\n          appearance=\"link\"\n          variant=\"primary\"\n          hasIcon\n          trailingIcon=\"agora-line-arrow-right-circle\"\n          trailingIconHover=\"agora-line-arrow-right-circle\"\n          className=\"button-next\"\n          onClick={handleNextButtonClick}\n          disabled={isLastButtonDisabled}\n        >\n          {nextLabel}\n        </Button>\n      </div>\n    );\n  };\n\n  const timelineClasses = classNames(\n    'agora-timeline-horizontal',\n    {\n      'event-static': !stringToBoolean(interactive)\n    },\n    className\n  );\n\n  return (\n    <div>\n      {isMobile ? (\n        <TimelineVertical {...props} hideLabels={false}>\n          {children}\n        </TimelineVertical>\n      ) : (\n        <div {...props} className={timelineClasses}>\n          <div className=\"timeline-steps\">\n            {visibleEvents.map((event, index) => {\n              const isFirstVisibleEvent = index + startIndex === 0;\n              const isLastVisibleEvent = index + startIndex === endIndex - 1;\n\n              const hasMoreEventsLeft = startIndex > 0;\n              const hasMoreEventsRight = endIndex < events.length;\n\n              const eventClassNames = classNames(getTimelineStepClasses(index + startIndex, activeEvent), {\n                'first-event': isFirstVisibleEvent,\n                'last-event': isLastVisibleEvent && index + startIndex === events.length - 1,\n                'has-more-events-left': hasMoreEventsLeft,\n                'has-more-events-right': hasMoreEventsRight\n              });\n\n              return (\n                <TimelineEvent\n                  key={event.props.id ?? index}\n                  {...event.props}\n                  active={index + startIndex === activeEvent}\n                  onClick={() => handleClickEvent(index + startIndex)}\n                  interactive={stringToBoolean(interactive)}\n                  className={eventClassNames}\n                >\n                  {event.props.children}\n                </TimelineEvent>\n              );\n            })}\n          </div>\n          {stringToBoolean(interactive) && events.length > maxVisibleEvents && renderTimelineActions()}\n          <div className=\"timeline-content\">{selectedContentEvent}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { createContext, useContext } from 'react';\nimport { ToastProps } from './toast';\nimport './toast.scss';\n\nexport interface ToastContextProps {\n  showToast: (data: ToastProps, duration?: number) => void;\n  removeToast: (data: ToastProps) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps>({} as ToastContextProps);\n\nconst useToastContext = (): ToastContextProps => {\n  const context = useContext(ToastContext);\n  return context;\n};\n\nexport { ToastContext, useToastContext };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { useToastContext } from './toast-context';\nimport './toast.scss';\n\nexport type ToastType = 'success' | 'failure' | 'warning' | 'info';\n\nexport interface ToastProps extends Omit<ComponentPropsWithoutRef<'div'>, 'id' | 'title'> {\n  /**\n   * The id of the toast\n   */\n  id: number | string;\n  /**\n   * Title of the toast\n   */\n  title: ReactNode;\n  /**\n   * Description of the toast\n   */\n  description: ReactNode;\n  /**\n   * Type variant of the toast\n   */\n  type: ToastType;\n  /**\n   * Alternative text to apply to the toast close button\n   */\n  closeLabel: string;\n  /**\n   * Callback that's invoked when the toast is dismissed\n   */\n  onDismiss?: () => void;\n}\n\nexport const Toast: FC<ToastProps> = ({ className, id, title, description, type, closeLabel, onDismiss }: ToastProps) => {\n  const { removeToast } = useToastContext();\n\n  const getIconNameForType = (selectedType: ToastType): string => {\n    switch (selectedType) {\n      case 'success':\n        return 'agora-solid-check-circle';\n      case 'failure':\n        return 'agora-solid-alert-triangle';\n      case 'warning':\n        return 'agora-solid-info-mark';\n      default:\n        return 'agora-solid-info-mark';\n    }\n  };\n\n  const handleCloseClick = () => {\n    removeToast({\n      id,\n      type,\n      title,\n      description,\n      closeLabel,\n      onDismiss\n    } as ToastProps);\n  };\n\n  const toastContainerClassnames = classNames('agora-toast', { [`agora-toast-${type}`]: type }, className);\n\n  return (\n    <div className={toastContainerClassnames} role=\"alert\" key={id}>\n      <Icon className=\"toast-icon mt-[10px]\" name={getIconNameForType(type)} dimensions=\"m\" aria-hidden />\n\n      <div className=\"toast-messages flex flex-col gap-8\">\n        <div className=\"toast-title mt-8\">{title}</div>\n        <div className=\"toast-description\">{description}</div>\n      </div>\n\n      <Button\n        className=\"toast-close-button\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        onClick={handleCloseClick}\n        aria-label={closeLabel}\n        hasIcon\n        iconOnly\n        trailingIcon=\"agora-line-x\"\n        trailingIconHover=\"agora-solid-x\"\n      ></Button>\n    </div>\n  );\n};\n","import { useState } from 'react';\nimport { ToastProps } from './toast';\nimport { asyncTrigger } from '@/utils';\n\nconst useToast = () => {\n  const [toasts, setToasts] = useState<ToastProps[]>([]);\n\n  const removeToast = (toast: ToastProps) => {\n    setToasts((prevToasts) => prevToasts.filter((t) => t.id !== toast.id));\n    toast.onDismiss?.();\n  };\n\n  const showToast = (toast: ToastProps, duration?: number) => {\n    setToasts((prevToasts) => {\n      return [...prevToasts, toast];\n    });\n\n    if (duration && duration > 0) {\n      asyncTrigger(() => {\n        removeToast(toast);\n      }, duration);\n    }\n  };\n\n  return { toasts, showToast, removeToast };\n};\n\nexport { useToast };\n","import React, { FC, ReactNode, useMemo } from 'react';\nimport { Toast } from './toast';\nimport { ToastContext } from './toast-context';\nimport './toast.scss';\nimport { useToast } from './use-toast';\nimport { useWindowSize } from '@/hooks';\n\nexport type ToastPositions = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface ToastProviderProps {\n  children?: ReactNode;\n  position?: ToastPositions;\n}\nconst ToastProvider: FC<ToastProviderProps> = ({ children, position = 'bottom-right' }: ToastProviderProps) => {\n  const { toasts, showToast, removeToast } = useToast();\n  const { width } = useWindowSize();\n\n  const contextValue = useMemo(\n    () => ({\n      showToast,\n      removeToast\n    }),\n    [showToast, removeToast]\n  );\n\n  const memoToast = useMemo(() => {\n    const VISIBLE_TOAST_NUMBER_MOBILE = 3;\n    const VISIBLE_TOAST_NUMBER_DESKTOP = 5;\n    const isMobile = width < 768;\n    const visibleToastsCount = isMobile ? VISIBLE_TOAST_NUMBER_MOBILE : VISIBLE_TOAST_NUMBER_DESKTOP;\n\n    if (position.includes('bottom')) {\n      return [...toasts].slice(-1 * visibleToastsCount);\n    }\n\n    return [...toasts].reverse().slice(0, visibleToastsCount);\n  }, [position, toasts, width]);\n\n  return (\n    <ToastContext value={contextValue}>\n      {children}\n      {memoToast.length > 0 && (\n        <div className={`agora-toast-list toast-list-${position}`} aria-live=\"assertive\">\n          {memoToast.map((toast) => {\n            return <Toast key={toast.id} {...toast} />;\n          })}\n        </div>\n      )}\n    </ToastContext>\n  );\n};\n\nexport { ToastProvider };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, KeyboardEvent, MouseEvent, useId, useState } from 'react';\nimport './toggle.scss';\nimport { IconItem, IconSet, IconSetState } from '../shared/icon-set/icon-set';\n\n/**\n * The available toggle button appearances. Defines the button layout shape,\n */\nexport type ToggleAppearance = 'button' | 'icon';\n/**\n * The available variants of the toggle button. This variants will define the background and border color of the button.\n */\nexport type ToggleVariant = 'primary' | 'neutral';\n\nexport interface ToggleProps extends ComponentProps<'input'> {\n  /**\n   * Defines if the toggle takes the container full width.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the toggle renders in dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  appearance?: ToggleAppearance;\n  /**\n   * The variant of the button. This variants will define the background and border color of the given Button.\n   */\n  variant?: ToggleVariant;\n  /**\n   * Data attributes.\n   * Allow when implemented interface add data-* attribute.\n   */\n  [dataAttribute: `data-${string}`]: string;\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\n\nconst Toggle: FC<ToggleProps> = ({\n  ref = null,\n  appearance = 'button',\n  variant = 'primary',\n  fullWidth = false,\n  darkMode = 'false',\n  className = '',\n  children,\n  onChange: onChangeFromProps,\n  checked: checkedFromProps,\n  defaultChecked,\n  disabled,\n  hasIcon,\n  iconOnly,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  ...props\n}) => {\n  const generatedId = useId();\n  const isControlled = typeof checkedFromProps !== 'undefined';\n  const hasDefaultChecked = typeof defaultChecked !== 'undefined';\n  const [internalChecked, setInternalChecked] = useState(hasDefaultChecked ? defaultChecked : false);\n  const checked = isControlled ? checkedFromProps : internalChecked;\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (onChangeFromProps) {\n      onChangeFromProps(e);\n    }\n\n    if (!isControlled) {\n      setInternalChecked(e.target.checked);\n    }\n  };\n\n  const toggleButtonClassName = classNames(\n    'agora-toggle',\n    `agora-toggle-${appearance}`,\n    `agora-toggle-${appearance}-${variant}`,\n    { active: activeState == 'active' },\n    { checked },\n    { disabled },\n    { 'full-width': stringToBoolean(fullWidth) },\n    { 'dark-mode': stringToBoolean(darkMode) },\n    { 'has-icon': stringToBoolean(hasIcon) },\n    { 'icon-only': stringToBoolean(iconOnly) },\n    className\n  );\n\n  const onClickHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n    props.onClick?.(evt);\n  };\n\n  const onMouseUpHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onMouseDownHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n    props.onMouseDown?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (evt.code === 'Space' || evt.code === 'Enter') {\n      evt.preventDefault();\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (evt.code === 'Space' || evt.code === 'Enter') {\n      setActiveState('default');\n\n      const fakeEvent = {\n        ...evt,\n        target: evt.currentTarget\n      } as unknown as ChangeEvent<HTMLInputElement>;\n\n      if (!isControlled) {\n        setInternalChecked((prev) => !prev);\n      }\n\n      onChange(fakeEvent);\n    }\n\n    props.onKeyUp?.(evt);\n  };\n  return (\n    <div className={toggleButtonClassName}>\n      <input\n        {...props}\n        onClick={onClickHandler}\n        onMouseUp={onMouseUpHandler}\n        onMouseDown={onMouseDownHandler}\n        onMouseEnter={onMouseEnterHandler}\n        onMouseLeave={onMouseLeaveHandler}\n        onKeyUp={onKeyUpHandler}\n        onKeyDown={onKeyDownHandler}\n        aria-labelledby={generatedId}\n        ref={ref}\n        type=\"checkbox\"\n        onChange={onChange}\n        checked={checked}\n        disabled={disabled}\n      />\n      {stringToBoolean(hasIcon) && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} />\n        </IconSet>\n      )}\n\n      <div className=\"children-content\" id={generatedId}>\n        {children}\n      </div>\n\n      {stringToBoolean(hasIcon) && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} />\n        </IconSet>\n      )}\n    </div>\n  );\n};\n\nexport { Toggle };\n","import React, {\n  ChangeEvent,\n  Children,\n  cloneElement,\n  ComponentProps,\n  FC,\n  isValidElement,\n  ReactElement,\n  Ref,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { ToggleAppearance, ToggleProps, ToggleVariant } from '@/components/toggle';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport './toggle-group.scss';\n\nexport type ToggleGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ToggleGroupElement extends HTMLDivElement {\n  /**\n   *  Current checked values of the toggle group.\n   */\n  value: string[];\n}\n\nexport interface ToggleGroupProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Defines the appearance of the children toggles.\n   */\n  appearance?: ToggleAppearance;\n  /**\n   * Defines if the children toggles are full width.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Toggles the dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines the variant of the children toggles.\n   */\n  variant?: ToggleVariant;\n  /**\n   * List of toggle components to aggregate.\n   */\n  children?: ReactElement<ToggleProps> | ReactElement<ToggleProps>[];\n  /**\n   * Defines the orientation of the toggle group.\n   */\n  orientation?: ToggleGroupOrientation;\n  /**\n   * Defines if it is allowed to have more than one toggle checked.\n   */\n  multiple?: BooleanProp;\n  /**\n   * Defines the checked toggle or toggles.\n   */\n  value?: string | string[];\n  /**\n   * Defines the default checked toggle or toggles.\n   */\n  defaultValue?: string | string[];\n  /**\n   * Event handler called whenever one of the children toggles changes their checked value.\n   */\n  onChange?: (val: string[]) => void;\n  /**\n   * React ref object to the toggle group.\n   */\n  ref?: Ref<ToggleGroupElement>;\n}\n\nconst ToggleGroup: FC<ToggleGroupProps> = ({\n  ref = null,\n  appearance = 'button',\n  variant = 'primary',\n  fullWidth = false,\n  darkMode = false,\n  orientation = 'horizontal',\n  multiple = true,\n  value: valueFromProps,\n  defaultValue,\n  onChange: onChangeFromProps,\n  className,\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n  const toggleGroupClassName = classNames(\n    'agora-toggle-group',\n    orientation,\n    { buttons: appearance === 'button' },\n    { icons: appearance === 'icon' },\n    { 'full-width': stringToBoolean(fullWidth) },\n    className\n  );\n\n  const isControlled = typeof valueFromProps !== 'undefined';\n\n  const hasDefaultValue = typeof defaultValue !== 'undefined';\n  const parsedDefaultValue = hasDefaultValue ? (!Array.isArray(defaultValue) ? [defaultValue] : defaultValue) : [];\n\n  const [internalValue, setInternalValue] = useState(hasDefaultValue ? parsedDefaultValue : []);\n\n  const value = isControlled ? (!Array.isArray(valueFromProps) ? [valueFromProps] : valueFromProps) : internalValue;\n\n  const parsedChildren = Children.map(children, (child, index) => {\n    if (!isValidElement<ToggleProps>(child)) {\n      return null;\n    }\n\n    const parsedChildValue = child.props.value ?? `${generatedId}-v-${index}`;\n\n    const checkedValues = stringToBoolean(multiple) ? value : [value[0]];\n\n    const isChecked = !!checkedValues.find((cv) => cv === parsedChildValue);\n\n    const onChange = (evt: ChangeEvent<HTMLInputElement>) => {\n      if (stringToBoolean(multiple)) {\n        let newVals = [...value];\n        if (newVals.find((v) => v === evt.target.value)) {\n          newVals = newVals.filter((v) => v !== evt.target.value);\n        } else {\n          newVals.push(evt.target.value);\n        }\n\n        setInternalValue(newVals);\n\n        onChangeFromProps?.(newVals);\n      } else {\n        const newVal = [evt.target.value];\n        onChangeFromProps?.(newVal);\n        setInternalValue(newVal);\n      }\n    };\n\n    return cloneElement(child, {\n      appearance,\n      variant,\n      fullWidth: stringToBoolean(fullWidth),\n      darkMode: stringToBoolean(darkMode),\n      value: parsedChildValue,\n      checked: isChecked,\n      defaultChecked: undefined,\n      onChange: onChange\n    });\n  });\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<HTMLDivElement>(\n    ref,\n    innerRef,\n    {\n      value: internalValue\n    } as ToggleGroupElement,\n    [internalValue]\n  );\n\n  return (\n    <div {...props} ref={innerRef} className={toggleGroupClassName}>\n      {parsedChildren}\n    </div>\n  );\n};\n\nexport { ToggleGroup };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, useId } from 'react';\nimport './file-list.scss';\nimport { Button, ButtonProps } from '@/components/button';\n\nexport interface FileListProps extends ComponentPropsWithoutRef<'div'> {\n  files: File[];\n\n  removeFileButtonLabel: string;\n  onFileRemove?: (fileRemoved: File) => void;\n\n  replaceFileButtonLabel: string;\n  onFileReplace?: (fileReplaced: File) => void;\n}\n\nconst FileList: FC<FileListProps> = ({\n  files = [],\n\n  removeFileButtonLabel,\n  onFileRemove,\n\n  replaceFileButtonLabel,\n  onFileReplace,\n\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const handleReplaceFile = (fileToReplace: File) => {\n    onFileReplace?.(fileToReplace);\n  };\n\n  const handleRemoveFile = (fileToRemoved: File) => {\n    onFileRemove?.(fileToRemoved);\n  };\n\n  const getParsedSizeString = (bytes: number, decimals = 0) => {\n    const k = 1024;\n    const decimalCases = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(decimalCases))} ${sizes[i]}`;\n  };\n\n  const getAvailableFileActions = (file: File): ButtonProps[] => {\n    return [\n      {\n        'className': 'replace-action',\n        'hasIcon': true,\n        'iconOnly': true,\n        'appearance': 'link',\n        'variant': 'neutral',\n        'leadingIcon': 'agora-line-refresh-ccw',\n        'leadingIconHover': 'agora-solid-refresh-ccw',\n        'onClick': () => handleReplaceFile(file),\n        'aria-label': `${replaceFileButtonLabel} ${file.name}`,\n        'type': 'button'\n      },\n      {\n        'className': 'delete-action',\n        'hasIcon': true,\n        'iconOnly': true,\n        'appearance': 'link',\n        'variant': 'neutral',\n        'leadingIcon': 'agora-line-trash',\n        'leadingIconHover': 'agora-solid-trash',\n        'onClick': () => handleRemoveFile(file),\n        'aria-label': `${removeFileButtonLabel} ${file.name}`,\n        'type': 'button'\n      }\n    ] as ButtonProps[];\n  };\n\n  const fileListClassNames = classNames('agora-file-list', { 'p-16': files.length > 0 }, props.className);\n\n  return (\n    <ul className={fileListClassNames} aria-live=\"polite\">\n      {files.map((file, index) => {\n        const fileIndex = `${generatedId}-${file.name}-${index}`;\n        const actions = getAvailableFileActions(file);\n\n        return (\n          <li className=\"file\" key={fileIndex}>\n            <div className=\"file-item\">\n              <div className=\"file-info\">\n                <div className=\"name\">{file.name}</div>\n                <div className=\"size\">{getParsedSizeString(file.size)}</div>\n              </div>\n\n              {actions.length > 0 && (\n                <div className=\"actions\">\n                  {actions.map((actionBtnProps, actionIndex) => {\n                    const actionKey = `${fileIndex}-action-${actionIndex}`;\n                    return <Button key={actionKey} {...actionBtnProps} />;\n                  })}\n                </div>\n              )}\n            </div>\n\n            <div className=\"file-divider\" />\n          </li>\n        );\n      })}\n    </ul>\n  );\n};\n\nexport { FileList };\n","import { asyncTrigger } from '@/utils';\nimport { useEffect, useRef, useState } from 'react';\n\nconst isFileExtensionAllowed = (fileName: string, extensionWhitelist: string[]): boolean => {\n  if (extensionWhitelist.length == 0) {\n    return true;\n  }\n\n  const lastPoint = fileName.lastIndexOf('.');\n  const fileExtension = fileName.substring(lastPoint);\n  const isAllowed = extensionWhitelist.includes(fileExtension);\n\n  return isAllowed;\n};\n\nconst isNotDuplicated = (filename: string, files: File[]): boolean => {\n  return files.findIndex((f) => f.name === filename) < 0;\n};\n\nconst getFileInput = (\n  multiple: boolean,\n  extensionWhiteList: string[],\n  onChangeHandler: (event: Event) => void,\n  fileToReplace?: string\n): HTMLInputElement => {\n  const input = document.createElement('input');\n  input.type = 'file';\n  input.onchange = onChangeHandler;\n  input.multiple = multiple;\n  input.accept = extensionWhiteList.join(',');\n\n  if (fileToReplace) {\n    input.dataset.replaceFile = fileToReplace;\n  }\n\n  return input;\n};\n\nconst validateFiles = (\n  lastFiles: File[],\n  newFiles: File[],\n  maxCount: number,\n  maxSize: number,\n  extensionWhitelist: string[],\n  replaceValidation = false\n): FileUploadError => {\n  let hasErrors = false;\n  const duplicatedFiles: string[] = [];\n  const sizeExceededFiles: string[] = [];\n  const extensionForbiddenFiles: string[] = [];\n\n  const maxCountExceeded = !replaceValidation && maxCount < lastFiles.length + newFiles.length;\n  if (maxCountExceeded) {\n    hasErrors = true;\n  }\n\n  newFiles.forEach((file) => {\n    if (!isNotDuplicated(file.name, lastFiles)) {\n      hasErrors = true;\n      duplicatedFiles.push(file.name);\n    }\n\n    if (file.size > maxSize) {\n      hasErrors = true;\n      sizeExceededFiles.push(file.name);\n    }\n\n    if (!isFileExtensionAllowed(file.name, extensionWhitelist)) {\n      hasErrors = true;\n      extensionForbiddenFiles.push(file.name);\n    }\n  });\n\n  return {\n    hasErrors,\n    maxCountExceeded,\n    duplicatedFiles,\n    sizeExceededFiles,\n    extensionForbiddenFiles\n  } as FileUploadError;\n};\n\nexport interface FileUploadError {\n  hasErrors: boolean;\n  maxCountExceeded: boolean;\n  duplicatedFiles: string[];\n  sizeExceededFiles: string[];\n  extensionForbiddenFiles: string[];\n}\n\nexport interface IUseFileUpload {\n  files: File[];\n  errors: FileUploadError | null;\n  onAddFiles: () => void;\n  onRemoveFile: (file: File) => void;\n  onReplaceFile: (file: File) => void;\n  onPasteFiles: (files: File[]) => void;\n  onReset: (files: File[]) => void;\n}\n\nexport const useFileUpload = (\n  maxFileCount: number,\n  maxFileSize: number,\n  extensionWhitelist: string[],\n  multiple: boolean,\n  onChange: (files: File[], errors: FileUploadError | null) => void,\n  defaultFiles?: File[]\n): IUseFileUpload => {\n  const [files, setFiles] = useState<File[]>([]);\n  const lastErrors = useRef<FileUploadError | null>(null);\n\n  const getParsedMaxCount = () => {\n    return multiple ? maxFileCount : 1;\n  };\n\n  const triggerOnChange = (files: File[], errors: FileUploadError | null) => {\n    asyncTrigger(() => onChange(files, errors));\n  };\n\n  const resetFiles = (initialFiles: File[]) => {\n    const validationErrors = validateFiles([], initialFiles, getParsedMaxCount(), maxFileSize, extensionWhitelist);\n\n    const newFiles = [];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n      newFiles.push(...initialFiles);\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const addFiles = (filesToAdd: File[]) => {\n    if (filesToAdd.length == 0) {\n      return;\n    }\n\n    const validationErrors = validateFiles(files, filesToAdd, getParsedMaxCount(), maxFileSize, extensionWhitelist);\n\n    const newFiles = [...files];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n      newFiles.push(...filesToAdd);\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const removeFile = (file: File) => {\n    lastErrors.current = null;\n    setFiles((prevFiles) => {\n      const newFiles = prevFiles.filter((f) => f.name !== file.name);\n      triggerOnChange(newFiles, lastErrors.current);\n      return newFiles;\n    });\n  };\n\n  const replaceFile = (replaceFileName: string, filesToAdd: File[]) => {\n    if (!replaceFileName || filesToAdd.length == 0) {\n      return;\n    }\n\n    const validationErrors = validateFiles(files, [filesToAdd[0]], getParsedMaxCount(), maxFileSize, extensionWhitelist, true);\n\n    const newFiles = [...files];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n\n      const targetIndex = newFiles.findIndex((f) => f.name === replaceFileName);\n\n      if (targetIndex >= 0) {\n        newFiles.splice(targetIndex, 1, filesToAdd[0]);\n      }\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const handleInputFileChangeOnAdd = (event: Event) => {\n    const target = event.currentTarget as HTMLInputElement;\n\n    const selectedFiles = Array.from(target.files ?? []);\n    addFiles(selectedFiles);\n  };\n\n  const handleInputFileChangeOnReplace = (event: Event) => {\n    const target = event.currentTarget as HTMLInputElement;\n    const selectedFiles = Array.from(target.files ?? []);\n    replaceFile(target.dataset.replaceFile ?? '', selectedFiles);\n  };\n\n  useEffect(() => {\n    if (defaultFiles) {\n      setFiles(defaultFiles);\n    }\n  }, [defaultFiles]);\n\n  const onAddFiles = () => {\n    const input = getFileInput(multiple, extensionWhitelist, handleInputFileChangeOnAdd);\n    input.click();\n  };\n\n  const onRemoveFile = (file: File) => {\n    removeFile(file);\n  };\n\n  const onReplaceFile = (file: File) => {\n    const input = getFileInput(multiple, extensionWhitelist, handleInputFileChangeOnReplace, file.name);\n    input.click();\n  };\n\n  const onPasteFiles = (newFiles: File[]) => {\n    addFiles(newFiles);\n  };\n\n  return { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles, onReset: resetFiles } as IUseFileUpload;\n};\n","import { Button } from '@/components/button/';\nimport { Feedback } from '@/components/shared/feedback/';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { FileList } from '../shared/file-list';\nimport { FileUploadError, useFileUpload } from '../shared/use-file-upload';\n\nimport './button-uploader.scss';\n\nexport interface ButtonUploaderElement extends HTMLInputElement {\n  input: HTMLInputElement | null;\n  reset: () => void;\n}\n\nexport interface ButtonUploaderProps extends ComponentProps<'input'> {\n  /**\n   * Label for the input file uploader.\n   */\n  label?: string;\n  /**\n   * Label for the button file uploader after files selected.\n   */\n  selectedFilesLabel?: string;\n  /**\n   * Label for the button file uploader.\n   */\n  inputLabel?: string;\n  /**\n   * Hides the button labels.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Alternative text for the delete file button of the file list.\n   */\n  removeFileButtonLabel: string;\n  /**\n   *  Alternative text for the replace file button of the file list.\n   */\n  replaceFileButtonLabel: string;\n  /**\n   *  Instruction text for the button uploader.\n   */\n  extensionsInstructions?: ReactNode;\n  /**\n   *  Max number of files to upload.\n   */\n  maxCount?: number;\n  /**\n   *  Max size in bytes of each file.\n   */\n  maxSize?: number;\n  /**\n   *  Max count exceeded error message.\n   */\n  maxCountExceededErrorLabel?: string;\n  /**\n   *  Max size exceeded error message.\n   */\n  maxSizeExceededErrorLabel?: string;\n  /**\n   *  Forbidden error message.\n   */\n  forbiddenExtensionErrorLabel?: string;\n  /**\n   *  Duplicated error message.\n   */\n  duplicatedFileErrorLabel?: string;\n  /**\n   *  Initial default files.\n   */\n  files?: File[];\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below button uploader.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlights the button uploader with some error indication.\n   */\n  hasError?: BooleanProp;\n}\n\nconst ButtonUploader: FC<ButtonUploaderProps> = ({\n  ref = null,\n  label,\n  inputLabel,\n  selectedFilesLabel,\n  hideLabel,\n\n  required = true,\n\n  removeFileButtonLabel,\n  replaceFileButtonLabel,\n\n  extensionsInstructions,\n  accept = '',\n  maxSize = Number.MAX_SAFE_INTEGER,\n  maxCount = Number.MAX_SAFE_INTEGER,\n\n  maxCountExceededErrorLabel = '',\n  maxSizeExceededErrorLabel = '',\n  forbiddenExtensionErrorLabel = '',\n  duplicatedFileErrorLabel = '',\n\n  multiple,\n  disabled,\n  onChange,\n\n  files: defaultFiles,\n\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n\n  id,\n  ...props\n}) => {\n  const generatedId = useId();\n  const customId = id || generatedId;\n\n  const isRequired = disabled ? false : required;\n\n  const innerButtonRef = useRef<HTMLButtonElement>(null);\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  const [labelText, setLabelText] = useState(inputLabel);\n\n  const [errorMessages, setErrorMessages] = useState([] as string[]);\n\n  const updateErrors = (errors: FileUploadError | null) => {\n    if (!errors) {\n      setErrorMessages([]);\n      return;\n    }\n\n    const parsedErrors: string[] = [];\n    if (errors.maxCountExceeded) {\n      parsedErrors.push(maxCountExceededErrorLabel);\n    }\n\n    errors.duplicatedFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${duplicatedFileErrorLabel}`);\n    });\n\n    errors.sizeExceededFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${maxSizeExceededErrorLabel}`);\n    });\n\n    errors.extensionForbiddenFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${forbiddenExtensionErrorLabel}`);\n    });\n\n    setErrorMessages(parsedErrors);\n  };\n\n  const handleOnChangeFiles = (files: File[], errors: FileUploadError | null) => {\n    if (innerInputRef.current) {\n      const list = new DataTransfer();\n\n      files.forEach((f) => {\n        list.items.add(f);\n      });\n\n      innerInputRef.current.files = list.files;\n\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n\n    updateErrors(errors);\n  };\n\n  const { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles, onReset } = useFileUpload(\n    maxCount,\n    maxSize,\n    accept ? accept.split(',') : [],\n    !!multiple,\n    handleOnChangeFiles,\n    defaultFiles\n  );\n\n  useImperativeHandle(\n    ref,\n    () =>\n      ({\n        input: innerInputRef.current,\n        reset: () => {\n          if (innerInputRef.current) {\n            innerInputRef.current.value = '';\n          }\n          onReset([]);\n        }\n      }) as ButtonUploaderElement\n  );\n\n  const canUpload = useMemo(() => {\n    if (multiple) {\n      return !disabled && files.length < maxCount;\n    }\n\n    return !disabled && files.length === 0;\n  }, [disabled, multiple, files]);\n\n  const handleFileReplace = (newFileToReplace: File) => {\n    onReplaceFile(newFileToReplace);\n  };\n\n  const handleFileRemove = (fileToRemove: File) => {\n    onRemoveFile(fileToRemove);\n  };\n\n  useEffect(() => {\n    const handlePaste = (e: Event) => {\n      if (!canUpload) {\n        return;\n      }\n\n      if (innerButtonRef.current && innerButtonRef.current === document.activeElement) {\n        const { clipboardData } = e as ClipboardEvent;\n        if (clipboardData && clipboardData.files.length > 0) {\n          const clipboardFiles = Array.from(clipboardData.files) ?? [];\n          onPasteFiles(clipboardFiles);\n        }\n      }\n    };\n\n    window.addEventListener('paste', handlePaste);\n\n    return () => {\n      window.removeEventListener('paste', handlePaste);\n    };\n  }, []);\n\n  const containerClassNames = classNames(\n    'agora-button-file-uploader',\n    { 'cannot-upload': !canUpload },\n    { 'has-error': hasError },\n    { 'gap-32': files.length > 0 },\n    props.className\n  );\n\n  const buttonContainerClassNames = classNames('button-file-uploader-container');\n\n  const fileListClassNames = classNames('file-list-container', { 'p-16': files.length > 0 });\n\n  useEffect(() => {\n    if (files.length > 0) {\n      setLabelText(`${files.length} ${selectedFilesLabel}`);\n    } else {\n      setLabelText(inputLabel);\n    }\n  }, [files]);\n\n  return (\n    <div className={containerClassNames}>\n      {label && (\n        <div className=\"button-uploader-label-wrapper\">\n          <label hidden={stringToBoolean(hideLabel)} htmlFor={customId} className=\"button-uploader-label\">\n            {label}\n          </label>\n        </div>\n      )}\n\n      <input ref={innerInputRef} type=\"file\" style={{ display: 'none' }} required={isRequired} />\n\n      <div className={buttonContainerClassNames}>\n        <Button\n          id={customId}\n          ref={innerButtonRef}\n          type=\"button\"\n          fullWidth\n          iconOnly={stringToBoolean(hideLabel)}\n          hasIcon\n          trailingIcon=\"agora-line-upload\"\n          trailingIconHover=\"agora-solid-upload\"\n          variant={errorMessages.length > 0 || stringToBoolean(hasError) ? 'danger' : 'neutral'}\n          disabled={!canUpload}\n          onClick={() => onAddFiles()}\n          aria-describedby={\n            (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText ? `button-uploader-${customId}-feedback` : undefined\n          }\n        >\n          {labelText}\n        </Button>\n\n        <div className=\"extension-instructions\">{extensionsInstructions}</div>\n\n        {errorMessages.length > 0 && (\n          <div className=\"errors-container\">\n            {errorMessages.map((message, index) => {\n              const errorKey = `error-message-${generatedId}-${index}`;\n              return <Feedback key={errorKey} feedbackState={'danger'} feedbackText={message} />;\n            })}\n          </div>\n        )}\n      </div>\n\n      <div className={fileListClassNames}>\n        <FileList\n          files={files}\n          onFileReplace={handleFileReplace}\n          onFileRemove={handleFileRemove}\n          removeFileButtonLabel={removeFileButtonLabel}\n          replaceFileButtonLabel={replaceFileButtonLabel}\n        />\n      </div>\n\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`button-uploader-${customId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { ButtonUploader };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button } from '@/components/button/button';\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport { FileList } from '../shared/file-list';\nimport { FileUploadError, useFileUpload } from '../shared/use-file-upload';\n\nimport './drag-and-drop-uploader.scss';\n\nexport interface DragAndDropUploaderProps extends ComponentProps<'input'> {\n  /**\n   * Label for the drag and drop file uploader.\n   */\n  dragAndDropLabel?: string;\n  /**\n   * Label for the input file uploader.\n   */\n  label?: string;\n  /**\n   * Label for the drag and drop file uploader after files selected.\n   */\n  selectedFilesLabel?: string;\n  /**\n   * Label for the drag and drop file button uploader.\n   */\n  inputLabel?: string;\n  /**\n   * Hides the drag and drop button labels.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Instruction text for the button uploader.\n   */\n  extensionsInstructions?: ReactNode;\n  /**\n   *  Text that separates instructions label from the button.\n   */\n  separatorLabel?: ReactNode;\n  /**\n   *  Alternative text for the delete file button of the file list.\n   */\n  removeFileButtonLabel: string;\n  /**\n   *  Alternative text for the replace file button of the file list.\n   */\n  replaceFileButtonLabel: string;\n  /**\n   *  Max number of files to upload.\n   */\n  maxCount?: number;\n  /**\n   *  Max size in bytes of each file.\n   */\n  maxSize?: number;\n  /**\n   *  Max count exceeded error message.\n   */\n  maxCountExceededErrorLabel?: string;\n  /**\n   *  Max size exceeded error message.\n   */\n  maxSizeExceededErrorLabel?: string;\n  /**\n   *  Forbidden error message.\n   */\n  forbiddenExtensionErrorLabel?: string;\n  /**\n   *  Duplicated error message.\n   */\n  duplicatedFileErrorLabel?: string;\n  /**\n   *  Initial default files.\n   */\n  files?: File[];\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below button uploader.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlights the button uploader with some error indication.\n   */\n  hasError?: BooleanProp;\n}\n\nconst DragAndDropUploader: FC<DragAndDropUploaderProps> = ({\n  ref = null,\n  label,\n  dragAndDropLabel,\n  inputLabel,\n  selectedFilesLabel,\n  hideLabel,\n\n  required = true,\n\n  extensionsInstructions,\n  separatorLabel,\n\n  removeFileButtonLabel,\n  replaceFileButtonLabel,\n\n  accept,\n  maxSize = Number.MAX_SAFE_INTEGER,\n  maxCount = Number.MAX_SAFE_INTEGER,\n\n  maxCountExceededErrorLabel = '',\n  maxSizeExceededErrorLabel = '',\n  forbiddenExtensionErrorLabel = '',\n  duplicatedFileErrorLabel = '',\n\n  multiple,\n  disabled,\n  onChange,\n\n  files: defaultFiles,\n\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n\n  ...props\n}) => {\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = disabled ? false : required;\n\n  const innerButtonRef = useRef<HTMLButtonElement>(null);\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n  useImperativeHandle(ref, () => innerInputRef.current as HTMLInputElement);\n\n  const dragAreaRef = useRef<HTMLDivElement | null>(null);\n\n  const [labelText, setLabelText] = useState(inputLabel);\n  const [isDraggingOver, setIsDraggingOver] = useState(false);\n\n  const [errorMessages, setErrorMessages] = useState([] as string[]);\n\n  const updateErrors = (errors: FileUploadError | null) => {\n    if (!errors) {\n      setErrorMessages([]);\n      return;\n    }\n\n    const parsedErrors: string[] = [];\n    if (errors.maxCountExceeded) {\n      parsedErrors.push(maxCountExceededErrorLabel);\n    }\n\n    errors.duplicatedFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${duplicatedFileErrorLabel}`);\n    });\n\n    errors.sizeExceededFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${maxSizeExceededErrorLabel}`);\n    });\n\n    errors.extensionForbiddenFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${forbiddenExtensionErrorLabel}`);\n    });\n\n    setErrorMessages(parsedErrors);\n  };\n\n  const handleOnChangeFiles = (files: File[], errors: FileUploadError | null) => {\n    if (files.length > 0) {\n      setLabelText(`${files.length} ${selectedFilesLabel}`);\n    } else {\n      setLabelText(inputLabel);\n    }\n\n    if (innerInputRef.current) {\n      const list = new DataTransfer();\n\n      files.forEach((f) => {\n        list.items.add(f);\n      });\n\n      innerInputRef.current.files = list.files;\n\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n\n    updateErrors(errors);\n  };\n\n  const { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles } = useFileUpload(\n    maxCount,\n    maxSize,\n    accept ? accept.split(',') : [],\n    !!multiple,\n    handleOnChangeFiles,\n    defaultFiles\n  );\n\n  const canUpload = useMemo(() => {\n    if (multiple) {\n      return !disabled && files.length < maxCount;\n    }\n\n    return !disabled && files.length === 0;\n  }, [disabled, multiple, files]);\n\n  const handleFileReplace = (newFileToReplace: File) => {\n    onReplaceFile(newFileToReplace);\n  };\n\n  const handleFileRemove = (fileToRemove: File) => {\n    onRemoveFile(fileToRemove);\n  };\n\n  useEffect(() => {\n    const handlePaste = (e: Event) => {\n      if (!canUpload) {\n        return;\n      }\n\n      if (innerButtonRef.current && innerButtonRef.current === document.activeElement) {\n        const { clipboardData } = e as ClipboardEvent;\n        if (clipboardData && clipboardData.files.length > 0) {\n          const clipboardFiles = Array.from(clipboardData.files) ?? [];\n          onPasteFiles(clipboardFiles);\n        }\n      }\n    };\n\n    window.addEventListener('paste', handlePaste);\n\n    return () => {\n      window.removeEventListener('paste', handlePaste);\n    };\n  }, []);\n\n  const handleDragOver = (evt: DragEvent) => {\n    if (!canUpload) {\n      return;\n    }\n\n    evt.preventDefault();\n    evt.stopPropagation();\n\n    setIsDraggingOver(true);\n\n    if (evt.dataTransfer) {\n      evt.dataTransfer.dropEffect = 'copy';\n    }\n  };\n\n  const handleDragLeave = () => {\n    setIsDraggingOver(false);\n  };\n\n  const handleDrop = (evt: DragEvent) => {\n    if (!canUpload) {\n      return;\n    }\n\n    evt.preventDefault();\n    evt.stopPropagation();\n\n    setIsDraggingOver(false);\n\n    if (evt.dataTransfer) {\n      const droppedFiles = Array.from(evt.dataTransfer.files ?? []);\n      onPasteFiles(droppedFiles);\n    }\n  };\n\n  useEffect(() => {\n    const handleClick = (evt: MouseEvent) => {\n      if (innerButtonRef.current && innerButtonRef.current !== evt.target && !innerButtonRef.current.contains(evt.target as HTMLElement)) {\n        onAddFiles();\n      }\n    };\n\n    if (dragAreaRef.current) {\n      dragAreaRef.current.addEventListener('click', handleClick);\n      dragAreaRef.current.addEventListener('dragover', handleDragOver);\n      dragAreaRef.current.addEventListener('dragleave', handleDragLeave);\n      dragAreaRef.current.addEventListener('drop', handleDrop);\n    }\n\n    return () => {\n      if (dragAreaRef.current) {\n        dragAreaRef.current.removeEventListener('click', handleClick);\n        dragAreaRef.current.removeEventListener('dragover', handleDragOver);\n        dragAreaRef.current.removeEventListener('dragleave', handleDragLeave);\n        dragAreaRef.current.removeEventListener('drop', handleDrop);\n      }\n    };\n  }, []);\n\n  const containerClassNames = classNames(\n    'agora-drag-and-drop-file-uploader',\n    { 'cannot-upload': !canUpload },\n    { hasError: errorMessages.length > 0 || stringToBoolean(hasError) },\n    props.className\n  );\n\n  const dragAndDropClassNames = classNames('drag-and-drop-area', { 'drag-over': isDraggingOver });\n\n  return (\n    <div className={containerClassNames}>\n      {label && (\n        <div className=\"drag-and-drop-label-wrapper\">\n          <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"drag-and-drop-label\">\n            {label}\n          </label>\n        </div>\n      )}\n      <div className=\"drag-and-drop-input-wrapper\">\n        <input ref={innerInputRef} type=\"file\" style={{ display: 'none' }} required={isRequired} />\n\n        <div ref={dragAreaRef} className={dragAndDropClassNames}>\n          <Icon className=\"download-icon\" name=\"agora-line-download\" aria-hidden />\n\n          {(dragAndDropLabel || extensionsInstructions) && (\n            <div className=\"instructions\">\n              {dragAndDropLabel && <div className=\"drag-and-drop-label\">{dragAndDropLabel}</div>}\n              {extensionsInstructions && <div className=\"extension-instructions\">{extensionsInstructions}</div>}\n            </div>\n          )}\n\n          {separatorLabel && <div className=\"separator-label\">{separatorLabel}</div>}\n\n          <Button\n            id={propsClone.id}\n            ref={innerButtonRef}\n            fullWidth\n            iconOnly={stringToBoolean(hideLabel)}\n            hasIcon\n            trailingIcon=\"agora-line-upload\"\n            trailingIconHover=\"agora-solid-upload\"\n            variant={'neutral'}\n            disabled={!canUpload}\n            onClick={onAddFiles}\n            aria-describedby={\n              (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText\n                ? `drag-and-drop-${propsClone.id}-feedback`\n                : undefined\n            }\n          >\n            {labelText}\n          </Button>\n\n          {errorMessages.length > 0 && (\n            <div className=\"errors-container\">\n              {errorMessages.map((message, index) => {\n                const errorKey = `error-message-${generatedId}-${index}`;\n                return <Feedback key={errorKey} feedbackState={'danger'} feedbackText={message} />;\n              })}\n            </div>\n          )}\n        </div>\n\n        <FileList\n          files={files}\n          onFileReplace={handleFileReplace}\n          onFileRemove={handleFileRemove}\n          removeFileButtonLabel={removeFileButtonLabel}\n          replaceFileButtonLabel={replaceFileButtonLabel}\n        />\n\n        {/* Feedback */}\n        {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n          <Feedback\n            id={`drag-and-drop-uploader-${propsClone.id}-feedback`}\n            feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n            feedbackText={feedbackText}\n          />\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport { DragAndDropUploader };\n"],"names":["AgoraTailwindConfig","addComponents","addBase","theme","extractColorVars","colorObj","colorGroup","vars","colorKey","value","newVars","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","newClass","module","iconList","lazy","allIcons","c","isBundledIcon","name","iconsCache","loadIcon","cachedIcon","lazyComponent","Icon","dimensions","onIconLoad","onIconError","props","_a","onLoad","onError","React","LazyComponent","fullProps","Suspense","IconItem","state","IconSet","ref","className","children","Children","child","isValidElement","childState","childProps","createSyntheticEvent","target","eventType","event","isDefaultPrevented","isPropagationStopped","preventDefault","stopPropagation","debounce","func","timeout","timer","args","useDebounceHook","useRef","setArgs","useState","useEffect","getDateString","d","dayString","monthString","yearString","normalizeText","text","stringToBoolean","useExpandedRef","innerRef","data","deps","externalRef","useImperativeHandle","_","safeData","asyncTrigger","useWindowSize","fallback","size","setSize","updateSize","useBreakpointScreenValues","xsScreen","mdScreen","xlScreen","Accordion","hasIcon","leadingIcon","leadingIconHover","darkMode","headingTitle","Component","defaultExpanded","expandedFromProps","onExpanded","onCollapsed","onChange","ariaLabel","generatedId","useId","isControlled","hasDefaultValue","internalExpandedValue","setInternalExpandedValue","activeState","setActiveState","width","isMobile","expanded","eventToTrigger","setEventToTrigger","expand","silentExpand","collapse","silentCollapse","toggle","silentToggle","expandedEvt","collapsedEvt","changeEvt","AccordionClassName","AccordionBodyClassName","AccordionIconClassName","onClickHandler","onKeyDownHandler","evt","onKeyUpHandler","onMouseDownHandler","onMouseUpHandler","onMouseLeaveHandler","onMouseEnterHandler","AccordionGroup","generatedAccordionGroupId","accordionsRefMap","useMemo","updateRefMap","id","acc","renderAccordions","index","newRef","createRef","_b","AccordionGroupClassName","Anchor","appearance","variant","fullWidth","iconOnly","trailingIcon","trailingIconHover","inline","anchorClassName","handleClick","isTouchDevice","handleMouseEnter","handleMouseLeave","handleMouseDown","handleMouseUp","onBlur","TOOLTIP_CHANGE_EVENT_NAME","Tooltip","hasTitle","position","alignment","title","description","top","setTop","left","setLeft","setWidth","height","setHeight","setDimensions","useCallback","rect","propsClone","TooltipContainerClassName","TooltipClassName","visibility","setVisibility","showTooltip","hideTooltip","handleEscapeKey","handleTooltipMouseLeave","handleTooltipChange","customEventArgs","parsedChildren","cloneElement","relatedElement","cb","topPositioning","bottomPositioning","leftPositioning","rightPositioning","tooltipPosition","TooltipContent","memoPortal","createPortal","Button","innerButtonRef","buttonClassName","_c","_d","shouldTriggerClick","InteractiveAvatar","onActivate","alt","ariaHasPopup","ariaExpanded","ariaCurrent","role","tabIndex","NonInteractiveAvatar","Avatar","avatarType","srcPath","hasBadge","information","badgePosition","tooltipAlignment","interactive","containerClasses","memoContent","avatarClasses","badgeClasses","InternalDropdownContext","createContext","useInternalDropdownContext","useContext","InternalDropdownFilterSection","debounceTimeout","dropdownContext","applyFilter","hide","next","currentFilter","setCurrentFilter","debouncedApplyFilter","onInputChange","resetFilter","inputRef","onKeyDownCaptureHandler","onMouseDownCaptureHandler","InternalNoResults","label","OptionComponent","type","icon","InternalDropdownOption","disabled","selected","filtered","iconPosition","onRangeSelection","sectionOptionId","parsedIconName","iconName","setIconName","selectOption","options","last","first","prev","optionWrapperClasses","select","option","opt","handleRangeSelectionAndSelect","isShiftClick","code","onMouseDownCapture","clickHandler","applySolidIcon","lastIconName","applyLineIcon","InternalDropdownSection","hideLabel","lastSelectedOption","setLastSelectedOption","optionsRefMap","sectionNameRef","sectionClassNames","handleRangeSelection","currentOptionId","sectionOptions","lastIndex","currentIndex","startIndex","endIndex","shouldSelect","optionClassNames","optionHeight","sectionNameHeight","labelVisible","InternalDropdownSelectAllSection","isAllDisabled","isAllSelected","selectAll","onKeydown","handler","dropdownAllOptionClassNames","InternalDropdown","selectAllLabel","searchPlaceholder","searchAriaLabel","searchable","optionsVisible","noSearchResults","context","activeFilter","sections","filterRef","maxHeightStyleProp","setMaxHeightStyleProp","getFilterSectionHeight","elem","val","getSelectAllSectionHeight","getVisibleSectionNamesHeight","visibleSections","heightCount","sectionName","getVisibleOptionsHeight","visibleOptions","visibleOptionsKeys","optionId","getListboxBorderWidths","computedStyle","borderTopWidth","borderBottomWidth","containedOptions","maxHeight","dropdownClasses","hasOptions","hasSectionsWithResults","allSectionResultsDisabled","visibleResults","sectionWithResults","s","section","useDropdownState","internalDropdownRef","hideSectionNames","onSearchChange","onShow","onHide","setSections","setOptions","parsedSectionProps","parsedOptionProps","sec","setActiveFilter","newFilter","lastFilter","lastOptions","newOptions","childrenVal","notFound","results","focusElem","inputFilter","opts","domOptions","idx","current","show","firstEffect","triggerOnChange","selectedOptions","o","isMultiSelection","isProvidedOption","isAllSectionOptionsSelected","availableOptions","hasOptionsUnselected","selectSectionOptions","allOptionsSelected","isInSectionProvided","hasSectionOptionsToInteract","hasOptionsNotDisabled","Dropdown","dropdownState","firstCall","sectionChild","optionChild","DropdownSection","DropdownOption","handleWithAvailableSpace","containerDropdownRef","containerRef","distanceFromLeft","result","VisibleCountAvatarGroup","avatarCount","visibleCount","visibleCountAriaLabel","countValue","avatarCountList","avatar","dropdownRef","buttonRef","isDropdownVisible","setIsDropdownVisible","handleKeydown","avatarKey","AvatarGroup","avatarGroupClasses","totalVisibleAvatars","renderAvatarListItem","BackToTop","tooltipVariant","hasTooltipTitle","tooltipTitle","tooltipDescription","backToTopClassName","goToTop","BreadcrumbDesktop","items","BreadcrumbClassName","iconClassName","link","BreadcrumbMobile","sectionTitle","isExpanded","setIsExpanded","listRef","closeMenuClickHandler","handleTabKey","linkList","liParentNode","setKeyboardKeydownBehavior","firstLink","expandMenu","Breadcrumb","baseClasses","desktopBreadcrumbClassnames","mobileBreadcrumbClassnames","ButtonGroup","orientation","childrenButtons","ret","buttonGroupClasses","Pill","circular","pillClassName","useBlockedLink","parentCardRef","anchorRef","blockedLink","activateLink","onClickCaptureHandler","anchorElement","parentCardElem","CardArticle","hasPill","pill","mainAnchor","image","Heading","subtitle","cardArticleRef","cardArticleAnchorRef","onlyAnchor","headingPlacement","anchorPlacement","mainAnchorClone","buildText","anchorProps","isAnchor","isHeading","cardClassNames","anchorContainerClassNames","CardCollection","cardCollectionRef","cardCollectionAnchorRef","CardCollectionClass","CardEmphasize","mainButton","cardEmphasizeClasseNames","iconProps","buttonProps","LinkWrapper","anchorContainerClassName","CardError","backLink","statusCodeMessage","CardLinksClasses","BookmarkIcon","newProps","CardAccordion","CardExpandable","cardTitle","cardSubtitle","showBookmarkIcon","accordionHeadingLevel","accordionHeadingTitle","CardExpandableClasses","CardFrame","cardFrameRef","cardFrameAnchorRef","cardFrameClassNames","cardFrameContainerClass","CardFullImage","cardFullImageClassName","CardHeroHelper","helpTopics","CardHeroHelperClasses","block","CardHeroIndex","cardIndex","CardHeroSitemap","anchors","highlightedLink","arrayLink","CardHeroSitemapClasses","InnerHighlightCard","links","CardHighlight","highlightAreaPosition","cardPosition","cardSize","cardHighlightClassName","isTablet","cardInfoRef","cardContentRef","spaceBetweenElements","marginTop","heightLessDefaultValue","CardHighlightNewsletter","cardHighlightNewsletterClassName","CardHighlightSingle","actionButton","CardHighLightClasses","cardLinksStylesMap","CardLinks","category","description2","date","topics","titleLink","cardLinksRef","backgroundColor","textColor","borderColor","cardLinksClasses","shouldRenderLinks","anchorKey","topic","Item","List","listStyle","startNumber","ComponentType","mappedLIElements","stringOrReactNode","CardNoResults","hasAnchor","valueAnchor","anchorLeadingIcon","anchorLeadingIconHover","anchorTrailingIcon","anchorTrailingIconHover","itemList","anchorHref","hasList","anchorTarget","extraDescription","cardNoResultsClasses","mainContentClasses","hasAnyAnchorIcon","item","CardSingle","cardSingleRef","cardSingleAnchorRef","CardSingleClasses","CardTopic","statusLabel","status","variantMemo","cardTopicRef","cardTopicAnchorRef","cardTopicClasseNames","cardStatusClasseNames","cardActionStylesMap","CardAction","isCardHorizontal","button","titleColor","hasBorder","isBorderWhite","_e","buttonVariant","_f","buttonDarkMode","_g","iconColor","_h","cardActionContainerClassNames","cardActionClassNames","iconLogoClassNames","titleClassNames","buttonClassNames","Feedback","feedbackState","feedbackText","feedbackWrapperClasses","feedbackIconWrapperClasses","feedbackTextClasses","feedbackStateIconsMap","Checkbox","hasError","required","hasFeedback","hasFeedbackText","currentChecked","setCurrentChecked","isRequired","handleCheckboxKeyDownCapture","handleCheckboxClick","handleChange","inputWrapper","checked","CheckboxGroup","legend","hidden","fieldsetProps","innerOnChange","mappedCheckbox","Dialog","visible","fullScreen","dismissOnBackdropClick","dismissOnEscape","onClickedOutside","onEscape","isVisible","setIsVisible","innerDialogRef","handleKeyDown","focusableElements","a","b","firstElement","lastElement","handleClickOutside","autoFocusIndex","e","containerClassNames","Drawer","ariaLabelledby","open","setOpen","dialogRef","drawerClassNames","handleClose","fn","handleOpen","handleOnEscape","RatingButtons","likeButton","dislikeButton","pressedButton","setPressedButton","handleToggleButton","buttonType","createButton","ratingButtonClasses","ratingButtonWrapperClasses","parsedLikeButton","parsedDislikeButton","RatingIcons","readOnly","iconElements","startWrapperRef","selectedIndex","setSelectedIndex","hoverIndex","setHoverIndex","onkeyDownHandler","handleFocusIcon","dataValue","focusedIcon","ratingIconClasses","iconReactElement","iconValue","isHovered","isSelected","clonedIcon","iconKey","tabIndexValue","ratingButtons","message","showMessage","setShowMessage","feedbackClasses","parsedRatingButtons","FooterBrandBadge","brandImage","badgeImage","FooterCaptionPartners","caption","partnersLogos","partnersLogosAriaLabel","_i","partner","FooterSocialUsefulCopyright","socialsLink","usefulLinks","copyright","socialsLinkAriaLabel","usefulLinksAriaLabel","social","MainFooter","FederatedFooterCard","FederatedFooter","card","PublicFooterContacts","contacts","contactsOnly","hasCardLinks","contactsClassName","contact","PublicFooterHighlightCard","cardClassName","cardHelpClassName","setCardLinkVW","vw","PublicFooterHighlightCardLinks","cardLinks","PublicFooterHighlight","footerHighlightClassName","cardFooterClassName","PublicFooterMainPlusCardLinks","PublicFooter","GlossaryLetters","letters","NavElementClass","GlossaryContainerClass","letter","isDisabled","letterClassName","href","HeaderDataContext","useHeaderDataContext","Area","Areas","GeneralBar","hasVisibleAreasProps","generalBarReactElement","areasReactElement","areaReactElements","getParseAreasAriaLabel","getParsedOnAreaChange","getParsedAvailableAreaProps","areas","p","getParsedActiveAreaProps","AuthenticatedFooterAction","AuthenticatedHeader","Authenticated","AuthenticatedBody","AuthenticatedBodyLink","AuthenticatedFooter","getParsedAuthenticatedProps","authenticatedReactElement","getParsedAuthenticatedHeaderProps","authenticatedHeaderReactElement","getParsedAuthenticatedBodyLinkProps","authenticatedBodyReactElement","getParsedAuthenticatedFooterActionProps","authenticatedFooterReactElement","Brand","Institutional","Logo","getParsedInstitutionalPhrase","brandReactElement","institutionalElement","getParsedLogo","logoElement","getParsedGeneralBarAriaLabel","Language","Languages","getLanguagesProps","hasLanguagesProps","getParsedLanguagesAriaLabel","languagesReactElement","getParsedOnLanguageChange","getParsedAvailableLanguageProps","languageReactElements","getParsedCheckedLanguageProps","lang","NavigationBar","NavigationLink","NavigationRoot","getParsedNavigationBarProps","navigationBarReactElement","getParsedNavigationBarId","countParsedNavigationItems","getParsedNavigationItems","getParsedModalMenuLabel","getParsedModalAriaLabel","getParsedModalCloseLabel","getParsedResponsiveMenuLabel","getParsedResponsiveMenuAriaLabel","getParsedResponsiveMenuBackToRootLabel","CustomSearch","DefaultSearch","Search","SearchInputContainer","SearchRelatedLink","SearchRelatedLinks","SearchRelatedLinksTitle","SearchTitle","Equalizer","InputSearchBar","hasVoiceActionButton","voiceActionAltText","searchActionAltText","isVoiceActive","onVoiceActivate","onSearchActivate","searchButtonRef","voiceButtonRef","currentTarget","setCurrentTarget","handleChangeEvent","onVoiceButtonClick","onSearchButtonClick","inputWrapperClassNames","labelSectionClasses","MIN_SEARCH_LENGTH","hasSearchProps","getSearchButtonLabel","searchPropsElement","hasDefaultSearchProps","defaultSearchPropsElement","getParsedDefaultSearchTitle","defaultSearchTitleElem","getParsedDefaultSearchInputBar","defaultSearchInputSearchBarElement","inputSearchBarElement","getParsedCustomSearchInputBar","getParsedDefaultSearchRelatedLinksTitle","defaultSearchRelatedLinksElem","defaultSearchRelatedLinksTitleElem","getParsedDefaultSearchRelatedLinks","hasCustomSearchProps","customSearchPropsElement","getParsedCustomSearchProps","customSearchProps","Unauthenticated","UnauthenticatedLink","getParsedUnauthenticatedProps","unAuthenticatedReactElement","getParsedUnauthenticatedLinks","unauthenticatedProps","useHeaderDataController","maxNavigationItems","getGeneralBarAriaLabel","getInstitutionalPhrase","getLogoImage","hasVisibleAreas","getAreasAriaLabel","getAreas","getActiveArea","onAreaChange","area","hasLanguages","getLanguagesAriaLabel","onLanguageChange","getCheckedLanguage","getLanguages","getAuthenticated","getAuthenticatedHeader","getAuthenticatedBodyLinks","getAuthenticatedFooterActions","getUnauthenticated","getUnauthenticatedLinks","hasSearch","getSearchLabel","hasDefaultSearch","getDefaultSearchTitle","getDefaultSearchInputBar","getCustomSearchInputBar","getDefaultSearchRelatedLinksTitle","getDefaultSearchRelatedLinks","hasCustomSearch","getCustomSearch","countNavigationItems","getNavigationId","getResponsiveMenuLabel","getResponsiveMenuAriaLabel","getResponsiveMenuBackToRootLabel","getModalMenuLabel","getModalAriaLabel","getModalCloseLabel","getNavigationItems","MenuTypeEnum","useHeaderExternalController","headerMenuContext","focusActiveArea","menuRef","activeAreaBtn","setActiveArea","areaValue","btn","focusLanguages","openLanguages","focusSearch","openSearch","focusUnauthenticated","openUnauthenticated","focusAuthenticated","openAuthenticated","focusBurgerMenu","openBurgerMenu","focusModalMenu","openModalMenu","focusNavigationMenuOption","k","openNavigationMenuOption","closeAll","HeaderMenuContext","useHeaderMenuContext","useScrolling","scrolling","setScrolling","scrollingTimerRef","evaluateScrollingValue","listener","useHeaderMenuController","menuRefMap","expandedMenu","setExpandedMenu","openedSubmenu","setOpenedSubmenu","focusController","CustomHeaderLink","dataAutoFocus","linkClassNames","handleMouseUpOrLeave","elemClassNames","InternalAuthenticatedDrawerBody","bodyLinkProps","InternalAuthenticatedDrawerFooter","footerActions","action","InternalAuthenticatedDrawerHeader","headerProps","InternalAuthenticatedDrawer","authenticatedProps","drawerAriaLabel","PanelMenu","isDrawerPanel","iconsCollapsed","iconsExpanded","isDesktop","panelMenuId","headerContext","parentHeaderRef","panelContentMaxHeight","setPanelContentMaxHeight","buttonChildComponent","linkWrapperChildComponent","layoutChildComponent","hasButton","hasLinkWrapper","hasPanel","innerPanelRef","linkWrapperRef","drawerButtonRef","panelContentRef","drawerRef","removeOverflow","handleButtonClick","panelClassNames","panelButtonClassNames","panelLinkWrapperClassNames","panelDrawerButtonClassNames","panelContentClassNames","calcMaxHeight","headerParentElem","headerHeight","panelMaxHeight","mobileNavHeight","onResize","onKeyDown","onClick","containerElement","memoLeadingIcon","memoLeadingIconHover","memoTrailingIcon","memoTrailingIconHover","RelatedNavigationLink","InternalNavigationBurgerPanel","linksAriaLabel","relatedLinksAriaLabel","backLabel","isOpened","setIsOpened","highlightedLinks","burgerMenuItem","burgerPanelRef","close","burgerRef","handleClickBack","handleClickButton","navigationBurgerLinksLayoutClassNames","InternalNavigationBurgerLayout","headerDataContext","currentArea","otherAreas","menubarRef","focusIndex","setFocusIndex","availableMenuItems","nextIndex","nextElem","anchor","handleAreaClick","InternalNavigationBurger","navigationId","menuLabel","menuAriaLabel","InternalInstitutional","InternalArea","active","areasClassNames","InternalAreas","visibleAreas","handleKeyDownCapture","availableAreas","activeIndex","el","InternalAuthenticated","InternalLanguage","InternalLanguagesLayout","languagesRef","InternalLanguages","checkedLanguage","buttonChildren","InternalCustomSearchLayout","content","InternalSearchLayout","searchTitle","defaultInputSearchBarProps","customInputSearchBarProps","relatedLinksTitle","relatedLinks","linkProps","InternalSearch","hideLabels","InternalUnauthenticatedLayout","l","InternalUnauthenticated","unauthenticatedButtonProps","isSingleAuth","panelChildren","panelIconProps","getIconOnlyValue","InternalGeneralBar","generalBarClassNames","InternalLogo","logoClassNames","InternalNavigationLinksLayout","navigationLinksLayoutClassName","InternalNavigationList","list","activeAreaSelector","CustomModalContext","useCustomModalContext","ModalMenu","openLabel","closeLabel","modalAriaLabel","modalContext","modalContentChildComponent","focus","handleKeyUp","modalMenuClassNames","menuButtonClassNames","InternalModalContent","contentTitle","activeMenuItemLinks","activeMenuItemRelatedLinks","InternalModalNavbar","onActiveChange","activeMenuItem","setActiveMenuItem","itemClassNames","autoFocusProp","InternalNavigationModalLayout","setActiveIndex","handleActiveChange","newIndex","navigationModalLayoutClassNames","InternalNavigationModal","InternalNavigationBar","navigationBarClassNames","desktopInstitutionalClassNames","activeArea","tabAccessibleProps","InternalHeader","headerClassNames","generalBarBGClassNames","navigationBarBGClassNames","CustomModalDialog","CustomModalProvider","dialogChildren","setDialogChildren","dialogConfigs","setDialogConfigs","currentDialogChildren","configs","handleOnShow","handleOnHide","contextValue","Header","headerDataController","headerMenuController","screenWidth","handleResize","DatePickerStateContext","isSameDay","date1","date2","Direction","getClosestAvailableDay","startingDate","disabledDates","direction","availableDate","convertedDisabledDates","directionValue","isDayBeforeStartDate","startDate","parsedDate","parsedStartDate","isDayAfterEndDate","endDate","parsedEndDate","isStartDateOneMonthOrMore","isEndDateOneMonthOrMore","isStartDateOneYearOrMore","isEndDateOneYearOrMore","DEFAULT_MONTHS","DEFAULT_WEEK_DAYS","useDatePickerStateContext","ctx","months","weekDays","mapMonths","getAbbrWeekDays","wd","focusedMonth","focusedYear","moveFocusInDays","numberOfDays","focusedDate","newDate","isBeforeStartDate","isAfterEndDate","closestAvailableDay","moveFocusInMonths","numberOfMonths","moveFocusInYears","numberOfYears","isDateInSameMonthOfYear","isDayOnArray","datesArray","convertedDate","parseInputDate","parts","day","month","year","DialogBody","isCalendarActive","setIsCalendarActive","parseDateFromTarget","dateString","focusAndSelectTargetDate","targetDate","parsedTargetDate","parsedDateFromTarget","onKeydownHandler","shiftKey","onFocusHandler","onBlurHandler","buildDay","currentDay","weekNumber","dayNumber","isInCurrentMonth","isFocusedDate","isSelectedDate","isDisabledDate","isToday","stringDate","tdDayClasses","dayClasses","trTdKey","ariaLabelForDay","labels","dayLabel","buildWeek","firstDayOfMonth","dayOfWeek","memoGrid","trCount","trKey","focusDay","DialogFooter","todayDate","isTodayDisabled","onOkPressed","parsedFocusedDate","additionalTodayProps","additionalCancelProps","additionalOkProps","DialogHeader","isPreviousMonthButtonEnabled","setIsPreviousMonthButtonEnabled","isPreviousYearButtonEnabled","setIsPreviousYearButtonEnabled","isNextMonthButtonEnabled","setIsNextMonthButtonEnabled","isNextYearButtonEnabled","setIsNextYearButtonEnabled","DatePickerDropdown","onCancel","isDateDisabled","initialDate","initialized","setInitialized","selectedDate","setSelectedDate","setFocusedDate","disabledDatesState","setDisabledDatesState","cancel","managerMemo","wrapperClassNames","datePickerDropdownContainerRef","formatDayOrMonth","number","isLeapYear","parseDate","currentMonth","currentYear","newDay","DateText","dayInputPlaceholder","monthInputPlaceholder","yearInputPlaceholder","inputClassNames","validateDate","targetValue","dateParts","newChangeEvt","allowedKeys","InputDate","errorFeedbackText","calendarIconAriaLabel","previousYearAriaLabel","previousMonthAriaLabel","nextMonthAriaLabel","nextYearAriaLabel","monthsLabels","weekdaysLabels","focusedDayAriaLabel","selectedDayAriaLabel","todayDayAriaLabel","todayLabel","todayAriaLabel","cancelLabel","cancelAriaLabel","okLabel","okAriaLabel","defaultValue","innerInputRef","wrapperRef","currentValue","setCurrentValue","lastValueTriggered","trigger","setTrigger","overlayVisible","setOverlayVisible","showOverlay","hideOverlay","toggleOverlay","handleOnDismiss","handleInputDateKeydown","handleDatePickerCancel","keydownHandler","onOverlayChangeHandler","onInputDateChange","syntheticEvent","dropdownDatePickerLabels","inputAriaDescribedBy","EMAIL_REGEXP","InputEmailBar","onSendHandler","pattern","email","setEmail","isValidEmail","setIsValidEmail","onSendButtonClick","labelClasses","inputContainerClassNames","InputNumber","increaseButtonAltText","decreaseButtonAltText","min","max","inputWrapperRef","inputElem","setIsHovered","darkModeClass","inputClassBuilder","inputWrapperClasses","inputClasses","leadingIconWrapperClasses","handleStepUp","handleStepDown","handleMouseHoovering","isHover","InputPassword","togglePasswordAltIconText","showPassword","setShowPassword","hasValue","setHasValue","toggleAriaLabel","handleTogglePassword","FlagsList","PhoneCountryCodes","PhoneCountryISOs","InputPhone","defaultISO","defaultCode","searchInputAriaLabel","searchInputPlaceholder","searchNoResultsText","dropdownAriaLabel","acronymForDirectDialing","onCountryChange","initial","searchForProp","country","currentCountry","setCurrentCountry","onDropdownChange","selectedCountry","f","newCountry","handleInputKeydownCapture","handleInputChange","toggleVisibility","handleDropdownControlKeydown","handleDropdownControlClick","optionIndex","InputRange","currentVal","setCurrentVal","prevPropValue","innerRefs1","innerRefs2","values","handleRangeChange","firstValue","secondValue","currentBgVal","setCurrentBgVal","primaryColor","secondaryColor","percent","percent0","percent1","RangeStyle","RailClassName","InputSearch","getEnabledItemsCount","count","getSelectedData","newSelectedData","InputSelect","placeholder","pluralSelectedPlaceholder","pillLabel","allSelectedLabel","onSearchInputChange","controlWrapperRef","controlRef","selectedData","setSelectedData","resetSelection","mainWrapperClasses","controlClasses","selection","enabledItemsCount","stringOutputMemo","allItemsSelected","onClickLabel","onDropDownChange","toggleDropdown","onDropDownClickHandler","onDropdownControlKeyDownHandler","InputText","InputTextArea","showCharCounter","onChangeFromProps","valueFromProps","internalValue","setInternalValue","charCounterClasses","FULL_TIME_TEXT_REGEX","MIN_HOUR","MAX_HOUR","MIN_MINUTE","MAX_MINUTE","DEFAULT_PLACEHOLDER","timePeriod","startTime","formatHour","hour","numericValue","formatMinute","minute","formatFullTime","selectedHour","selectedMinute","selectedPeriod","parseFullTime","fullTimeText","period","match","isTimeTextValid","timeText","TimeInputContext","TimeInputContextProvider","initialValues","setSelectedHour","setSelectedMinute","setSelectedPeriod","selectedTime","setSelectedTime","providerValue","useTimeInputContext","TimeText","setInputTextValue","hourInputPlaceholder","minuteInputPlaceholder","periodInputPlaceholder","timeCtx","parsePlaceholder","input","hourPlaceholder","minutePlaceholder","periodPlaceholder","fullInputPlaceholder","validateInputTimeText","acceptPlaceholder","isValid","isHourWithPlaceholder","isMinuteWithPlaceholder","isPeriodWithPlaceholder","handleBlur","clickPos","handleFocus","handleSlot","periodValues","start","end","minValue","maxValue","updateSlot","slotStart","slotEnd","updateSlotValue","newValue","handleArrowUpDown","isArrowUp","handleNumberInput","parsedNewValue","isValueTwoDigit","isSecondDigitGreaterThanMaxValue","handlePeriodInput","isModifierKeyPressed","handleTab","selectionStart","nextElement","handleShiftTab","prevElement","handleTabNavigation","handleTimeSelection","selectionEnd","handleHourSlot","handleMinuteSlot","handlePeriodSlot","selectedText","hourInputRef","handleHourUp","prevValue","handleHourDown","handleMinuteUp","handleMinuteDown","handleHourInputChange","formattedHour","handleHourFocus","handleHourKeyDown","handleMinuteInputChange","formattedMinute","handleMinuteFocus","handleMinuteKeyDown","timeWithPeriodContainerClassName","onCancelPressed","selectedTimeText","TimePickerDropdown","hasTimepickerMessage","textCurrentValue","isReady","setIsReady","additionalTimepickerMessageProps","InputTime","clockIconAriaLabel","timepickerMessageLabel","timepickerMessageAriaLabel","handleTimePickerCancel","clickedOnInputElement","onInputTimeChange","dropdownTimePickerLabels","timeCtxInitialValues","LoaderDialog","loaderClass","LoaderDialogContext","useLoaderDialogContext","LoaderDialogProvider","dialogProps","setDialogProps","ariaLiveMessage","setAriaLiveMessage","showLoader","currentDialogProps","str","hideLoader","ModalContext","useModalContext","ModalDialog","configurations","ModalProvider","dialogConfig","setDialogConfig","config","PanelSwitcherDesktop","withIcon","buttonListRef","panelRef","activeButton","activateButton","buttonsHeaderData","buttonsBodyData","isPressed","setIsPressed","panelSwitcherWrapperClassName","panelSwitcherTabsListClassNames","selectedButton","focusTab","buttons","newState","isActive","pressingIcon","ModalContent","PanelSwitcherMobileInternal","modalCloseButtonLabel","buttonsRef","focusedButton","setFocusedButton","panelSwitcherMobileClassName","panelButtonListClassNames","openModalHandler","modalConfig","currentFocus","isFocusOnPanelButtons","prevBtn","currentButton","totalButtons","newPressedState","PanelSwitcherMobile","PanelSwitcherContainer","setActiveButton","setButtonsHeaderData","setButtonsBodyData","isMobileOrTablet","header","body","element","headerChild","bodyChild","TabBody","TabHeader","Tab","TabsDesktop","vertically","tabListRef","tabPanelRef","activeTab","activateTab","currentType","tabPanelClassName","tabsHeaderData","tabsBodyData","tabsClassName","tabListClassNames","desktopActiveTab","tabListItemClassNames","TabsMobile","isTabletOrMobile","Tabs","automaticActivation","onTabActivation","desktopTabListRef","mobileTabListRef","setActiveTab","focusedTab","setFocusedTab","setTabsHeaderData","setTabsBodyData","activateFocusedTab","navigationArrowRight","currentTabList","newFocusedTab","navigationArrowLeft","navigationArrowDown","navigationArrowUp","navigationHome","navigationEnd","handleTabListItemKeyDown","eventTargetTag","eventTargetParentRole","tabs","PanelSwitcher","panelButtons","panelSwitcherHeaders","panelSwitcherContent","switcherButtons","panelSwitcherClassName","PopupContext","usePopupContext","PopupDialog","popupContainerRef","popupHeaderRef","containerMaxHeight","setContainerMaxHeight","setMaxHeight","dialogClassNames","containerElem","headerElem","margins","containerHeight","PopupProvider","currentDialogConfigs","ProgressBar","hidePercentageValue","isFirst","isLast","isMiddle","progressPercentage","labelsClasses","percentageClasses","ProgressBarGroup","hidePercentageValues","sequential","progressBars","activeCurrent","foundCurrent","currentCount","firstNotCompletedIndex","sumMaxValues","renderProgressBars","isCurrent","isSingle","getProgressValue","progressValue","Fragment","RadioButton","QuizOption","isChildrenSelected","QuizOptionsClassName","QuizOptions","QuizItemSummary","QuizItemSummaryClassName","RadioButtonGroup","mappedRadioButtons","scribblesList","allScribbles","isBundledScribbles","scribblesCache","loadScribbles","cachedScribbles","lazyScribble","Scribbles","onScribblesLoad","onScribblesError","LazyScribble","SearchPage","pageNumber","SearchPaginationNumberOverlay","SearchPagination","totalPages","hidePreviousPageButton","hideNextPageButton","boundaryCount","siblingCount","nextPageAriaLabel","previousPageAriaLabel","activePage","setActivePage","navArrowsClasses","prevPage","pages","showAllPagesContent","page","page_index","paginationContent","leftSiblingIndex","rightSiblingIndex","leftRange","middleRange","rightRange","visiblePages","shouldShowLeftDots","shouldShowRightDots","openOnCurrentItem","sidebarRef","flat","agoraSidebar","currentTreeItem","initialPrevItem","elements","_k","_j","_l","_n","_m","SidebarItemNavigationMobile","sidebarMenuLabel","backButtonLabel","refDialog","backButtonHandler","openButtonHandler","treeItems","hasAriaCurrent","itemTree","sidebarNavigationMobileClassName","sidebarItemNavigationMobileMenuClassName","sidebarItemNavigationMobileBackButtonClassName","sidebarItemNavigationMobileDialogClassName","Sidebar","newSidebarItem","listSidebarItem","generateId","isMobileAndTablet","trailingFilter","setTrailingFilter","leadingFilter","setLeadingFilter","sidebarClassName","onBodyFocus","navigationHandler","loadHandler","filterHandler","checkLeading","checkTrailing","itemProps","foundedLeadingIcon","foundedTrailingIcon","t","j","setIconsExpandCollapsed","setInitialSidebarItem","sidebarItemChildren","toggleSidebarItem","sidebarItem","sidebarItemExpanded","toggleSidebarItemChildren","handlerSetGapPill","icons","valueToAdd","SidebarItemFilter","pillValue","pillAriaLabel","buttonItemRef","contentItemRef","gapPill","setGapPill","setAriaExpanded","buttonItemClassName","contentItemClassName","toggleItemContent","toggleItemExpand","onMouseClickHandler","newItem","childrenWrapper","getParentTreeItem","nodeContent","node","toggleParentItemExpand","parentNode","navigationSidebarItemHandler","sidebar","toggleExpandAllSiblingItems","contentParent","adsItem","navigationEnterSpace","getAllVisibleItems","allVisibleItems","navigationUp","prevItem","visibleItem","navigateAndFocusUntilCurrent","nextItem","navigationDown","navigationRight","navigationLeft","navigationTab","setFocusByFirstCharacter","char","ti","defaultPrintableCharacters","SidebarItemNavigation","newSidebarItemChildren","listInnerSidebarItem","listSidebarItemChildren","showIconHover","setShowIconHover","anchorItemRef","handleAnchorClick","handleOnKeyUp","isPrintableCharacter","handleRightArrow","handleLeftArrow","handleOnKeyDown","handleClickIcon","handleMouseEnterIcon","handleMouseLeaveIcon","isLinkedSidebarItem","getFinalFlat","childData","final","getFlatNotDirectAnchor","ariaOwns","getFlatSidebarItem","anchorIconWrapper","cloneAnchorElement","dataChildren","getFinal","insideLoopElements","getNotDirectAnchor","getSidebarItem","getSidebarItemChildren","agoraSidebarButtonItemClassName","SidebarItem","sidebarItemClassName","SkipNavigationMultiple","containerSkipNavRef","multipleLinks","skipOptionsRef","ariaExpand","setAriaExpand","allSkipMenuItems","currentIndexFocus","mi","handleSkipOptionControlKeyDownCapture","handleButtonSkipClick","handleButtonFocus","handleButtonBlur","handleButtonKeyUp","handleButtonControlKeyDownCapture","lvl","initLink","isLink","groupAnchors","recursiveLinks","level","getKeys","keyIndex","newLink","init","initLength","menuSkipNavigation","singleLink","buildAnchor","newSingleLink","SkipNavigationSingle","SkipNavigation","multiple","navigationClassName","InteractiveStatusCard","leadingIconName","NonInteractiveStatusCard","StatusCard","handleIcon","iconType","StepList","stepListClass","getInteractiveIconSet","getNonInteractiveIcon","Step","Stepper","Switch","reverse","handleCustomSwitchKeydown","handleCustomSwitchClick","switchWrapperClasses","markerClasses","switchLabelClasses","TableBody","TableCaption","TableCell","headerKey","headerLabel","TableFooter","TableHeader","DESCENDING_ICON_NAMES","ASCENDING_ICON_NAMES","TableHeaderCell","sortType","sortOrder","onSortChange","circularSortOrder","currentSortOrderIndex","order","sortIconName","ariaSortValue","applySort","nextSortOrder","handleKeyUpHeader","TableRow","TablePagination","itemsPerPageLabel","itemsPerPage","totalItems","availablePageSizes","currentPage","buttonDropdownAriaLabel","dropdownListAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","dropdownWrapperRef","onDropdownButtonClickHandler","onDropdownButtonKeydownHandler","onShowDropdownHandler","onHideDropDownHandler","onDropdownChangeHandler","handlePrevPage","handleNextPage","iconDefinition","ps","Table","mobileLayout","tabletLayout","desktopLayout","paginationProps","sortDescription","tableClassNames","Tag","iconHover","tagClassName","buttonStyleMemo","TimelineEvent","timelineEventClassNames","timelineLabelClassNames","TimelineEventVertical","altIcon","TimelineVertical","events","setEvents","groupedEvents","grouped","groupedEventsArray","group","groupIndex","keyGroup","groupClassNames","eventIndex","keyEvent","TimelineHorizontal","nextLabel","previousLabel","setIsMobile","maxVisibleEvents","activeEvent","setActiveEvent","setStartIndex","setEndIndex","eventChildren","handleClickEvent","getTimelineStepClasses","currentActiveEvent","handleNextButtonClick","newEvent","handlePreviousButtonClick","selectedContentEvent","visibleEvents","newStartIndex","newEndIndex","useLayoutEffect","renderTimelineActions","isPreviousButtonDisabled","isLastButtonDisabled","timelineClasses","isFirstVisibleEvent","isLastVisibleEvent","hasMoreEventsLeft","hasMoreEventsRight","eventClassNames","ToastContext","useToastContext","Toast","onDismiss","removeToast","getIconNameForType","selectedType","handleCloseClick","toastContainerClassnames","useToast","toasts","setToasts","toast","prevToasts","duration","ToastProvider","showToast","memoToast","visibleToastsCount","Toggle","checkedFromProps","defaultChecked","hasDefaultChecked","internalChecked","setInternalChecked","toggleButtonClassName","fakeEvent","ToggleGroup","toggleGroupClassName","parsedDefaultValue","parsedChildValue","isChecked","cv","newVals","v","newVal","FileList","files","removeFileButtonLabel","onFileRemove","replaceFileButtonLabel","onFileReplace","handleReplaceFile","fileToReplace","handleRemoveFile","fileToRemoved","getParsedSizeString","bytes","decimals","decimalCases","sizes","getAvailableFileActions","file","fileListClassNames","fileIndex","actions","actionBtnProps","actionIndex","actionKey","isFileExtensionAllowed","fileName","extensionWhitelist","lastPoint","fileExtension","isNotDuplicated","filename","getFileInput","extensionWhiteList","onChangeHandler","validateFiles","lastFiles","newFiles","maxCount","maxSize","replaceValidation","hasErrors","duplicatedFiles","sizeExceededFiles","extensionForbiddenFiles","maxCountExceeded","useFileUpload","maxFileCount","maxFileSize","defaultFiles","setFiles","lastErrors","getParsedMaxCount","errors","resetFiles","initialFiles","validationErrors","addFiles","filesToAdd","removeFile","prevFiles","replaceFile","replaceFileName","targetIndex","handleInputFileChangeOnAdd","selectedFiles","handleInputFileChangeOnReplace","ButtonUploader","inputLabel","selectedFilesLabel","extensionsInstructions","accept","maxCountExceededErrorLabel","maxSizeExceededErrorLabel","forbiddenExtensionErrorLabel","duplicatedFileErrorLabel","customId","labelText","setLabelText","errorMessages","setErrorMessages","updateErrors","parsedErrors","handleOnChangeFiles","onAddFiles","onRemoveFile","onReplaceFile","onPasteFiles","onReset","canUpload","handleFileReplace","newFileToReplace","handleFileRemove","fileToRemove","handlePaste","clipboardData","clipboardFiles","buttonContainerClassNames","errorKey","DragAndDropUploader","dragAndDropLabel","separatorLabel","dragAreaRef","isDraggingOver","setIsDraggingOver","handleDragOver","handleDragLeave","handleDrop","droppedFiles","dragAndDropClassNames"],"mappings":"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","x_google_ignoreList":[1]}