{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@glidejs/glide/dist/glide.js","helpers/clickDrag.ts","helpers/dateMaxValue.ts","helpers/individualUpload.ts","library/components/button/button.ts","library/components/contactForm/contactForm.ts","library/components/createPayment/createPayment.ts","library/components/ctaCards/ctaCards.ts","library/components/dashboard/dashboard.ts","library/components/dashboardContactCard/dashboardContactCard.ts","library/components/dashboardUnverified/dashboardUnverified.ts","library/components/featureWithMedia/featureWithMedia.ts","library/components/individualAuthentication/individualAuthentication.ts","node_modules/axios/lib/core/Axios.js","library/components/individualCountry/individualCountry.ts","node_modules/axios/lib/core/buildFullPath.js","library/components/individualForgotPassword/individualForgotPassword.ts","node_modules/axios/lib/core/createError.js","node_modules/axios/lib/core/dispatchRequest.js","node_modules/axios/lib/core/enhanceError.js","node_modules/axios/lib/core/transformData.js","node_modules/axios/lib/helpers/buildURL.js","node_modules/axios/lib/helpers/combineURLs.js","library/components/individualProfile/individualProfile.ts","node_modules/axios/lib/helpers/cookies.js","node_modules/axios/lib/helpers/isAbsoluteURL.js","bundle.js","node_modules/axios/lib/helpers/isAxiosError.js","node_modules/axios/lib/helpers/isURLSameOrigin.js","node_modules/axios/lib/helpers/parseHeaders.js","node_modules/axios/lib/utils.js","library/components/individualResetPassword/individualResetPassword.ts","library/components/individualSignInDetails/individualSignInDetails.ts","library/components/keyFacts/keyFacts.ts","library/components/loginComponent/loginComponent.ts","library/components/mediaCarousel/mediaCarousel.ts","library/components/menuMobile/mobileMenu.ts","library/components/menuMobilePlatform/menuMobilePlatform.ts","library/components/myAccount/myAccount.ts","library/components/navbar/navbar.ts","library/components/newPaymentContacts/newPaymentContacts.ts","library/components/newRecipient/newRecipient.ts","library/components/newsGrid/newsGrid.ts","library/components/newsListing/newsListing.ts","library/components/organisationDirectorManualEntry/organisationDirectorManualEntry.ts","library/components/organisationManualEntry/organisationManualEntry.ts","library/components/organisationMemberProfile/organisationMemberProfile.ts","library/components/organisationProfile/organisationProfile.ts","library/components/organisationProfileConfirm/organisationProfileConfirm.ts","library/components/organisationSignInDetails/organisationSignInDetails.ts","library/components/paymentsComponent/payments.ts","library/components/phoneModal/countries.json","library/components/phoneModal/phoneModal.ts","library/components/quote/quote.ts","library/components/registerAccountType/registerAccountType.ts","library/components/sendFunds/sendFunds.ts","library/components/teamGrid/teamGrid.ts","library/components/transferSummary/transferSummary.ts","node_modules/axios/index.js","node_modules/axios/lib/adapters/xhr.js","node_modules/axios/lib/axios.js","node_modules/axios/lib/cancel/Cancel.js","node_modules/axios/lib/cancel/CancelToken.js","node_modules/axios/lib/cancel/isCancel.js","node_modules/axios/lib/core/InterceptorManager.js","node_modules/axios/lib/core/mergeConfig.js","node_modules/axios/lib/core/settle.js","node_modules/axios/lib/defaults.js","node_modules/axios/lib/helpers/bind.js","node_modules/axios/lib/helpers/normalizeHeaderName.js","node_modules/axios/lib/helpers/spread.js","node_modules/axios/lib/helpers/validator.js","node_modules/axios/package.json","node_modules/process/browser.js"],"names":["f","exports","module","define","amd","window","global","self","this","Bundle","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Object","defineProperty","value","selector","scroll_speed","classOnEvent","startX","scrollLeft","slider","document","querySelector","isDown","addEventListener","clientX","offsetLeft","offsetWidth","preventDefault","classList","add","pageX","event","Math","abs","remove","walk","2","keyboard","today","Date","eighteenYearsAgo","setFullYear","getFullYear","getMonth","getDate","year","toISOString","split","3","individualUploadBackButtons","individualAuth_1","individualUploadSubmit_1","individualUploadButtons_1","individualCaptureButtons_1","individualUploadItems_1","individualUploadMains_1","previewContainers_1","previewImages_1","previewPdfs_1","previewFileNames_1","previewFileSizes_1","individualUploadAreas","invalidUploadStatuses_1","validUploadStatuses_1","individualUploadPreviewDeleteButton","fileValidations_1","uploadedFiles_1","validateFile_1","kbToMb_1","handleFile_1","renderPreview_1","showPdfPreview_1","showImgPreview_1","handleProgress_1","individualUploadActive","focus","querySelectorAll","getAttribute","file","extension","_a","name","pop","toLowerCase","includes","size","bytes","toFixed","isDropped","filePath","fileName","fullFileName","fileExtension","fileSize","files","dataTransfer","toUpperCase","substring","textContent","setAttribute","push","removeAttribute","target","console","error","index","droppedFile","file_1","reader","FileReader","onload","fileType","type","data","result","previewContainer","individualUploadMain","previewImage","previewPdf","startsWith","readAsDataURL","preview","main","src","fileInput","fileSize_1","progress","onprogress","lengthComputable","percent","loaded","style","width","forEach","button","individualUploadWrapper","height","area","parentElement","previousElementSibling","children","filter","obj","4","print","5","rotatingElement","contactForm","lastScrollTop","handleScroll","scrollPos","scrollY","rotation","translateZ","max","min","transform","direction","Glide","thresholdErrorExceed_1","thresholdErrorMin_1","minAmountParagraph_1","amountInput_1","currencySelect_1","currencySymbolElement_1","nextButton_1","payBankButton_1","backButton_1","transferSummariesRight_1","transferSummaryLeft_1","transferPurposeSelect_1","uid_1","createPaymentDetailsContainer_1","createPaymentError_1","createPayAmount_1","createPayRecievedAmount_1","paymentMethodRadios_1","bankPaymentMethod_1","paymentMethodRadio_1","receiveLabels_1","sendLabels_1","exchangeRateLabels_1","transferPurposeLabels_1","payValueLabels_1","transferFees_1","thresholdLabel_1","payoutCountryLabel_1","youreSendingLabel_1","paymentMethodLabels_1","tooltipIcon_1","tooltipText_1","receiveCurrencyName_1","db_1","feesDb_1","isLoading_1","sendCurrency_1","receiveCurrency_1","session_1","currentPayoutMethod_1","formatNumberWithCommas_1","closeOverlays_1","showTransferSummary_1","hideTransferSummary_1","resetErrors_1","initiateBankTransfer_1","handleThreshold_1","handleThresholdRecieve_1","validateTotalToPay_1","handleInvalidExchangeRate_1","handleValidExchangeRate_1","handleInvalidAmount_1","handleValidAmount_1","debouncedFunc_1","calculateSendAmount_1","formatNumberWithSymbol_1","calculateFees_1","calculateFeeRate_1","calculateFlatFee_1","updatePaymentMethodElements_1","updateLabels_1","updateExchangeRateLabels_1","updateTransferPurposeLabels_1","handleValueChange_1","populateDropdowns_1","updateMinAmount_1","isUserInput_1","updateSession_1","hideTooltip_1","func","wait","timeout","__awaiter","calculateForwardIndex","P","Promise","resolve","reject","fulfilled","step","generator","next","rejected","isStart","done","_index","calculateBackwardIndex","viewSize","then","apply","thisArg","_arguments","__generator","isEnd","body","y","_","label","sent","trys","ops","g","verb","throw","return","Symbol","iterator","v","op","isOffset","TypeError","move","steps","isBound","isType","normalizeForwardIndex","__importDefault","mod","__esModule","default","axios_1","createPayComponent","transferSummary","closeButtons","overlay","changeCurrencyButton","saveCurrencyButton","URLSearchParams","location","search","get","getElementById","Array","from","find","radio","undefined","ratesJson","dataset","feesJson","nextElementSibling","innerText","JSON","parse","ToCurrencies","currency","Name","replace","integerPart","decimalPart","innerWidth","scrollTo","top","behavior","anyContainsActive","some","div","contains","disabled","error_1","Html","_t","post","response","href","url","alert","mount","hookListeners_1","text","isNaN","Threshold","parseFloat","toString","originalRecieveAmountValue","recieveAmountThreshold","ExchangeRate","totalToPayValue","transferFeesValue","difference","MinAmount","placeholder","minValue","append","args","_i","arguments","clearTimeout","setTimeout","amount","exchangeRate","fixedPoints","symbol","currentAmount","feeRate","_b","FeeRate","Value","floor","flatFee","FlatFees","topParent","HasBankDetails","checked","parent","receiveAmount","sendAmount","tranferPurpose","exchangeText","originalSendAmountValue","fees","sendAmountWithoutFees","sendAmountValue","transferPurpose","originalSendValue","recieveAmount","selectedIndex","toReceiveAmount","toSendAmount","innerHTML","option","createElement","appendChild","dispatchEvent","Event","senderAmount","Components","amountValue","Uid","parseInt","FromValue","FromCurrency","FromSymbol","ToCurrency","ToSymbol","ToValue","PayoutCountry","PayoutMethod","TransferPurpose","sessionStorage","setItem","stringify","key","customDataValue","options","axios","7","8","glide_1","ctaCardsCarousels","setRangeThumbWidth","input","setProperty","item","glide","perView","gap","rewind","bound","breakpoints","550","carouselRange","slides","go","on","currentIndex","rangeMax","arr","@glidejs/glide","9","dashboardRight_1","footer_1","contactsCarousel_1","dashboardCardsCarousel","dashboardCardsCarouselOverlays_1","contactsCarouselCards","contactsCarouselOverlays_1","contactsList","cardsList","contactCards","dashboardCards","contactCardsOverlays_1","dashboardCardsOverlays_1","setRangeThumbWidth_1","handleOverlay_1","unbindSwipeStart","Swipe","clickDrag_1","dashboard","dashboardPaymentCarousels","cardsCarousel","card","overlays","activeIndex","carousel","carouselRange_1","../../../helpers/clickDrag","10","removeClass","controls","recipientDetails","11","glide_2","dashboardUnverified","contactsCarousel","Autoplay","featureDownloadButton","anchor","mediaUrl","mediaFileName","download","click","removeChild","13","individualAuthRight_1","individualAuthLeft_1","individualAuthProofDocs_1","individualAuthUploadButtons_1","individualAuthUploadWrappers_1","resetIndividualAuthCards_1","resetIndividualAuthDocs_1","individualAuthRightScroll_1","showActiveIndividualProof_1","handleProofDocClick_1","individualUpload_1","settings","individualAuthProof","individualAuthDocumentTypes","individualAuthButton","elementTop","getBoundingClientRect","doc","individualUploadLeftActive","scrollHeight","Axios","request","14","config","countryItems_1","activeCountry_1","countryInput_1","loginCountry","closest","elm","activeCountryName","trim","15","forgotEmailInput_1","forgotEmailValidation_1","resetForgotPasswordValidation_1","buildFullPath","baseURL","requestedURL","isAbsoluteURL","createError","throwIfCancellationRequested","cancelToken","throwIfRequested","dispatchRequest","transformData","headers","utils","merge","reason","message","description","number","lineNumber","columnNumber","stack","_this","forgotPassForm","16","firstNameInput_1","middleNameInput_1","lastNameInput_1","dateInput_1","dateInputOverlay_1","firstNameValidation_1","middleNameValidation_1","lastNameValidation_1","dateValidation_1","countryValidation_1","isFormValid_1","nameValidation_1","handleDateClick_1","combineURLs","relativeURL","standardBrowserEnv","expires","path","domain","secure","nonStandardBrowserEnv","write","read","test","isAxiosError","payload","msie","resolveURL","urlParsingNode","protocol","isURLSameOrigin","dateMaxValue_1","individualProfileForm","dateInputIcon_1","showPicker","log","../../../helpers/dateMaxValue","17","18","passwordInput_1","passwordAgainInput_1","passwordAgainValidation_1","criteriaItems_1","showPasswordButtons","hidePasswordButtons","validations_1","formValidation_1","isSubmitClickedFirstTime_1","showValidationMessage_1","removeValidationMessage_1","validatePassword_1","isURLSearchParams","val","str","isStandardBrowserEnv","navigator","isArray","individualResetPassword","password","isPasswordValid","every","formValues","19","emailInput_1","signUpIndividualEmailValidation_1","regexPattern_1","conditions_1","extractConditions_1","validateEmail_1","resetCriteriaItems_1","signUpIndividual","email","recaptcha","regexPattern","match","RegExp","condition","map","String","validateRecaptcha","cond","20","keyFactCardTitles","numberRegex","title","targetCount","currentCount","increment","isCountUpComplete","isCountUpRunning","IntersectionObserver","entries","interval_1","isIntersecting","setInterval","clearInterval","observe","21","usernameInput_1","loginUsernameValidation_1","loginPasswordValidation_1","rotatingElementLogin","loginForm","handleLoginScroll","node","22","mediaCarousels","focusAt","480","23","mobileMenuIcon","mobileMenuIconContainer","mobileMenuButton","mobileMenuBackButton","getInTouchButton","mobileMenuOverlay","mobileMenuNested","html","overflow","className","24","mobileMenuOverlayPlatform_1","mobileMenuIconPlatform_1","mobileMenuButtonPlatform","htmlPlatform_1","cards","recipientDetailsOverlays_1","handleMenuClose_1","handleShowMenu_1","mobileMenuPlatform","mobileMenuIconContainerPlatform","25","type_1","validationMessages_1","overlays_1","passwordInputs_1","passwordOldInput_1","passwordOldValidation_1","passwordNewInput_1","passwordNewValidation_1","photoValidation_1","countryDropdown_1","countryOptions_1","currencyDropdown_1","currencyOptions_1","uploadInput","forms","notification_1","submitButtons_1","accountImages_1","successElm_1","failElm_1","currentCountryElm_1","currentCurrencyElm_1","resetValidations_1","validatePasswords_1","showPhotoValidations_1","validatePhoto_1","clearForm_1","updateButtons_1","updateMessages_1","updateUI_1","enableOptions_1","updateCurrency_1","updateCountry_1","updatePassword_1","updateProfilePicture_1","validateRegexPassword_1","showRegexPasswordValidationMessage_1","account","changeButtons","success","currentOptionIdx","color","exception_1","currencyName","exception_2","country","exception_3","currentPassword","newPassword","exception_4","FormData","img","URL","createObjectURL","validationMessage","isValid","msg","join","form","time","26","27","sendFundsButton","sendFunds","sendFundsMobileButton","htmlElement","documentElement","navbar","link","currentUrl","pathname","28","newPaymentContacts_1","newPaymentRecipients_1","newPayAmountText_1","recipientCards_1","carouselCards_1","loadMoreButton_1","loader_1","contactDetails_1","payload_1","initGlide_1","hookOverlays_1","clearData_1","refreshVariables_1","fetchContacts_1","timeoutId","__assign","assign","s","prototype","hasOwnProperty","newPaymentComponent","handleSearch","keyword","lastId","searchInput_1","searchInputMobile_1","newPaymentCarousel","hasReachedEnd","pageIncrement","carouselOverlays","paymentsChildren","itemsToKeep","child","insertAdjacentHTML","listElement","params","contactsCards","contactsOverlays","recipientOverlays","29","30","inputs_1","button_1","validStatus_1","invalidStatus_1","response_1","reset_1","handleValid_1","handleInvalid_1","showLoader_1","removeLoader_1","getCardPayload_1","fetchCard_1","checkInputs_1","newRecipientComponent","CardNumber","Cvv","cardNumberInputs","cvvInputs","codeInputs","slice","digits","clipboard","readText","clipboardText","digit","31","32","newsGridCarousels","33","prevButton_1","pageId_1","newsCards_1","pageNumber_1","pagesCount_1","fetchNews_1","updateCards_1","updatePagination_1","pageNumber","pageId","newsCards","pagesCount","grid","cardDiv","cardBottomDiv","imageUrl","image","alt","imageAlt","cardButtonText","readTime","arrowSpan","buttonText","34","35","36","resetValidation_1","inputs","director1Input_1","director2Input_1","director3Input_1","director1Validation_1","orgDirectorForm","37","nameInput_1","numberInput_1","address1Input_1","address2Input_1","address3Input_1","postcodeInput_1","numberValidation_1","address1Validation_1","postcodeValidation_1","orgManualEntryForm","38","orgProfileMemberForm","39","orgProfileCards_1","orgProfileForms_1","orgProfileButton_1","getCorrectInputs_1","setActiveCard_1","orgProfile","toggleSubmitButton","isBusinessNameValid","isBusinessNumberValid","activeForm","inputName","inputNumber","orgProfileNameValidation","orgProfileNumberValidation","submit","40","directors_1","continueButton_1","selectDirectors_1","selectedNumber_1","moreThanThree","selectedItems_1","selectedNames_1","director0_1","director1_1","director2_1","handleItems_1","handleDirectorClick_1","orgProfileConfirmComponent","cardsContainer_1","enableAll","pointerEvents","splice","indexOf","maxDirectors_1","scrollIntoView","block","41","signUpOrganisationEmailValidation_1","signUpOrganisation","42","paymentsList_1","paymentsRight_1","paymentDates_1","dateInput1_1","dateInput2_1","paymentDateButton_1","reachedEnd_1","lastTransactionId_1","increment_1","fetchingData_1","startDate_1","endDate_1","searchTerm_1","fetchData_1","generateHtml_1","renderList_1","formatAmount_1","formatAmountWithCurrency_1","renderListItem_1","renderPayment_1","renderPaymentItem_1","resetDb_1","hideLoader_1","formatDate_1","afterData_1","paymentsComponent","isScroll","lastTransactionId","startDate","endDate","searchTerm","reachedEnd","newData","transactions","bottomScrollPosition","container","formattedAmount","currencySymbol","status","dateValue","payAgainText","receiptText","paymentTitle","paymentCaption","transferPurposeTitle","sentText","exchangeRateText","totalPaidText","payoutCountryText","payoutMethodText","amanacardNumberText","paymentMethodText","referenceNumberText","lastUpdated","paymentInProgressStatusTitle","paymentInProgressStatusSubtitle","paymentPendingStatusTitle","paymentPendingStatusSubtitle","paymentRejectedStatusTitle","paymentRejectedStatusSubtitle","paymentDeliveredStatusTitle","paymentDeliveredStatusSubtitle","lastUpdatedText","payAgainUrl","receiptUrl","amount1","amount2","transferPurposeText","totalPaid","paymentMethod","referenceNumber","payoutCountry","payoutMethod","amanacardNumber","scrollTop","clientHeight","paymentsLoader","date","resetCards","resetDetails","paymentsBack","handleCardSelect","newPaymentDetails","newPaymentCards","paymentCards","oneMonthAgo","setMonth","setDate","43","Country Name","ISO2","ISO3","Top Level Domain","FIPS","ISO Numeric","GeoNameID","E164","Phone Code","Continent","Capital","Time Zone in Capital","Currency","Language Codes","Languages","Area KM2","Internet Hosts","Internet Users","Phones (Mobile)","Phones (Landline)","GDP","44","countries_json_1","phoneButtons","phoneModals","phoneLabels","readOnlyPhoneInput","phoneNumberHiddenInput","modal","resetButton","modalButton","oldButtonHtml","allowedCountry","currentNumber","successMessage","errorMessage","loadingMessage","uid","closeButton","isLoading","newNumber","phoneInputs","updateUI","countryName","iti","intlTelInput","utilsScript","autoHideDialCode","nationalMode","setCountry","getNumber","isValidNumber","./countries.json","45","46","video","alreadyActive","observer","entry","play","threshold","47","registerAccountTypeCards_1","registerAccountType","registerAccountTypeLink","firstCardLink","48","sendFundsCards","sendFundsNested_1","sendFundsMain_1","sendFundsBack","sendFundsCloseButton","sendFundsCloseButtonMobile","sendFundsShareButton_1","sendFundsBackButton_1","sendFundsButtons_1","mobileMenu_1","menuMobileIcon_1","htmlEl_1","closeSendFunds_1","openSendFunds_1","sendFundsOverlay","49","teamGridCarousels","teamGridComponents","teamGridCards","teamGridModals","modalIndex","showModal","setActiveModal","attachModalEventListeners","activeModal","modalPrevButton","modalNextButton","modalCloseButton","blur","close","removeEventListener","handlePrevEvent","handleNextEvent","handlePrev","modals","closeAllModals","newModal","handleNext","50","transferSummaryComponent","transferSummaryNextButton","currentPayoutMethod","51","factory","_typeof","constructor","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","enumerable","configurable","writable","_createClass","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","NewTarget","Super","_get","property","receiver","base","object","_superPropBase","desc","getOwnPropertyDescriptor","defaults","startAt","autoplay","hoverpause","swipeThreshold","dragThreshold","perSwipe","touchRatio","touchAngle","animationDuration","rewindDuration","animationTimingFunc","waitForTransition","throttle","peek","cloningRatio","classes","swipeable","dragging","ltr","rtl","slide","clone","active","arrow","nav","warn","concat","toInt","isString","isObject","isFunction","isUndefined","prop","definition","mergeOptions","EventsBus","events","hop","handler","context","emit","Glide$1","_c","_e","extensions","_name","components","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_d","now","getTime","later","previous","leading","throttled","at","remaining","trailing","cancel","MARGIN_TYPE","siblings","parentNode","firstChild","matched","nextSibling","nodeType","exist","HTMLElement","toArray","nodeList","TRACK_SELECTOR","EventsBinder","listeners","el","closure","capture","VALID_DIRECTIONS","FLIPED_MOVEMENTS",">","<","=","Rtl","modify","translate","Direction","is","mutator","Events","TRANSFORMERS","multiplier","Sizes","slideWidth","Gaps","Clones","grow","Peek","before","mutate","transformer","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","CONTROLS_SELECTOR","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","sortBreakpoints","points","keys","sort","reduce","k","COMPONENTS","root","track","collectSlides","wrapper","_r","Translate","translate3d","mozTransform","webkitTransform","getStartIndex","getTravelDistance","travelDistance","movement","after","startWidth","compose","duration","transition","callback","enable","offset","token","addClass","_v","setupSlides","setupWrapper","wrapperSize","reductor","len","marginLeft","marginRight","items","collect","_Glide$settings","cloneCount","round","reverse","prepend","cloneNode","_clone","unshift","_Components$Html","half","_i2","insertBefore","_i3","Resize","Binder","bind","unbind","off","destroy","Build","typeClass","activeClass","sibling","removeClasses","_Glide$settings$class","calculate","ceil","normalizeBackwardIndex","_m","substr","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","end","swipeDistance","swipeDeg","_Glide$settings2","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","_this2","_this3","changedTouches","Images","dragstart","Anchors","detached","prevented","detach","draggable","attach","Controls","_n","_arrowControls","addBindings","setActive","removeActive","setArrowState","resetArrowState","disableArrow","_len","lists","_key","list","element","_len2","_key2","removeBindings","elements","currentTarget","Keyboard","press","stop","Breakpoints","matchMedia","point","matches","_inherits","subClass","superClass","create","_super","globalThis","52","./lib/axios","53","settle","cookies","buildURL","parseHeaders","xsrfValue","requestData","requestHeaders","responseType","isFormData","XMLHttpRequest","fullPath","auth","username","unescape","encodeURIComponent","Authorization","btoa","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","method","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","onUploadProgress","upload","promise","abort","send","../core/buildFullPath","../core/createError","./../core/settle","./../helpers/buildURL","./../helpers/cookies","./../helpers/isURLSameOrigin","./../helpers/parseHeaders","./../utils","54","mergeConfig","createInstance","defaultConfig","extend","instanceConfig","Cancel","CancelToken","isCancel","all","promises","spread","./cancel/Cancel","./cancel/CancelToken","./cancel/isCancel","./core/Axios","./core/mergeConfig","./defaults","./helpers/bind","./helpers/isAxiosError","./helpers/spread","./utils","55","__CANCEL__","56","executor","resolvePromise","source","./Cancel","57","58","InterceptorManager","validator","validators","interceptors","requestInterceptorChain","assertOptions","silentJSONParsing","forcedJSONParsing","synchronousRequestInterceptors","responseInterceptorChain","interceptor","runWhen","synchronous","chain","shift","newConfig","onFulfilled","onRejected","getUri","../helpers/buildURL","../helpers/validator","./InterceptorManager","./dispatchRequest","./mergeConfig","59","handlers","use","eject","id","fn","h","60","../helpers/combineURLs","../helpers/isAbsoluteURL","61","enhanceError","./enhanceError","62","transformRequest","common","adapter","transformResponse","../cancel/isCancel","../defaults","./transformData","63","toJSON","64","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","axiosKeys","otherKeys","../utils","65","validateStatus","./createError","66","fns","./../defaults","67","process","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","stringifySafely","rawValue","parser","encoder","strictJSONParsing","maxContentLength","maxBodyLength","Accept","./adapters/http","./adapters/xhr","./core/enhanceError","./helpers/normalizeHeaderName","_process","68","69","encode","parts","serializedParams","isDate","hashmarkIndex","70","71","cookie","isNumber","toGMTString","decodeURIComponent","72","73","74","originURL","host","hash","hostname","port","charAt","userAgent","requestURL","parsed","75","normalizedName","76","ignoreDuplicateOf","line","77","78","pkg","deprecatedWarnings","thing","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","schema","allowUnknown","./../../package.json","79","l","ArrayBuffer","isView","pipe","product","assignValue","b","stripBOM","content","charCodeAt","80","_args","_from","_id","_inBundle","_integrity","_location","_phantomChildren","_requested","registry","raw","escapedName","rawSpec","saveSpec","fetchSpec","_requiredBy","_resolved","_spec","_where","author","browser","./lib/adapters/http.js","bugs","bundlesize","dependencies","follow-redirects","devDependencies","coveralls","es6-promise","grunt","grunt-banner","grunt-cli","grunt-contrib-clean","grunt-contrib-watch","grunt-eslint","grunt-karma","grunt-mocha-test","grunt-ts","grunt-webpack","istanbul-instrumenter-loader","jasmine-core","karma","karma-chrome-launcher","karma-firefox-launcher","karma-jasmine","karma-jasmine-ajax","karma-safari-launcher","karma-sauce-launcher","karma-sinon","karma-sourcemap-loader","karma-webpack","load-grunt-tasks","minimist","mocha","sinon","terser-webpack-plugin","typescript","url-search-params","webpack","webpack-dev-server","homepage","jsdelivr","keywords","license","repository","scripts","build","examples","fix","postversion","preversion","typings","unpkg","81","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","array","noop","nextTick","env","argv","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask"],"mappings":"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","file":"bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n }();\n\n var Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n }();\n\n function Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n }\n\n /**\n * Returns a current time.\n *\n * @return {Number}\n */\n function now() {\n return new Date().getTime();\n }\n\n /**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n var MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n };\n function Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n }\n\n /**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n function siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n }\n /**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\n function exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n }\n /**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\n function toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n }\n\n var TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n function Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n }\n\n function Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n }\n\n function Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n }\n\n function Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n }\n\n function Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n }\n\n function Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n }\n\n var EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n }();\n\n function Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n }\n\n var VALID_DIRECTIONS = ['ltr', 'rtl'];\n var FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n };\n function Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n }\n\n /**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n }\n\n /**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n }\n\n /**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n }\n\n /**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n }\n\n function Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n }\n\n function Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n }\n\n /**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n var supportsPassive$1 = supportsPassive;\n\n var START_EVENTS = ['touchstart', 'mousedown'];\n var MOVE_EVENTS = ['touchmove', 'mousemove'];\n var END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\n var MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n function Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n }\n\n function Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n }\n\n function Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n }\n\n var NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\n var CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n var PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\n var NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\n function Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n }\n\n function Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n }\n\n function Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n }\n\n /**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\n function sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n }\n\n function Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n }\n\n var COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n };\n\n var Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n }(Glide$1);\n\n return Glide;\n\n}));\n","const clickAndDrag = (selector: string, scroll_speed: number = 3, classOnEvent: string = 'dragging') => {\n const slider: HTMLElement = document.querySelector(selector);\n let isDown: boolean = false;\n let startX: number;\n let scrollLeft: number;\n\n slider.addEventListener('mousedown', (e: MouseEvent) => {\n // Do not trigger drag if mousedown outside slider\n if (e.clientX < slider.offsetLeft || e.clientX > slider.offsetLeft + slider.offsetWidth) {\n return; \n }\n e.preventDefault();\n isDown = true;\n slider.classList.add(classOnEvent);\n startX = e.pageX - slider.offsetLeft;\n scrollLeft = slider.scrollLeft;\n\n slider.addEventListener('click', (event) => {\n if (Math.abs(startX - event.pageX + slider.offsetLeft) > 3) {\n event.preventDefault();\n }\n });\n });\n\n slider.addEventListener('mouseleave', () => {\n isDown = false;\n slider.classList.remove(classOnEvent);\n });\n\n slider.addEventListener('mouseup', () => {\n isDown = false;\n slider.classList.remove(classOnEvent);\n });\n\n slider.addEventListener('mousemove', (e: MouseEvent) => {\n if (!isDown) return;\n\n e.preventDefault();\n\n const x = e.pageX - slider.offsetLeft;\n const walk = (x - startX) * scroll_speed; \n slider.scrollLeft = scrollLeft - walk;\n });\n};\n\nexport default clickAndDrag;","const setMaxDateValue = () => {\n const today: Date = new Date();\n\n const eighteenYearsAgo: Date = today;\n eighteenYearsAgo.setFullYear(today.getFullYear() - 18);\n\n const isLeapYear = (year: number): boolean => (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n\n if (today.getMonth() === 1 && today.getDate() === 29 && !isLeapYear(today.getFullYear())) {\n eighteenYearsAgo.setFullYear(eighteenYearsAgo.getFullYear() - 1);\n }\n\n const maxDate: string = eighteenYearsAgo.toISOString().split('T')[0];\n\n return maxDate;\n}\n\nexport default setMaxDateValue;\n","const renderUpload = () => {\n const individualUploadActive = document.querySelector('.individual-upload__wrapper--active') as HTMLDivElement;\n individualUploadActive?.focus();\n\n if (individualUploadActive) {\n const individualUploadBackButtons: NodeListOf =\n individualUploadActive.querySelectorAll('.individual-upload__back');\n const individualAuth: HTMLDivElement = document.querySelector('.individual-auth');\n const individualUploadSubmit: HTMLButtonElement =\n individualUploadActive.querySelector('.individual-upload__submit');\n const individualUploadButtons: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__upload-input',\n );\n const individualCaptureButtons: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__capture-input',\n );\n const individualUploadItems: NodeListOf =\n individualUploadActive.querySelectorAll('.individual-upload__item');\n const individualUploadMains: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__upload-main',\n );\n const previewContainers: NodeListOf =\n individualUploadActive.querySelectorAll('.individual-upload__preview');\n const previewImages: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__preview-image',\n );\n const previewPdfs: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__preview-pdf',\n );\n const previewFileNames: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__preview-name',\n );\n const previewFileSizes: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__preview-size',\n );\n const individualUploadAreas: NodeListOf =\n individualUploadActive.querySelectorAll('.individual-upload__upload');\n const invalidUploadStatuses: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__status-invalid',\n );\n const validUploadStatuses: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__status-valid',\n );\n const individualUploadPreviewDeleteButton: NodeListOf = individualUploadActive.querySelectorAll(\n '.individual-upload__preview-delete',\n );\n\n const fileValidations = individualUploadActive\n .querySelector('.individual-upload__upload-input')\n .getAttribute('accept');\n let uploadedFiles = [];\n\n const validateFile = (file: File): boolean => {\n const extension = file.name.split('.').pop()?.toLowerCase();\n const maxSize = 8000000;\n\n return extension && fileValidations.includes('.' + extension) && file.size <= maxSize;\n };\n\n const kbToMb = (bytes: number): string => {\n const megabytes = bytes / (1024 * 1024);\n return megabytes.toFixed(1) + ' MB';\n };\n\n const handleFile = (event, i: number, isDropped = false) => {\n if (isDropped) {\n const dt = event.dataTransfer;\n const files = dt.files;\n\n if (validateFile(files[0]) === true) {\n const filePath = files[0].name;\n let fileName = filePath.split('\\\\').pop().split('/').pop();\n let fullFileName = filePath.split('\\\\').pop().split('/').pop();\n const fileExtension = fileName.split('.').pop().toUpperCase();\n const fileSize = kbToMb(files[0].size);\n\n if (fileName.length > 12) {\n fileName = fileName.substring(0, 10) + '..' + '.' + fileExtension;\n }\n\n previewFileNames[i].textContent = fileName;\n previewFileNames[i].setAttribute('data-fileName', fullFileName);\n previewFileSizes[i].textContent = fileSize;\n\n uploadedFiles.push(files[0]);\n\n if (individualUploadItems.length === uploadedFiles.length) {\n individualUploadSubmit.removeAttribute('disabled');\n }\n\n return fileName;\n }\n\n return '';\n } else {\n const target = event.target as HTMLInputElement;\n\n if (validateFile(target.files[0]) === true) {\n const filePath = target.files[0].name;\n let fileName = filePath.split('\\\\').pop().split('/').pop();\n let fullFileName = filePath.split('\\\\').pop().split('/').pop();\n const fileExtension = fileName.split('.').pop().toUpperCase();\n const fileSize = kbToMb(target.files[0].size);\n\n if (fileName.length > 12) {\n fileName = fileName.substring(0, 10) + '..' + '.' + fileExtension;\n }\n\n if (previewFileNames[i] && previewFileSizes[i]) {\n previewFileNames[i].textContent = fileName;\n previewFileSizes[i].textContent = fileSize;\n previewFileNames[i].setAttribute('data-fileName', fullFileName);\n\n uploadedFiles.push(target.files[0]);\n\n if (individualUploadItems.length === uploadedFiles.length) {\n individualUploadSubmit.removeAttribute('disabled');\n }\n } else {\n console.error(`Element at index ${i} not found.`);\n }\n\n if (individualUploadItems.length === uploadedFiles.length) {\n individualUploadSubmit.removeAttribute('disabled');\n }\n\n return fileName;\n } else {\n return '';\n }\n }\n };\n\n const renderPreview = (event: Event, index: number, droppedFile = null) => {\n if (droppedFile) {\n if (validateFile(droppedFile) === true) {\n const reader = new FileReader();\n reader.onload = function (e: ProgressEvent) {\n const fileType = droppedFile.type;\n const data = e.target?.result;\n const previewContainer = previewContainers[index];\n const individualUploadMain = individualUploadMains[index];\n const previewImage = previewImages[index];\n const previewPdf = previewPdfs[index];\n\n if (previewContainer) {\n if (fileType.startsWith('image/')) {\n showImgPreview(data, index, previewContainer, individualUploadMain);\n } else if (fileType.startsWith('application/pdf')) {\n showPdfPreview(previewContainer, individualUploadMain, previewPdf, previewImage);\n }\n }\n };\n reader.readAsDataURL(droppedFile);\n }\n } else {\n const target = event.target as HTMLInputElement;\n const file: File | null = target.files ? target.files[0] : null;\n\n if (file && validateFile(file) === true) {\n const reader = new FileReader();\n reader.onload = function (e: ProgressEvent) {\n const fileType = file.type;\n const data = e.target?.result;\n const previewContainer = previewContainers[index];\n const individualUploadMain = individualUploadMains[index];\n const previewImage = previewImages[index];\n const previewPdf = previewPdfs[index];\n\n if (previewContainer) {\n if (fileType.startsWith('image/')) {\n showImgPreview(data, index, previewContainer, individualUploadMain);\n } else if (fileType.startsWith('application/pdf')) {\n showPdfPreview(previewContainer, individualUploadMain, previewPdf, previewImage);\n }\n }\n };\n reader.readAsDataURL(file);\n }\n }\n };\n\n const showPdfPreview = (preview: Element, main: Element, previewPdf: Element, previewImage: Element) => {\n previewPdf.classList.add('individual-upload__preview-pdf--active');\n previewImage.classList.remove('individual-upload__preview-image--active');\n main.classList.remove('individual-upload__upload-main--active');\n preview.classList.add('individual-upload__preview--active');\n };\n\n const showImgPreview = (data, i: number, preview: Element, main: Element) => {\n main.classList.remove('individual-upload__upload-main--active');\n preview.classList.add('individual-upload__preview--active');\n previewImages[i].src = data as string;\n previewImages[i].classList.add('individual-upload__preview-image--active');\n previewPdfs[i].classList.remove('individual-upload__preview-pdf--active');\n };\n\n const handleProgress = (fileInput: HTMLInputElement, index: number) => {\n const progressBars = individualUploadActive.querySelectorAll('.individual-upload__progress-inner');\n const progress = progressBars[index] as HTMLDivElement;\n\n const file = fileInput.files[0] || null;\n\n if (file && file.size) {\n const fileSize = file.size;\n let loaded = 0;\n\n const reader = new FileReader();\n\n reader.onprogress = function (event) {\n if (event.lengthComputable) {\n loaded = event.loaded;\n const percent = (loaded / fileSize) * 100;\n progress.style.width = percent + '%';\n\n if (percent === 100) {\n progress.classList.add('individual-upload__progress-inner--complete');\n invalidUploadStatuses[index].classList.remove('individual-upload__status-invalid--active');\n validUploadStatuses[index].classList.add('individual-upload__status-valid--active');\n }\n }\n };\n\n reader.readAsDataURL(file);\n\n return reader;\n } else {\n const percent = 100;\n progress.style.width = percent + '%';\n progress.classList.add('individual-upload__progress-inner--complete');\n invalidUploadStatuses[index].classList.remove('individual-upload__status-invalid--active');\n validUploadStatuses[index].classList.add('individual-upload__status-valid--active');\n\n return percent;\n }\n };\n\n const handleDragOver = (e: Event, area: HTMLDivElement) => {\n e.preventDefault();\n\n area.classList.add('individual-upload__upload--active');\n };\n\n const handleFileDrop = (e: Event, index: number, area: HTMLDivElement) => {\n e.preventDefault();\n const button = individualCaptureButtons[index] as HTMLInputElement;\n\n handleFile(e, index, true);\n handleProgress(button, index);\n area.classList.remove('individual-upload__upload--active');\n };\n\n const handleDragLeave = (e: Event, area: HTMLDivElement) => {\n e.preventDefault();\n\n area.classList.remove('individual-upload__upload--active');\n };\n\n const resetIndividualUpload = () => {\n const individualUploadWrapper: HTMLDivElement = document.querySelector(\n '.individual-upload__wrapper--active',\n );\n\n individualUploadWrapper?.classList.remove('individual-upload__wrapper--active');\n\n // reset individualAuth height\n individualAuth.style.height = 'auto';\n };\n\n individualUploadBackButtons.forEach((button: HTMLButtonElement) => {\n button.addEventListener('click', () => {\n resetIndividualUpload();\n });\n });\n\n individualUploadButtons.forEach((button: HTMLInputElement, i: number) => {\n button.addEventListener('change', (e) => {\n handleFile(e, i);\n renderPreview(e, i);\n handleProgress(button, i);\n });\n });\n\n individualCaptureButtons.forEach((button: HTMLInputElement, i: number) => {\n button.addEventListener('change', (e: Event) => {\n handleFile(e, i);\n\n const target = e.target as HTMLInputElement;\n\n if (validateFile(target.files[0]) === true) {\n handleProgress(button, i);\n renderPreview(e, i);\n }\n });\n });\n\n individualUploadAreas.forEach((area: HTMLDivElement, i: number) => {\n area.addEventListener('dragover', (e) => {\n handleDragOver(e, area);\n });\n\n area.addEventListener('dragleave', (e) => {\n handleDragLeave(e, area);\n });\n\n area.addEventListener('drop', (e) => {\n const file = e.dataTransfer.files[0];\n\n handleFileDrop(e, i, area);\n renderPreview(e, i, file);\n });\n });\n\n individualUploadPreviewDeleteButton.forEach((button: HTMLButtonElement, i: number) => {\n button.addEventListener('click', () => {\n const fileName = button.parentElement.previousElementSibling.children[0].getAttribute('data-fileName');\n const filteredArray = uploadedFiles.filter((obj) => obj.name !== fileName);\n\n uploadedFiles = filteredArray;\n\n previewContainers[i].classList.remove('individual-upload__preview--active');\n individualUploadMains[i].classList.add('individual-upload__upload-main--active');\n individualUploadButtons[i].value = '';\n individualUploadSubmit.setAttribute('disabled', 'true');\n });\n });\n }\n};\n\nexport default renderUpload;\n","const printButtons = document.querySelectorAll(\".button--print\") as NodeListOf;\n\nprintButtons.forEach((button) => {\n button.addEventListener(\"click\", () => {\n window.print();\n });\n});","document.addEventListener(\"DOMContentLoaded\", function () {\n let rotatingElement: HTMLElement | null = document.querySelector('.contact-form__image');\n let contactForm: HTMLElement | null = document.querySelector('.contact-form');\n let lastScrollTop = 0;\n\n if (rotatingElement && contactForm) {\n contactForm.addEventListener('mouseover', function () {\n window.addEventListener('scroll', handleScroll);\n });\n }\n\n function handleScroll() {\n let scrollPos = window.scrollY;\n let rotation = (scrollPos - lastScrollTop) / 2; \n let translateZ = Math.max(0, scrollPos / 30); \n\n rotation = Math.min(Math.max(rotation, -20), 10);\n\n rotatingElement!.style.transform = `rotateY(${rotation}deg) rotateX(${rotation}deg) translateZ(${translateZ}px)`;\n lastScrollTop = scrollPos;\n }\n});","/* eslint-disable */\nimport axios from \"axios\";\nimport { BankTransferResponse, CreatePaymentSession, FromCurrencyDto, PayoutMethod, ToCurrencyDto, TransferFeesDto } from \"./createPayment.types\";\n\nconst createPayComponent = document.querySelector(\".create-pay__wrapper\") as HTMLDivElement;\nconst transferSummary = document.querySelector(\".transfer-summary__wrapper\") as HTMLDivElement;\n\nconst closeButtons = document.querySelector(\".change-currency__close\") as HTMLDivElement;\nconst overlay = document.querySelector(\".change-currency__overlay\") as HTMLDivElement;\nconst changeCurrencyButton = document.querySelector(\".create-pay__change-currency\") as HTMLDivElement;\nconst saveCurrencyButton = document.querySelector(\".create-pay__currencies-save\") as HTMLDivElement;\n\nif (createPayComponent && transferSummary) {\n // HTML Elements\n const thresholdErrorExceed = createPayComponent.querySelector(\".create-pay__error-exceeded\") as HTMLParagraphElement;\n const thresholdErrorMin = createPayComponent.querySelector(\".create-pay__error-min\") as HTMLParagraphElement;\n const minAmountParagraph = createPayComponent.querySelector(\".create-pay__min-amount\") as HTMLParagraphElement;\n const amountInput = createPayComponent.querySelector(\".create-pay__amount\") as HTMLInputElement;\n const currencySelect = createPayComponent.querySelector(\".create-pay__currencies\") as HTMLSelectElement;\n const currencySymbolElement = createPayComponent.querySelector(\".create-pay__currency-symbol\") as HTMLParagraphElement;\n const nextButton = createPayComponent.querySelector(\".create-pay__button\") as HTMLButtonElement;\n const payBankButton = document.querySelector(\".create-pay__button--bank\") as HTMLButtonElement;\n const backButton = transferSummary.querySelector(\".transfer-summary__back\") as HTMLButtonElement;\n const transferSummariesRight = transferSummary.querySelectorAll(\".transfer-summary__right\") as NodeListOf;\n const transferSummaryLeft = transferSummary.querySelector(\".transfer-summary__left\") as HTMLDivElement;\n let transferPurposeSelect = createPayComponent.querySelector(\"#create-pay__dropdown-select\") as HTMLSelectElement;\n const uid = new URLSearchParams(window.location.search).get(\"_uid\");\n const createPaymentDetailsContainer = document.querySelector(\".create-pay__details\") as HTMLDivElement;\n const createPaymentError = document.querySelector(\".create-pay__error\") as HTMLDivElement;\n const createPayAmount = document.getElementById(\"create-pay__amount\") as HTMLInputElement;\n const createPayRecievedAmount = document.getElementById(\"create-pay__amount-received\") as HTMLInputElement;\n const paymentMethodRadios = document.querySelectorAll(\"input[name='payment-method']\") as NodeListOf;\n const bankPaymentMethod = Array.from(paymentMethodRadios).find((radio) => radio.value === \"BankTransfer\") as HTMLInputElement || undefined;\n let paymentMethodRadio = document.querySelector(\"input[name='payment-method']:checked\") as HTMLInputElement\n\n // Currency Conversions\n const { ratesJson } = createPayComponent.dataset;\n const { feesJson } = createPayComponent.dataset;\n\n // Labels\n const receiveLabels = document.querySelectorAll(\".values--receive-value\") as NodeListOf;\n const sendLabels = document.querySelectorAll(\".values--send-value\") as NodeListOf;\n const exchangeRateLabels = document.querySelectorAll(\".values--exchange-rate\") as NodeListOf;\n const transferPurposeLabels = document.querySelectorAll(\".values--transfer-purpose\") as NodeListOf;\n const payValueLabels = document.querySelectorAll(\".values--pay-value\") as NodeListOf;\n const transferFees = document.querySelectorAll(\".values--fees\") as NodeListOf;\n const thresholdLabel = document.querySelector(\"#thresholdAmount\") as HTMLSpanElement;\n const payoutCountryLabel = document.querySelector(\".values--payout-country\") as HTMLParagraphElement;\n const youreSendingLabel = document.querySelector(\".value--youre-sending-value\") as HTMLParagraphElement;\n const paymentMethodLabels = document.querySelectorAll(\".values--payment-method\") as NodeListOf;\n\n // ToolTip\n const tooltipIcon = document.querySelector('.create-pay__icon');\n const tooltipText = tooltipIcon.nextElementSibling as HTMLElement;\n\n let receiveCurrencyName = (createPayComponent.querySelector(\".payload--receive-currency-name\") as HTMLParagraphElement).innerText;\n let db: FromCurrencyDto[] = JSON.parse(ratesJson);\n let feesDb: TransferFeesDto = JSON.parse(feesJson);\n let isLoading: boolean = false;\n\n // Session variables\n let sendCurrency = db[0];\n let receiveCurrency: ToCurrencyDto = sendCurrency.ToCurrencies.find((currency) => currency.Name === receiveCurrencyName);\n let session: CreatePaymentSession;\n let currentPayoutMethod: PayoutMethod = paymentMethodRadio.value as PayoutMethod;\n\n const formatNumberWithCommas = (value: string) => {\n let number = value.replace(/[^\\d.]/g, '');\n\n let [integerPart, decimalPart] = number.split('.');\n\n integerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\n if (decimalPart !== undefined) {\n decimalPart = decimalPart.replace(/\\./g, '');\n return integerPart + '.' + decimalPart;\n }\n\n return integerPart;\n }\n\n const closeOverlays = () => {\n overlay.classList.remove(\"change-currency__overlay--active\")\n }\n\n const showTransferSummary = () => {\n createPayComponent.classList.remove(\"create-pay__wrapper--active\")\n transferSummary.classList.add(\"transfer-summary__wrapper--active\")\n\n if (window.innerWidth > 768) {\n document.querySelector(`.transfer-summary__right[data-type='${currentPayoutMethod}']`)?.classList.add(\"transfer-summary__right--active\");\n }\n\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n const hideTransferSummary = () => {\n const anyContainsActive = Array.from(transferSummariesRight).some((div) => div.classList.contains(\"transfer-summary__right--active\"));\n transferSummariesRight.forEach((div) => {\n div.classList.remove(\"transfer-summary__right--active\");\n });\n\n if (window.innerWidth < 768 && anyContainsActive) {\n transferSummaryLeft.classList.add(\"transfer-summary__left--active\")\n } else {\n transferSummary.classList.remove(\"transfer-summary__wrapper--active\")\n createPayComponent.classList.add(\"create-pay__wrapper--active\")\n }\n }\n\n const resetErrors = () => {\n nextButton.disabled = false;\n thresholdErrorExceed?.classList.remove(\"create-pay__error--active\")\n thresholdErrorMin?.classList.remove(\"create-pay__error--active\")\n }\n\n const saveCurrency = () => {\n let selectedOption = currencySelect.options[currencySelect.selectedIndex];\n\n let customDataValue = selectedOption.getAttribute('data-cur-symbol') as string;\n\n currencySymbolElement.textContent = customDataValue;\n\n resetErrors()\n handleValueChange();\n updateMinAmount();\n handleThreshold(amountInput);\n }\n \n const initiateBankTransfer = async () => {\n if (isLoading) return;\n\n isLoading = true;\n\n try {\n // For development:\n // const response = await axios.post(\"https://localhost:44323/api/payments/initiateBankTransfer\", session);\n \n const response = await axios.post(\"/api/payments/initiateBankTransfer\", session);\n const { data } = response;\n\n window.location.href = data.data.url;\n }\n catch (error) {\n alert(\"An error occurred while processing your request. Please try again later.\");\n console.error(error);\n }\n finally {\n isLoading = false;\n }\n }\n\n const hookListeners = () => {\n amountInput.addEventListener(\"input\", (e: Event) => {\n const target = e.target as HTMLInputElement;\n amountInput.value = formatNumberWithCommas(target.value)\n\n resetErrors()\n handleThreshold(target);\n handleValueChange();\n })\n\n createPayRecievedAmount.addEventListener(\"input\", (e: Event) => {\n const target = e.target as HTMLInputElement;\n createPayRecievedAmount.value = formatNumberWithCommas(target.value)\n\n resetErrors()\n handleThresholdRecieve(target);\n handleValueChange();\n })\n\n nextButton.addEventListener(\"click\", () => {\n showTransferSummary()\n })\n\n backButton.addEventListener(\"click\", () => {\n hideTransferSummary()\n })\n\n paymentMethodRadios.forEach((radio) => {\n radio.addEventListener(\"change\", (e: Event) => {\n const target = e.target as HTMLInputElement;\n currentPayoutMethod = target.value as PayoutMethod;\n updatePaymentMethodElements();\n handleValueChange();\n })\n })\n\n payBankButton?.addEventListener(\"click\", async () => {\n initiateBankTransfer();\n })\n\n transferPurposeSelect.addEventListener(\"change\", handleValueChange)\n }\n\n const handleThreshold = (target?: HTMLInputElement) => {\n if (thresholdLabel && !isNaN(sendCurrency.Threshold)) {\n const text = formatNumberWithSymbol(sendCurrency.Threshold, 2, sendCurrency.Symbol);\n\n thresholdLabel.innerText = sendCurrency.Symbol + formatNumberWithCommas(text)\n\n if (target) {\n const originalSendAmountValue = parseFloat(target.value.replace(/[^\\d.]/g, ''));\n\n if (originalSendAmountValue > sendCurrency.Threshold) {\n amountInput.value = formatNumberWithCommas(sendCurrency.Threshold.toString());\n thresholdErrorExceed?.classList.add(\"create-pay__error--active\")\n handleValueChange()\n }\n }\n }\n }\n\n const handleThresholdRecieve = (target?: HTMLInputElement) => {\n if (thresholdLabel && !isNaN(sendCurrency.Threshold)) {\n const text = formatNumberWithSymbol(sendCurrency.Threshold, 2, sendCurrency.Symbol);\n\n thresholdLabel.innerText = sendCurrency.Symbol + formatNumberWithCommas(text)\n\n if (target) {\n const originalRecieveAmountValue = parseFloat(target.value.replace(/[^\\d.]/g, ''));\n let recieveAmountThreshold = sendCurrency.Threshold * receiveCurrency.ExchangeRate;\n\n if (originalRecieveAmountValue > recieveAmountThreshold) {\n createPayRecievedAmount.value = formatNumberWithCommas(recieveAmountThreshold.toFixed(2));\n thresholdErrorExceed?.classList.add(\"create-pay__error--active\")\n handleValueChange()\n }\n }\n }\n }\n\n const validateTotalToPay = () => {\n let totalToPayValue = parseFloat(sendLabels[0].textContent.replace(/[^\\d.]/g, ''));\n let transferFeesValue = parseFloat(transferFees[0].textContent.replace(/[^\\d.]/g, ''));\n\n let difference = Math.abs(totalToPayValue - transferFeesValue);\n\n if (difference < sendCurrency.MinAmount) {\n nextButton.disabled = true;\n } else if (difference >= sendCurrency.MinAmount) {\n nextButton.disabled = false;\n }\n }\n\n const handleInvalidExchangeRate = () => {\n amountInput.value = \"\";\n createPaymentDetailsContainer.classList.add(\"create-pay__details--disabled\");\n createPaymentError.classList.add(\"create-pay__error--active\");\n amountInput.disabled = true;\n nextButton.disabled = true;\n transferPurposeSelect.disabled = true;\n\n updateLabels(\"N/A\", \"N/A\", \"N/A\", \"N/A\")\n }\n\n const handleValidExchangeRate = () => {\n amountInput.placeholder = \"\";\n createPaymentDetailsContainer.classList.remove(\"create-pay__details--disabled\");\n createPaymentError.classList.remove(\"create-pay__error--active\");\n amountInput.disabled = false;\n nextButton.disabled = false;\n transferPurposeSelect.disabled = false;\n\n updateLabels(\"\", \"\", \"\", \"\");\n }\n\n const handleInvalidAmount = () => {\n nextButton.disabled = true;\n updateLabels(\"\", \"\", transferPurposeSelect.value);\n }\n\n const handleValidAmount = () => {\n nextButton.disabled = false;\n\n const minValue: number = sendCurrency.MinAmount\n\n if (+amountInput.value < minValue) {\n nextButton.disabled = true;\n debouncedFunc(minValue)\n } else {\n updateSession();\n }\n }\n\n const debounce = (func: Function, wait: number) => {\n let timeout: NodeJS.Timeout;\n\n return function executedFunction(...args: any[]) {\n const later = () => {\n clearTimeout(timeout);\n func(...args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n };\n\n const debouncedFunc = debounce((min: number) => {\n if (+amountInput.value < min) {\n thresholdErrorMin.classList.add(\"create-pay__error--active\");\n }\n updateSession();\n }, 1000);\n\n\n const calculateSendAmount = (amount: number, exchangeRate: number, fixedPoints: number = 5, symbol?: string): string => {\n const sendAmount = amount * exchangeRate;\n\n return formatNumberWithSymbol(sendAmount, fixedPoints, symbol);\n }\n\n const formatNumberWithSymbol = (value: number, fixedPoints: number = 5, symbol?: string): string => {\n if (!symbol) return value.toFixed(fixedPoints);\n if (isNaN(value)) return \"\";\n\n return `${symbol}${value.toFixed(fixedPoints)}`;\n }\n\n const calculateFees = (currentAmount: number): number => {\n return calculateFeeRate(currentAmount) + calculateFlatFee();\n }\n\n const calculateFeeRate = (currentAmount: number): number => {\n const feeRate = feesDb?.[currentPayoutMethod]?.FeeRate?.Value;\n\n if (feeRate) {\n const fee = currentAmount * feeRate;\n const roundedFee = Math.floor(fee * 100) / 100;\n return roundedFee;\n }\n\n return 0;\n }\n\n const calculateFlatFee = (): number => {\n const flatFee = feesDb?.[currentPayoutMethod]?.FlatFees[sendCurrency.Name]?.Value;\n\n return flatFee ?? 0;\n }\n\n const updatePaymentMethodElements = () => {\n paymentMethodRadio = document.querySelector(\"input[name='payment-method']:checked\") as HTMLInputElement;\n\n if (bankPaymentMethod) {\n const topParent = bankPaymentMethod.parentElement?.parentElement as HTMLDivElement;\n\n if (!sendCurrency.HasBankDetails) {\n topParent?.classList.add(\"hidden-element\");\n \n // Tick the first radio button that is not BankTransfer\n // when the BankTransfer radio button is checked\n if (paymentMethodRadio?.value === \"BankTransfer\") {\n paymentMethodRadio = Array.from(paymentMethodRadios).find((radio) => radio.value !== \"BankTransfer\") as HTMLInputElement;\n paymentMethodRadio.checked = true;\n }\n } else {\n topParent?.classList.remove(\"hidden-element\");\n }\n\n currentPayoutMethod = paymentMethodRadio.value as PayoutMethod;\n }\n\n const parent = paymentMethodRadio?.parentElement as HTMLLabelElement || undefined;\n\n paymentMethodLabels.forEach((label) => label.textContent = parent.querySelector(\".create-pay__item-title\")?.textContent ?? \"\");\n }\n\n const updateLabels = (receiveAmount: string, sendAmount: string, tranferPurpose?: string, exchangeText?: string) => {\n updatePaymentMethodElements();\n let originalSendAmountValue = parseFloat(sendAmount.replace(/[^\\d.]/g, ''));\n paymentMethodRadio = document.querySelector(\"input[name='payment-method']:checked\") as HTMLInputElement;\n const fees = calculateFees(originalSendAmountValue);\n\n const sendAmountWithoutFees = formatNumberWithSymbol(originalSendAmountValue, 2, sendCurrency.Symbol);\n const sendAmountValue = originalSendAmountValue + fees;\n if (isNaN(sendAmountValue)) return;\n\n sendAmount = formatNumberWithSymbol(sendAmountValue, 2, sendCurrency.Symbol);\n\n receiveLabels.forEach((label) => label.textContent = receiveCurrency.Symbol + formatNumberWithCommas(receiveAmount));\n sendLabels.forEach((label) => label.textContent = sendCurrency.Symbol + formatNumberWithCommas(sendAmount));\n payValueLabels.forEach((label) => label.textContent = `Pay ${sendCurrency.Symbol + formatNumberWithCommas(sendAmount)}`);\n transferFees.forEach((label) => label.textContent = sendCurrency.Symbol + formatNumberWithCommas(fees.toFixed(2).toString()));\n\n if (tranferPurpose) transferPurposeLabels.forEach((label) => label.textContent = tranferPurpose);\n else updateTransferPurposeLabels();\n\n if (exchangeText) exchangeRateLabels.forEach((label) => label.textContent = exchangeText);\n else updateExchangeRateLabels();\n\n if (youreSendingLabel)\n youreSendingLabel.textContent = sendCurrency.Symbol + formatNumberWithCommas(sendAmountWithoutFees);\n\n }\n\n const updateExchangeRateLabels = () => {\n if (sendCurrency && receiveCurrency) {\n exchangeRateLabels.forEach((label) => {\n label.textContent = `${sendCurrency.Symbol} 1 = ${receiveCurrency.Symbol} ${receiveCurrency.ExchangeRate.toFixed(3)}`;\n })\n }\n }\n\n const updateTransferPurposeLabels = () => {\n transferPurposeLabels.forEach((label) => {\n label.textContent = transferPurposeSelect.value;\n })\n }\n\n const handleValueChange = () => {\n const originalSendValue = parseFloat(amountInput.value.replace(/[^\\d.]/g, ''));\n sendCurrency = db[currencySelect.selectedIndex];\n receiveCurrency = sendCurrency.ToCurrencies.find((currency) => currency.Name === receiveCurrencyName) as ToCurrencyDto;\n handleThreshold();\n const recieveAmount = parseFloat(createPayRecievedAmount.value.replace(/[^\\d.]/g, ''));\n\n if (!receiveCurrency) {\n handleInvalidExchangeRate();\n return;\n }\n handleValidExchangeRate();\n\n if (isNaN(originalSendValue)) {\n handleInvalidAmount();\n return;\n }\n\n handleValidAmount();\n transferPurposeSelect = createPayComponent.querySelector(\"#create-pay__dropdown-select\") as HTMLSelectElement;\n const toReceiveAmount = formatNumberWithSymbol(recieveAmount, 2, receiveCurrency.Symbol);\n const toSendAmount = calculateSendAmount(originalSendValue, (1), 2, sendCurrency.Symbol);\n const transferPurpose = transferPurposeSelect.value;\n const exchangeRate = `${sendCurrency.Symbol} 1 = ${receiveCurrency.Symbol} ${receiveCurrency.ExchangeRate.toFixed(3)}`;\n\n updateLabels(toReceiveAmount, toSendAmount, transferPurpose, exchangeRate);\n\n validateTotalToPay();\n }\n\n const populateDropdowns = () => {\n currencySelect.innerHTML = \"\";\n\n db.forEach((currency) => {\n let option = document.createElement(\"option\");\n option.value = currency.Name;\n option.textContent = currency.Name;\n option.setAttribute(\"data-cur-symbol\", currency.Symbol);\n option.classList.add(\"create-pay__currency\");\n currencySelect.appendChild(option);\n })\n\n currencySelect.selectedIndex = 0;\n currencySymbolElement.textContent = db[0].Symbol;\n }\n\n const updateMinAmount = () => {\n const amount = formatNumberWithSymbol(sendCurrency.MinAmount, 2, sendCurrency.Symbol);\n\n if (minAmountParagraph != null) {\n minAmountParagraph.textContent = sendCurrency.Symbol + formatNumberWithCommas(amount)\n }\n }\n\n // This bool is used in order to inhibit the chance of a infinite loop\n let isUserInput = true;\n\n const updateSenderInput = () => {\n const receivedAmountValue = parseFloat(createPayRecievedAmount.value.replace(/[^\\d.]/g, ''));\n const senderAmount = (receivedAmountValue / receiveCurrency.ExchangeRate).toFixed(2);\n createPayAmount.value = formatNumberWithCommas(senderAmount);\n createPayAmount.dispatchEvent(new Event('input'));\n };\n\n const updateRecievesInput = () => {\n const amountValue = parseFloat(createPayAmount.value.replace(/[^\\d.]/g, ''));\n const sendAmount = (amountValue * receiveCurrency.ExchangeRate).toFixed(2);\n createPayRecievedAmount.value = formatNumberWithCommas(sendAmount);\n createPayRecievedAmount.dispatchEvent(new Event('input'));\n };\n\n createPayAmount.addEventListener('input', () => {\n if (isUserInput) {\n isUserInput = false;\n updateRecievesInput();\n isUserInput = true;\n }\n });\n\n createPayRecievedAmount.addEventListener('input', () => {\n if (isUserInput) {\n isUserInput = false;\n updateSenderInput();\n isUserInput = true;\n }\n });\n\n const updateSession = () => {\n const amountValue = parseFloat(amountInput.value.replace(/[^\\d.]/g, ''));\n const sendAmount = amountValue * receiveCurrency.ExchangeRate;\n\n session = {\n Uid: parseInt(uid),\n ExchangeRate: receiveCurrency.ExchangeRate,\n FromValue: amountValue,\n FromCurrency: sendCurrency.Name,\n FromSymbol: sendCurrency.Symbol,\n ToCurrency: receiveCurrency.Name,\n ToSymbol: receiveCurrency.Symbol,\n ToValue: sendAmount,\n PayoutCountry: payoutCountryLabel?.textContent ?? \"\",\n PayoutMethod: currentPayoutMethod,\n TransferPurpose: transferPurposeSelect.value\n };\n\n sessionStorage.setItem(\"createPaymentSession\", JSON.stringify(session));\n dispatchSessionChangeEvent();\n\n function dispatchSessionChangeEvent() {\n const event = new Event('sessionChange');\n window.dispatchEvent(event);\n }\n }\n\n const showTooltip = function () {\n tooltipText.classList.add('create-pay__tooltip--active');\n }\n\n const hideTooltip = function () {\n tooltipText.classList.remove('create-pay__tooltip--active');\n }\n\n tooltipIcon.addEventListener('mouseover', showTooltip);\n tooltipIcon.addEventListener('mouseout', hideTooltip);\n tooltipIcon.addEventListener('click', function () {\n if (tooltipText.classList.contains('create-pay__tooltip--active')) {\n tooltipText.classList.remove('create-pay__tooltip--active');\n } else {\n tooltipText.classList.add('create-pay__tooltip--active');\n }\n });\n\n tooltipIcon.addEventListener('touchstart', function (e) {\n e.preventDefault();\n if (tooltipText.classList.contains('create-pay__tooltip--active')) {\n tooltipText.classList.remove('create-pay__tooltip--active');\n } else {\n tooltipText.classList.add('create-pay__tooltip--active');\n }\n });\n\n document.addEventListener('touchstart', function (e) {\n if (e.target !== tooltipIcon && e.target !== tooltipText) {\n hideTooltip();\n }\n })\n\n changeCurrencyButton.addEventListener(\"click\", () => {\n changeCurrencyButton.nextElementSibling.classList.add(\"change-currency__overlay--active\");\n })\n\n closeButtons.addEventListener(\"click\", () => {\n closeOverlays()\n })\n\n document.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeOverlays()\n }\n });\n\n overlay.addEventListener(\"click\", (e: Event) => {\n const target = e.target as HTMLDivElement;\n\n if (target.classList.contains(\"change-currency__overlay--active\"))\n closeOverlays();\n });\n\n saveCurrencyButton.addEventListener(\"click\", () => {\n saveCurrency();\n closeOverlays();\n });\n\n const init = () => {\n populateDropdowns();\n handleValueChange();\n hookListeners();\n handleThreshold();\n updateMinAmount();\n updatePaymentMethodElements();\n }\n\n init();\n}","import Glide from '@glidejs/glide'\n\nconst ctaCardsCarousels = document.querySelectorAll(\".cta-cards__carousel-inner\")\n\nconst setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = Array.from(arr).length\n let rangeMax = '0'\n \n rangeMax = (slidesLength - 1).toString()\n\n input.max = rangeMax\n\n setRangeThumbWidth(rangeMax, input)\n}\n\nconst setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 200 / +max\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n\n if(max === \"1\"){\n input.style.setProperty('--thumb-size', \"100px\");\n }\n}\n\nif(ctaCardsCarousels){\n\n const ctaCardsCarouselsArray = Array.from(ctaCardsCarousels) || []\n\n ctaCardsCarouselsArray.forEach(item => {\n var glide = new Glide(item, {\n type: 'slider',\n perView: 1.7,\n gap: 10,\n rewind: false,\n bound: true,\n breakpoints: {\n 550: {\n perView: 1.24,\n },\n }\n })\n \n glide.mount()\n \n const carouselRange = item.querySelector(\".cta-cards__carousel-range\") as HTMLInputElement\n const slides = item.querySelectorAll(\".cta-cards__card\")\n \n carouselRange.addEventListener(\"input\", e => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`)\n }, 500);\n })\n \n glide.on('move.after', () =>{\n const currentIndex = glide.index;\n carouselRange.value = currentIndex\n })\n \n setRangeMax(slides, carouselRange)\n })\n}","import Glide from '@glidejs/glide';\nimport clickAndDrag from '../../../helpers/clickDrag';\n\nconst dashboard = document.querySelector('.dashboard') as HTMLDivElement;\n\nif (dashboard) {\n const closeButtons: NodeListOf = dashboard.querySelectorAll('.recipient-detail__close');\n const dashboardRight = dashboard.querySelector(\".dashboard__right\") as HTMLDivElement;\n const footer = document.querySelector(\".footer\") as HTMLElement;\n\n const dashboardPaymentCarousels: NodeListOf =\n dashboard.querySelectorAll('.dashboard__carousel');\n const contactsCarousel = dashboard.querySelector('.dashboard__carousel-contacts') as HTMLDivElement;\n\n const cardsCarousel = dashboard.querySelector('.dashboard__carousel-cards') as HTMLDivElement;\n const dashboardCardsCarousel: NodeListOf = cardsCarousel.querySelectorAll('.dash-card');\n const dashboardCardsCarouselOverlays: NodeListOf =\n cardsCarousel.querySelectorAll('.recipient-detail__overlay');\n\n const contactsCarouselCards: NodeListOf =\n contactsCarousel.querySelectorAll('.dashboard-contact');\n const contactsCarouselOverlays: NodeListOf =\n contactsCarousel.querySelectorAll('.recipient-detail__overlay');\n\n const contactsList = dashboard.querySelector('.dashboard__contacts-list') as HTMLUListElement;\n const cardsList = dashboard.querySelector('.dashboard__cards') as HTMLDivElement;\n\n const contactCards: NodeListOf = contactsList.querySelectorAll('.dashboard-contact');\n const dashboardCards: NodeListOf = cardsList.querySelectorAll('.dash-card');\n\n const contactCardsOverlays: NodeListOf =\n contactsList.querySelectorAll('.recipient-detail__overlay');\n const dashboardCardsOverlays: NodeListOf =\n cardsList.querySelectorAll('.recipient-detail__overlay');\n\n const setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = arr.length as number;\n let rangeMax = '0' as string;\n\n rangeMax = (slidesLength - 1).toString();\n\n input.max = rangeMax;\n\n setRangeThumbWidth(rangeMax, input);\n };\n\n const setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + 'px');\n\n if (max === '1') {\n input.style.setProperty('--thumb-size', '47px');\n }\n };\n\n const handleOverlay = (card: Element, index: number, overlays: NodeListOf) => {\n let activeIndex = index;\n\n card.addEventListener('click', () => {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n footer.classList.add(\"hidden\")\n });\n\n card.addEventListener('keydown', (e) => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', (e) => {\n const targetElement = e.target as HTMLElement;\n\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n setTimeout(() => {\n dashboardRight.classList.remove(\"dashboard__right--hidden\");\n footer.classList.remove(\"hidden\")\n }, 200);\n }\n });\n }\n };\n\n closeButtons.forEach((button) => {\n button.addEventListener('click', () => {\n button.parentElement.parentElement.parentElement.parentElement.classList.remove(\n 'recipient-detail__overlay--active',\n );\n\n setTimeout(() => {\n dashboardRight.classList.remove(\"dashboard__right--hidden\");\n footer.classList.remove(\"hidden\")\n }, 200);\n });\n });\n\n dashboardPaymentCarousels.forEach((carousel: HTMLDivElement, i: number) => {\n if (i === 0) {\n var glide = new Glide(carousel, {\n type: 'slider',\n perView: 1,\n gap: 30,\n rewind: false,\n bound: false,\n });\n\n glide.mount();\n\n carousel.setAttribute(\"data-history-carousel\", \"true\")\n }\n\n if (i === 1) {\n var glide = new Glide(carousel, {\n type: 'slider',\n perView: 1.3,\n gap: 11,\n rewind: false,\n bound: true,\n });\n\n glide.mount();\n\n const carouselRange = dashboard.querySelector('.dashboard__range') as HTMLInputElement;\n const slides: NodeListOf = contactsCarousel.querySelectorAll('.dashboard-contact');\n\n carouselRange.addEventListener('input', () => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`);\n }, 500);\n });\n\n glide.on('move.after', () => {\n const currentIndex = glide.index as string;\n carouselRange.value = currentIndex;\n });\n\n setRangeMax(slides, carouselRange);\n }\n });\n\n dashboardCardsCarousel.forEach((card, index: number) => {\n handleOverlay(card, index, dashboardCardsCarouselOverlays);\n });\n\n contactsCarouselCards.forEach((card, index: number) => {\n handleOverlay(card, index, contactsCarouselOverlays);\n });\n\n contactCards.forEach((card, index: number) => {\n handleOverlay(card, index, contactCardsOverlays);\n });\n\n dashboardCards.forEach((card, index: number) => {\n handleOverlay(card, index, dashboardCardsOverlays);\n });\n\n clickAndDrag('.dashboard__links');\n}","import Glide from '@glidejs/glide';\n\nconst recipientDetails: NodeListOf = document.querySelectorAll(\".recipient-detail\");\n\nif (recipientDetails.length > 0) {\n const setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = arr.length;\n const rangeMax = (slidesLength - 2).toString();\n\n input.max = rangeMax;\n\n setRangeThumbWidth(rangeMax, input);\n };\n\n const setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"47px\");\n }\n };\n\n recipientDetails.forEach((item) => {\n const glide = new Glide(item, {\n type: 'slider',\n perView: 2.8,\n gap: 10,\n rewind: true,\n bound: true,\n });\n\n glide.mount();\n\n const carouselRange = item.querySelector(\".recipient-detail__carousel-range\") as HTMLInputElement;\n const slides: NodeListOf = item.querySelectorAll(\".recipient-detail__item\");\n\n carouselRange.addEventListener(\"input\", e => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`);\n }, 500);\n });\n\n glide.on('move.after', () => {\n const currentIndex = glide.index;\n carouselRange.value = currentIndex.toString();\n });\n\n setRangeMax(slides, carouselRange);\n });\n}\n","import Glide from '@glidejs/glide';\nimport clickAndDrag from '../../../helpers/clickDrag';\n\nconst dashboardUnverified = document.querySelector('.dashboard-unverified') as HTMLDivElement;\n\nif (dashboardUnverified) {\n const closeButtons: NodeListOf =\n dashboardUnverified.querySelectorAll('.recipient-detail__close');\n const contactsCarousel = dashboardUnverified.querySelector('.dashboard-unverified__carousel') as HTMLDivElement;\n const contactsList = dashboardUnverified.querySelector(\n '.dashboard-unverified__contacts-list',\n ) as HTMLUListElement;\n\n const handleOverlay = (card: Element, index: number, overlays: NodeListOf) => {\n let activeIndex = index;\n\n card.addEventListener('click', () => {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n });\n\n card.addEventListener('keydown', (e) => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', (e) => {\n const targetElement = e.target as HTMLElement;\n\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n }\n });\n }\n };\n\n closeButtons.forEach((button) => {\n button.addEventListener('click', () => {\n button.parentElement.parentElement.parentElement.parentElement.classList.remove(\n 'recipient-detail__overlay--active',\n );\n });\n });\n\n if (contactsCarousel) {\n const contactsCarouselCards: NodeListOf =\n contactsCarousel.querySelectorAll('.dashboard-contact');\n const contactsCarouselOverlays: NodeListOf =\n contactsCarousel.querySelectorAll('.recipient-detail__overlay');\n\n const setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = arr.length as number;\n let rangeMax = '0' as string;\n\n rangeMax = (slidesLength - 1).toString();\n\n input.max = rangeMax;\n\n setRangeThumbWidth(rangeMax, input);\n };\n\n const setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + 'px');\n\n if (max === '1') {\n input.style.setProperty('--thumb-size', '47px');\n }\n };\n\n contactsCarouselCards.forEach((card, index: number) => {\n handleOverlay(card, index, contactsCarouselOverlays);\n });\n\n const glide = new Glide(contactsCarousel, {\n type: 'slider',\n perView: 1.3,\n gap: 11,\n rewind: false,\n bound: true,\n });\n\n glide.mount();\n\n const carouselRange = dashboardUnverified.querySelector('.dashboard-unverified__range') as HTMLInputElement;\n const slides: NodeListOf = contactsCarousel.querySelectorAll('.dashboard-contact');\n\n carouselRange.addEventListener('input', () => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`);\n }, 500);\n });\n\n glide.on('move.after', () => {\n const currentIndex = glide.index as string;\n carouselRange.value = currentIndex;\n });\n\n setRangeMax(slides, carouselRange);\n }\n\n if (contactsList) {\n const contactCards: NodeListOf = contactsList.querySelectorAll('.dashboard-contact');\n const contactCardsOverlays: NodeListOf =\n contactsList.querySelectorAll('.recipient-detail__overlay');\n contactCards.forEach((card, index: number) => {\n handleOverlay(card, index, contactCardsOverlays);\n });\n }\n\n clickAndDrag('.dashboard-unverified__links');\n}\n","const featureDownloadButton = document.querySelector(\".feature-with-media__button\") as HTMLElement\n\nif (featureDownloadButton) {\n const featureDownloadMedia = (url: string, fileName: string) => {\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = fileName;\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n }\n\n const onDownloadButtonClick = () => {\n const mediaUrl = featureDownloadButton.getAttribute(\"data-url\")\n const mediaFileName = featureDownloadButton.getAttribute(\"data-label\");\n\n featureDownloadMedia(mediaUrl, mediaFileName);\n }\n\n featureDownloadButton.addEventListener('click', onDownloadButtonClick);\n}","import renderUpload from '../../../helpers/individualUpload';\n\nconst individualAuthProof: NodeListOf = document.querySelectorAll(\".individual-auth__proof\");\nconst individualAuthDocumentTypes: NodeListOf = document.querySelectorAll(\".document-type\");\n\nif(individualAuthProof.length > 0 && individualAuthDocumentTypes.length > 0){\n const individualAuth: HTMLDivElement = document.querySelector(\".individual-auth\");\n const individualAuthRight: HTMLDivElement = document.querySelector(\".individual-auth__right\");\n const individualAuthLeft: HTMLDivElement = document.querySelector(\".individual-auth__left\");\n const individualAuthButton: HTMLButtonElement = document.querySelector(\".individual-auth__button\");\n const individualAuthProofDocs: NodeListOf = document.querySelectorAll(\".individual-auth__proof-docs\");\n const individualAuthUploadButtons: NodeListOf = document.querySelectorAll(\".individual-auth__upload-button\");\n const individualAuthUploadWrappers: NodeListOf = document.querySelectorAll(\".individual-upload__wrapper\")\n\n if(window.innerWidth > 992) {\n individualAuthProof[0].classList.add(\"individual-auth__proof--active\")\n individualAuthDocumentTypes[0].classList.add(\"document-type--active\")\n }\n\n const resetIndividualAuthCards = () => {\n individualAuthDocumentTypes.forEach(card => {\n card.classList.remove(\"document-type--active\")\n })\n\n individualAuthProof.forEach(item => {\n item.classList.remove(\"individual-auth__proof--active\")\n })\n\n individualAuthRight.classList.remove(\"individual-auth__right--active\")\n individualAuthLeft.classList.remove(\"individual-auth__left--hidden\")\n }\n\n const resetIndividualAuthDocs = () => {\n individualAuthProofDocs.forEach(card => {\n card.classList.remove(\"individual-auth__proof-docs--active\")\n })\n }\n\n const individualAuthRightScroll = () => {\n const topOffset = 70; \n const elementTop = individualAuthRight.getBoundingClientRect().top + window.scrollY;\n const scrollPosition = elementTop - topOffset;\n\n window.scrollTo({ top: scrollPosition, behavior: 'smooth' });\n }\n\n const showActiveIndividualProof = (item: Element, index: number) => {\n resetIndividualAuthCards()\n \n item.classList.add(\"document-type--active\")\n individualAuthProof[index].classList.add(\"individual-auth__proof--active\")\n individualAuthRight.classList.add(\"individual-auth__right--active\")\n individualAuthLeft.classList.add(\"individual-auth__left--hidden\")\n\n if(window.innerWidth < 768) {\n individualAuthRightScroll()\n }\n }\n\n const handleProofDocClick = (doc: HTMLDivElement) => {\n let activeIndex = 0\n\n individualAuthDocumentTypes.forEach((doc: HTMLDivElement, i: number) => {\n if(doc.classList.contains(\"document-type--active\")){\n activeIndex = i\n }\n })\n\n individualAuthUploadButtons[activeIndex].removeAttribute(\"disabled\")\n\n resetIndividualAuthDocs()\n \n doc.classList.add(\"individual-auth__proof-docs--active\")\n\n individualAuthUploadButtons[activeIndex].addEventListener(\"click\", () => {\n individualAuthUploadWrappers.forEach(item => {\n item.classList.remove(\"individual-upload__wrapper--active\")\n })\n\n const individualAuthUploadWrapperActive = doc.nextElementSibling\n individualAuthUploadWrapperActive.classList.add(\"individual-upload__wrapper--active\")\n\n // Set individualAuth height same as activeUploadLeft\n const individualUploadLeftActive = document.querySelector(\".individual-upload__wrapper--active .individual-upload__left\") as HTMLDivElement | null;\n \n individualAuth.style.height = `${individualUploadLeftActive.scrollHeight}px`;\n\n renderUpload()\n\n const topOffset = 70; \n const upload: HTMLDivElement = document.querySelector(\".individual-upload__wrapper--active .individual-upload__left\");\n\n const elementTop = upload.getBoundingClientRect().top + window.scrollY;\n const scrollPosition = elementTop - topOffset;\n \n window.scrollTo({ top: scrollPosition, behavior: 'smooth' });\n })\n }\n\n individualAuthButton.addEventListener(\"click\", () => {\n resetIndividualAuthCards()\n })\n\n individualAuthDocumentTypes.forEach((card: Element, i: number) => {\n card.addEventListener(\"click\", () => {\n showActiveIndividualProof(card, i)\n })\n })\n\n individualAuthDocumentTypes.forEach((card: Element, i: number) => {\n card.addEventListener(\"keydown\", e => {\n const keyboardEvent = e;\n\n if(keyboardEvent.key === \"Enter\"){\n showActiveIndividualProof(card, i)\n }\n })\n })\n\n individualAuthProofDocs.forEach((card: HTMLDivElement, i: number) => {\n card.addEventListener(\"click\", () => {\n handleProofDocClick(card)\n })\n\n card.addEventListener(\"keydown\", e => {\n const keyboardEvent = e;\n\n if(keyboardEvent.key === \"Enter\"){\n handleProofDocClick(card)\n }\n })\n })\n}","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","const loginCountry = document.querySelector(\".login-country\") as HTMLDivElement | null;\n\nif (loginCountry) {\n const countryItems = loginCountry.querySelectorAll(\".login-country__item\") as NodeListOf;\n const nextButton = loginCountry.querySelector(\".button\") as HTMLButtonElement;\n let activeCountry = document.querySelector(\".login-country__item.active\") as HTMLDivElement | null;\n let countryInput = document.getElementById('selectedCountry') as HTMLInputElement;\n \n const toggleCountry = (elm: HTMLDivElement) => {\n if (elm == activeCountry) return;\n \n activeCountry?.classList.remove(\"login-country__item--active\");\n activeCountry = elm;\n activeCountry.classList.add(\"login-country__item--active\");\n let activeCountryName = activeCountry.querySelector(\".login-country__item-name\")?.textContent || \"\";\n countryInput.value = activeCountryName.trim();\n nextButton.disabled = false;\n }\n\n const hookListeners = () => {\n countryItems.forEach((item) => {\n item.addEventListener(\"click\", (e: Event) => {\n const target = (e.target as HTMLElement).closest(\".login-country__item\") as HTMLDivElement;\n\n toggleCountry(target);\n })\n })\n }\n\n document.addEventListener(\"DOMContentLoaded\", hookListeners);\n}","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","const forgotPassForm = document.querySelector(\".individual-forgot-pass__form\") as HTMLFormElement;\n\nif (forgotPassForm) {\n const forgotEmailInput = document.querySelector(\".individual-forgot-pass__email\") as HTMLInputElement;\n const forgotEmailValidation = document.querySelector(\".individual-forgot-pass__validation-email\") as HTMLElement;\n\n const resetForgotPasswordValidation = function () {\n forgotEmailValidation.classList.remove(\"individual-forgot-pass__validation--active\")\n }\n\n forgotEmailInput.addEventListener(\"input\", () => {\n forgotEmailValidation.classList.remove(\"individual-forgot-pass__validation--active\")\n })\n\n forgotPassForm.addEventListener(\"submit\", async e => {\n \n resetForgotPasswordValidation()\n \n const formValues = {\n email: forgotEmailInput.value,\n };\n \n if (!forgotEmailInput.value) {\n forgotEmailValidation.classList.add(\"individual-forgot-pass__validation--active\")\n }\n \n if (forgotEmailInput.value) {\n resetForgotPasswordValidation()\n }\n else {\n e.preventDefault();\n }\n });\n}","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","import setMaxDateValue from '../../../helpers/dateMaxValue';\nimport { HTMLInputElementWithPicker } from \"./individualProfile.types\";\n\nconst individualProfileForm = document.querySelector(\".individual-profile__form\") as HTMLFormElement;\n\nif (individualProfileForm) {\n const firstNameInput = document.querySelector(\".individual-profile__first-name\") as HTMLInputElement;\n const middleNameInput = document.querySelector(\".individual-profile__middle-name\") as HTMLInputElement;\n const lastNameInput = document.querySelector(\".individual-profile__last-name\") as HTMLInputElement;\n const dateInput = document.querySelector(\".individual-profile__dob\") as HTMLInputElementWithPicker;\n const dateInputOverlay = document.querySelector(\".individual-profile__dob-overlay\") as HTMLDivElement;\n const dateInputIcon = document.querySelector(\".individual-profile__dob-icon-container\") as HTMLDivElement;\n const countryInput = document.querySelector(\".individual-profile__country\") as HTMLSelectElement;\n\n const firstNameValidation = document.querySelector(\".individual-profile__validation-first-name\") as HTMLSpanElement;\n const middleNameValidation = document.querySelector(\".individual-profile__validation-middle-name\") as HTMLSpanElement;\n const lastNameValidation = document.querySelector(\".individual-profile__validation-last-name\") as HTMLSpanElement;\n const dateValidation = document.querySelector(\".individual-profile__validation-dob\") as HTMLSpanElement;\n const countryValidation = document.querySelector(\".individual-profile__validation-country\") as HTMLSpanElement;\n\n let isFormValid = false\n\n const resetIndividualProfileValidation = () => {\n firstNameValidation.classList.remove(\"individual-profile__validation--active\")\n middleNameValidation.classList.remove(\"individual-profile__validation--active\")\n lastNameValidation.classList.remove(\"individual-profile__validation--active\")\n dateValidation.classList.remove(\"individual-profile__validation--active\")\n countryValidation.classList.remove(\"individual-profile__validation--active\")\n }\n\n const resetForm = () => {\n firstNameInput.value = \"\"\n lastNameInput.value = \"\"\n middleNameInput.value = \"\"\n dateInput.value = \"\"\n countryInput.value = \"\"\n\n countryInput.classList.remove(\"individual-profile__country--active\")\n dateInput.classList.remove(\"individual-profile__dob--active\")\n }\n\n const nameValidation = (name: string) => {\n const regex = /^[\\u0600-\\u06FFa-zA-Z\\s'-]+$/;\n return regex.test(name);\n};\n\n const validateForm = () => {\n isFormValid = true;\n\n if (!firstNameInput.value || !nameValidation(firstNameInput.value)) {\n firstNameValidation.classList.add(\"individual-profile__validation--active\");\n firstNameValidation.textContent = \"First name is required and must contain only letters\";\n isFormValid = false;\n }\n \n if (middleNameInput.value && !nameValidation(middleNameInput.value)) {\n middleNameValidation.classList.add(\"individual-profile__validation--active\");\n middleNameValidation.textContent = \"Middle name must contain only letters\";\n isFormValid = false;\n } \n \n if (!lastNameInput.value || !nameValidation(lastNameInput.value)) {\n lastNameValidation.classList.add(\"individual-profile__validation--active\");\n lastNameValidation.textContent = \"Last name is required and must contain only letters\";\n isFormValid = false;\n }\n \n if (!dateInput.value) {\n dateValidation.classList.add(\"individual-profile__validation--active\");\n isFormValid = false;\n }\n \n if (!countryInput.value) {\n countryValidation.classList.add(\"individual-profile__validation--active\");\n isFormValid = false;\n }\n \n return isFormValid;\n };\n\n const handleDateClick = () => {\n try {\n dateInput.showPicker()\n } catch (error) {\n console.log(error.message);\n }\n }\n\n const listenForInputChanges = () => {\n firstNameInput.addEventListener(\"input\", () => {\n firstNameValidation.classList.remove(\"individual-profile__validation--active\")\n })\n\n lastNameInput.addEventListener(\"input\", () => {\n lastNameValidation.classList.remove(\"individual-profile__validation--active\")\n })\n\n dateInput.addEventListener(\"click\", () => {\n handleDateClick()\n })\n\n dateInputIcon.addEventListener(\"click\", () => {\n handleDateClick()\n })\n\n dateInput.addEventListener(\"input\", () => {\n dateInput.classList.add(\"individual-profile__dob--active\")\n dateValidation.classList.remove(\"individual-profile__validation--active\")\n dateInputOverlay.classList.add(\"individual-profile__dob-overlay--hidden\");\n })\n\n countryInput.addEventListener(\"input\", () => {\n countryValidation.classList.remove(\"individual-profile__validation--active\")\n countryInput.classList.add(\"individual-profile__country--active\")\n })\n }\n\n listenForInputChanges()\n dateInput.setAttribute(\"max\", setMaxDateValue());\n\n individualProfileForm.addEventListener(\"submit\", async e => {\n resetIndividualProfileValidation()\n\n const formValues = {\n firstName: firstNameInput.value,\n middleName: middleNameInput.value,\n lastName: lastNameInput.value,\n dateOfBirth: dateInput.value,\n countryOfBirth: countryInput.value,\n };\n\n validateForm()\n\n if (isFormValid) {\n isFormValid = false\n }\n else {\n e.preventDefault();\n }\n });\n}","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bundle = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i slider.offsetLeft + slider.offsetWidth) {\n return;\n }\n e.preventDefault();\n isDown = true;\n slider.classList.add(classOnEvent);\n startX = e.pageX - slider.offsetLeft;\n scrollLeft = slider.scrollLeft;\n slider.addEventListener('click', function (event) {\n if (Math.abs(startX - event.pageX + slider.offsetLeft) > 3) {\n event.preventDefault();\n }\n });\n });\n slider.addEventListener('mouseleave', function () {\n isDown = false;\n slider.classList.remove(classOnEvent);\n });\n slider.addEventListener('mouseup', function () {\n isDown = false;\n slider.classList.remove(classOnEvent);\n });\n slider.addEventListener('mousemove', function (e) {\n if (!isDown)\n return;\n e.preventDefault();\n var x = e.pageX - slider.offsetLeft;\n var walk = (x - startX) * scroll_speed;\n slider.scrollLeft = scrollLeft - walk;\n });\n};\nexports.default = clickAndDrag;\n\n},{}],2:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar setMaxDateValue = function () {\n var today = new Date();\n var eighteenYearsAgo = today;\n eighteenYearsAgo.setFullYear(today.getFullYear() - 18);\n var isLeapYear = function (year) { return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0); };\n if (today.getMonth() === 1 && today.getDate() === 29 && !isLeapYear(today.getFullYear())) {\n eighteenYearsAgo.setFullYear(eighteenYearsAgo.getFullYear() - 1);\n }\n var maxDate = eighteenYearsAgo.toISOString().split('T')[0];\n return maxDate;\n};\nexports.default = setMaxDateValue;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar renderUpload = function () {\n var individualUploadActive = document.querySelector('.individual-upload__wrapper--active');\n individualUploadActive === null || individualUploadActive === void 0 ? void 0 : individualUploadActive.focus();\n if (individualUploadActive) {\n var individualUploadBackButtons = individualUploadActive.querySelectorAll('.individual-upload__back');\n var individualAuth_1 = document.querySelector('.individual-auth');\n var individualUploadSubmit_1 = individualUploadActive.querySelector('.individual-upload__submit');\n var individualUploadButtons_1 = individualUploadActive.querySelectorAll('.individual-upload__upload-input');\n var individualCaptureButtons_1 = individualUploadActive.querySelectorAll('.individual-upload__capture-input');\n var individualUploadItems_1 = individualUploadActive.querySelectorAll('.individual-upload__item');\n var individualUploadMains_1 = individualUploadActive.querySelectorAll('.individual-upload__upload-main');\n var previewContainers_1 = individualUploadActive.querySelectorAll('.individual-upload__preview');\n var previewImages_1 = individualUploadActive.querySelectorAll('.individual-upload__preview-image');\n var previewPdfs_1 = individualUploadActive.querySelectorAll('.individual-upload__preview-pdf');\n var previewFileNames_1 = individualUploadActive.querySelectorAll('.individual-upload__preview-name');\n var previewFileSizes_1 = individualUploadActive.querySelectorAll('.individual-upload__preview-size');\n var individualUploadAreas = individualUploadActive.querySelectorAll('.individual-upload__upload');\n var invalidUploadStatuses_1 = individualUploadActive.querySelectorAll('.individual-upload__status-invalid');\n var validUploadStatuses_1 = individualUploadActive.querySelectorAll('.individual-upload__status-valid');\n var individualUploadPreviewDeleteButton = individualUploadActive.querySelectorAll('.individual-upload__preview-delete');\n var fileValidations_1 = individualUploadActive\n .querySelector('.individual-upload__upload-input')\n .getAttribute('accept');\n var uploadedFiles_1 = [];\n var validateFile_1 = function (file) {\n var _a;\n var extension = (_a = file.name.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n var maxSize = 8000000;\n return extension && fileValidations_1.includes('.' + extension) && file.size <= maxSize;\n };\n var kbToMb_1 = function (bytes) {\n var megabytes = bytes / (1024 * 1024);\n return megabytes.toFixed(1) + ' MB';\n };\n var handleFile_1 = function (event, i, isDropped) {\n if (isDropped === void 0) { isDropped = false; }\n if (isDropped) {\n var dt = event.dataTransfer;\n var files = dt.files;\n if (validateFile_1(files[0]) === true) {\n var filePath = files[0].name;\n var fileName = filePath.split('\\\\').pop().split('/').pop();\n var fullFileName = filePath.split('\\\\').pop().split('/').pop();\n var fileExtension = fileName.split('.').pop().toUpperCase();\n var fileSize = kbToMb_1(files[0].size);\n if (fileName.length > 12) {\n fileName = fileName.substring(0, 10) + '..' + '.' + fileExtension;\n }\n previewFileNames_1[i].textContent = fileName;\n previewFileNames_1[i].setAttribute('data-fileName', fullFileName);\n previewFileSizes_1[i].textContent = fileSize;\n uploadedFiles_1.push(files[0]);\n if (individualUploadItems_1.length === uploadedFiles_1.length) {\n individualUploadSubmit_1.removeAttribute('disabled');\n }\n return fileName;\n }\n return '';\n }\n else {\n var target = event.target;\n if (validateFile_1(target.files[0]) === true) {\n var filePath = target.files[0].name;\n var fileName = filePath.split('\\\\').pop().split('/').pop();\n var fullFileName = filePath.split('\\\\').pop().split('/').pop();\n var fileExtension = fileName.split('.').pop().toUpperCase();\n var fileSize = kbToMb_1(target.files[0].size);\n if (fileName.length > 12) {\n fileName = fileName.substring(0, 10) + '..' + '.' + fileExtension;\n }\n if (previewFileNames_1[i] && previewFileSizes_1[i]) {\n previewFileNames_1[i].textContent = fileName;\n previewFileSizes_1[i].textContent = fileSize;\n previewFileNames_1[i].setAttribute('data-fileName', fullFileName);\n uploadedFiles_1.push(target.files[0]);\n if (individualUploadItems_1.length === uploadedFiles_1.length) {\n individualUploadSubmit_1.removeAttribute('disabled');\n }\n }\n else {\n console.error(\"Element at index \" + i + \" not found.\");\n }\n if (individualUploadItems_1.length === uploadedFiles_1.length) {\n individualUploadSubmit_1.removeAttribute('disabled');\n }\n return fileName;\n }\n else {\n return '';\n }\n }\n };\n var renderPreview_1 = function (event, index, droppedFile) {\n if (droppedFile === void 0) { droppedFile = null; }\n if (droppedFile) {\n if (validateFile_1(droppedFile) === true) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var _a;\n var fileType = droppedFile.type;\n var data = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;\n var previewContainer = previewContainers_1[index];\n var individualUploadMain = individualUploadMains_1[index];\n var previewImage = previewImages_1[index];\n var previewPdf = previewPdfs_1[index];\n if (previewContainer) {\n if (fileType.startsWith('image/')) {\n showImgPreview_1(data, index, previewContainer, individualUploadMain);\n }\n else if (fileType.startsWith('application/pdf')) {\n showPdfPreview_1(previewContainer, individualUploadMain, previewPdf, previewImage);\n }\n }\n };\n reader.readAsDataURL(droppedFile);\n }\n }\n else {\n var target = event.target;\n var file_1 = target.files ? target.files[0] : null;\n if (file_1 && validateFile_1(file_1) === true) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var _a;\n var fileType = file_1.type;\n var data = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;\n var previewContainer = previewContainers_1[index];\n var individualUploadMain = individualUploadMains_1[index];\n var previewImage = previewImages_1[index];\n var previewPdf = previewPdfs_1[index];\n if (previewContainer) {\n if (fileType.startsWith('image/')) {\n showImgPreview_1(data, index, previewContainer, individualUploadMain);\n }\n else if (fileType.startsWith('application/pdf')) {\n showPdfPreview_1(previewContainer, individualUploadMain, previewPdf, previewImage);\n }\n }\n };\n reader.readAsDataURL(file_1);\n }\n }\n };\n var showPdfPreview_1 = function (preview, main, previewPdf, previewImage) {\n previewPdf.classList.add('individual-upload__preview-pdf--active');\n previewImage.classList.remove('individual-upload__preview-image--active');\n main.classList.remove('individual-upload__upload-main--active');\n preview.classList.add('individual-upload__preview--active');\n };\n var showImgPreview_1 = function (data, i, preview, main) {\n main.classList.remove('individual-upload__upload-main--active');\n preview.classList.add('individual-upload__preview--active');\n previewImages_1[i].src = data;\n previewImages_1[i].classList.add('individual-upload__preview-image--active');\n previewPdfs_1[i].classList.remove('individual-upload__preview-pdf--active');\n };\n var handleProgress_1 = function (fileInput, index) {\n var progressBars = individualUploadActive.querySelectorAll('.individual-upload__progress-inner');\n var progress = progressBars[index];\n var file = fileInput.files[0] || null;\n if (file && file.size) {\n var fileSize_1 = file.size;\n var loaded_1 = 0;\n var reader = new FileReader();\n reader.onprogress = function (event) {\n if (event.lengthComputable) {\n loaded_1 = event.loaded;\n var percent = (loaded_1 / fileSize_1) * 100;\n progress.style.width = percent + '%';\n if (percent === 100) {\n progress.classList.add('individual-upload__progress-inner--complete');\n invalidUploadStatuses_1[index].classList.remove('individual-upload__status-invalid--active');\n validUploadStatuses_1[index].classList.add('individual-upload__status-valid--active');\n }\n }\n };\n reader.readAsDataURL(file);\n return reader;\n }\n else {\n var percent = 100;\n progress.style.width = percent + '%';\n progress.classList.add('individual-upload__progress-inner--complete');\n invalidUploadStatuses_1[index].classList.remove('individual-upload__status-invalid--active');\n validUploadStatuses_1[index].classList.add('individual-upload__status-valid--active');\n return percent;\n }\n };\n var handleDragOver_1 = function (e, area) {\n e.preventDefault();\n area.classList.add('individual-upload__upload--active');\n };\n var handleFileDrop_1 = function (e, index, area) {\n e.preventDefault();\n var button = individualCaptureButtons_1[index];\n handleFile_1(e, index, true);\n handleProgress_1(button, index);\n area.classList.remove('individual-upload__upload--active');\n };\n var handleDragLeave_1 = function (e, area) {\n e.preventDefault();\n area.classList.remove('individual-upload__upload--active');\n };\n var resetIndividualUpload_1 = function () {\n var individualUploadWrapper = document.querySelector('.individual-upload__wrapper--active');\n individualUploadWrapper === null || individualUploadWrapper === void 0 ? void 0 : individualUploadWrapper.classList.remove('individual-upload__wrapper--active');\n individualAuth_1.style.height = 'auto';\n };\n individualUploadBackButtons.forEach(function (button) {\n button.addEventListener('click', function () {\n resetIndividualUpload_1();\n });\n });\n individualUploadButtons_1.forEach(function (button, i) {\n button.addEventListener('change', function (e) {\n handleFile_1(e, i);\n renderPreview_1(e, i);\n handleProgress_1(button, i);\n });\n });\n individualCaptureButtons_1.forEach(function (button, i) {\n button.addEventListener('change', function (e) {\n handleFile_1(e, i);\n var target = e.target;\n if (validateFile_1(target.files[0]) === true) {\n handleProgress_1(button, i);\n renderPreview_1(e, i);\n }\n });\n });\n individualUploadAreas.forEach(function (area, i) {\n area.addEventListener('dragover', function (e) {\n handleDragOver_1(e, area);\n });\n area.addEventListener('dragleave', function (e) {\n handleDragLeave_1(e, area);\n });\n area.addEventListener('drop', function (e) {\n var file = e.dataTransfer.files[0];\n handleFileDrop_1(e, i, area);\n renderPreview_1(e, i, file);\n });\n });\n individualUploadPreviewDeleteButton.forEach(function (button, i) {\n button.addEventListener('click', function () {\n var fileName = button.parentElement.previousElementSibling.children[0].getAttribute('data-fileName');\n var filteredArray = uploadedFiles_1.filter(function (obj) { return obj.name !== fileName; });\n uploadedFiles_1 = filteredArray;\n previewContainers_1[i].classList.remove('individual-upload__preview--active');\n individualUploadMains_1[i].classList.add('individual-upload__upload-main--active');\n individualUploadButtons_1[i].value = '';\n individualUploadSubmit_1.setAttribute('disabled', 'true');\n });\n });\n }\n};\nexports.default = renderUpload;\n\n},{}],4:[function(require,module,exports){\nvar printButtons = document.querySelectorAll(\".button--print\");\nprintButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n window.print();\n });\n});\n\n},{}],5:[function(require,module,exports){\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var rotatingElement = document.querySelector('.contact-form__image');\n var contactForm = document.querySelector('.contact-form');\n var lastScrollTop = 0;\n if (rotatingElement && contactForm) {\n contactForm.addEventListener('mouseover', function () {\n window.addEventListener('scroll', handleScroll);\n });\n }\n function handleScroll() {\n var scrollPos = window.scrollY;\n var rotation = (scrollPos - lastScrollTop) / 2;\n var translateZ = Math.max(0, scrollPos / 30);\n rotation = Math.min(Math.max(rotation, -20), 10);\n rotatingElement.style.transform = \"rotateY(\" + rotation + \"deg) rotateX(\" + rotation + \"deg) translateZ(\" + translateZ + \"px)\";\n lastScrollTop = scrollPos;\n }\n});\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = __importDefault(require(\"axios\"));\nvar createPayComponent = document.querySelector(\".create-pay__wrapper\");\nvar transferSummary = document.querySelector(\".transfer-summary__wrapper\");\nvar closeButtons = document.querySelector(\".change-currency__close\");\nvar overlay = document.querySelector(\".change-currency__overlay\");\nvar changeCurrencyButton = document.querySelector(\".create-pay__change-currency\");\nvar saveCurrencyButton = document.querySelector(\".create-pay__currencies-save\");\nif (createPayComponent && transferSummary) {\n var thresholdErrorExceed_1 = createPayComponent.querySelector(\".create-pay__error-exceeded\");\n var thresholdErrorMin_1 = createPayComponent.querySelector(\".create-pay__error-min\");\n var minAmountParagraph_1 = createPayComponent.querySelector(\".create-pay__min-amount\");\n var amountInput_1 = createPayComponent.querySelector(\".create-pay__amount\");\n var currencySelect_1 = createPayComponent.querySelector(\".create-pay__currencies\");\n var currencySymbolElement_1 = createPayComponent.querySelector(\".create-pay__currency-symbol\");\n var nextButton_1 = createPayComponent.querySelector(\".create-pay__button\");\n var payBankButton_1 = document.querySelector(\".create-pay__button--bank\");\n var backButton_1 = transferSummary.querySelector(\".transfer-summary__back\");\n var transferSummariesRight_1 = transferSummary.querySelectorAll(\".transfer-summary__right\");\n var transferSummaryLeft_1 = transferSummary.querySelector(\".transfer-summary__left\");\n var transferPurposeSelect_1 = createPayComponent.querySelector(\"#create-pay__dropdown-select\");\n var uid_1 = new URLSearchParams(window.location.search).get(\"_uid\");\n var createPaymentDetailsContainer_1 = document.querySelector(\".create-pay__details\");\n var createPaymentError_1 = document.querySelector(\".create-pay__error\");\n var createPayAmount_1 = document.getElementById(\"create-pay__amount\");\n var createPayRecievedAmount_1 = document.getElementById(\"create-pay__amount-received\");\n var paymentMethodRadios_1 = document.querySelectorAll(\"input[name='payment-method']\");\n var bankPaymentMethod_1 = Array.from(paymentMethodRadios_1).find(function (radio) { return radio.value === \"BankTransfer\"; }) || undefined;\n var paymentMethodRadio_1 = document.querySelector(\"input[name='payment-method']:checked\");\n var ratesJson = createPayComponent.dataset.ratesJson;\n var feesJson = createPayComponent.dataset.feesJson;\n var receiveLabels_1 = document.querySelectorAll(\".values--receive-value\");\n var sendLabels_1 = document.querySelectorAll(\".values--send-value\");\n var exchangeRateLabels_1 = document.querySelectorAll(\".values--exchange-rate\");\n var transferPurposeLabels_1 = document.querySelectorAll(\".values--transfer-purpose\");\n var payValueLabels_1 = document.querySelectorAll(\".values--pay-value\");\n var transferFees_1 = document.querySelectorAll(\".values--fees\");\n var thresholdLabel_1 = document.querySelector(\"#thresholdAmount\");\n var payoutCountryLabel_1 = document.querySelector(\".values--payout-country\");\n var youreSendingLabel_1 = document.querySelector(\".value--youre-sending-value\");\n var paymentMethodLabels_1 = document.querySelectorAll(\".values--payment-method\");\n var tooltipIcon_1 = document.querySelector('.create-pay__icon');\n var tooltipText_1 = tooltipIcon_1.nextElementSibling;\n var receiveCurrencyName_1 = createPayComponent.querySelector(\".payload--receive-currency-name\").innerText;\n var db_1 = JSON.parse(ratesJson);\n var feesDb_1 = JSON.parse(feesJson);\n var isLoading_1 = false;\n var sendCurrency_1 = db_1[0];\n var receiveCurrency_1 = sendCurrency_1.ToCurrencies.find(function (currency) { return currency.Name === receiveCurrencyName_1; });\n var session_1;\n var currentPayoutMethod_1 = paymentMethodRadio_1.value;\n var formatNumberWithCommas_1 = function (value) {\n var number = value.replace(/[^\\d.]/g, '');\n var _a = number.split('.'), integerPart = _a[0], decimalPart = _a[1];\n integerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n if (decimalPart !== undefined) {\n decimalPart = decimalPart.replace(/\\./g, '');\n return integerPart + '.' + decimalPart;\n }\n return integerPart;\n };\n var closeOverlays_1 = function () {\n overlay.classList.remove(\"change-currency__overlay--active\");\n };\n var showTransferSummary_1 = function () {\n var _a;\n createPayComponent.classList.remove(\"create-pay__wrapper--active\");\n transferSummary.classList.add(\"transfer-summary__wrapper--active\");\n if (window.innerWidth > 768) {\n (_a = document.querySelector(\".transfer-summary__right[data-type='\" + currentPayoutMethod_1 + \"']\")) === null || _a === void 0 ? void 0 : _a.classList.add(\"transfer-summary__right--active\");\n }\n window.scrollTo({ top: 0, behavior: 'smooth' });\n };\n var hideTransferSummary_1 = function () {\n var anyContainsActive = Array.from(transferSummariesRight_1).some(function (div) { return div.classList.contains(\"transfer-summary__right--active\"); });\n transferSummariesRight_1.forEach(function (div) {\n div.classList.remove(\"transfer-summary__right--active\");\n });\n if (window.innerWidth < 768 && anyContainsActive) {\n transferSummaryLeft_1.classList.add(\"transfer-summary__left--active\");\n }\n else {\n transferSummary.classList.remove(\"transfer-summary__wrapper--active\");\n createPayComponent.classList.add(\"create-pay__wrapper--active\");\n }\n };\n var resetErrors_1 = function () {\n nextButton_1.disabled = false;\n thresholdErrorExceed_1 === null || thresholdErrorExceed_1 === void 0 ? void 0 : thresholdErrorExceed_1.classList.remove(\"create-pay__error--active\");\n thresholdErrorMin_1 === null || thresholdErrorMin_1 === void 0 ? void 0 : thresholdErrorMin_1.classList.remove(\"create-pay__error--active\");\n };\n var saveCurrency_1 = function () {\n var selectedOption = currencySelect_1.options[currencySelect_1.selectedIndex];\n var customDataValue = selectedOption.getAttribute('data-cur-symbol');\n currencySymbolElement_1.textContent = customDataValue;\n resetErrors_1();\n handleValueChange_1();\n updateMinAmount_1();\n handleThreshold_1(amountInput_1);\n };\n var initiateBankTransfer_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var response, data, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (isLoading_1)\n return [2];\n isLoading_1 = true;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, 4, 5]);\n return [4, axios_1.default.post(\"/api/payments/initiateBankTransfer\", session_1)];\n case 2:\n response = _a.sent();\n data = response.data;\n window.location.href = data.data.url;\n return [3, 5];\n case 3:\n error_1 = _a.sent();\n alert(\"An error occurred while processing your request. Please try again later.\");\n console.error(error_1);\n return [3, 5];\n case 4:\n isLoading_1 = false;\n return [7];\n case 5: return [2];\n }\n });\n }); };\n var hookListeners_1 = function () {\n amountInput_1.addEventListener(\"input\", function (e) {\n var target = e.target;\n amountInput_1.value = formatNumberWithCommas_1(target.value);\n resetErrors_1();\n handleThreshold_1(target);\n handleValueChange_1();\n });\n createPayRecievedAmount_1.addEventListener(\"input\", function (e) {\n var target = e.target;\n createPayRecievedAmount_1.value = formatNumberWithCommas_1(target.value);\n resetErrors_1();\n handleThresholdRecieve_1(target);\n handleValueChange_1();\n });\n nextButton_1.addEventListener(\"click\", function () {\n showTransferSummary_1();\n });\n backButton_1.addEventListener(\"click\", function () {\n hideTransferSummary_1();\n });\n paymentMethodRadios_1.forEach(function (radio) {\n radio.addEventListener(\"change\", function (e) {\n var target = e.target;\n currentPayoutMethod_1 = target.value;\n updatePaymentMethodElements_1();\n handleValueChange_1();\n });\n });\n payBankButton_1 === null || payBankButton_1 === void 0 ? void 0 : payBankButton_1.addEventListener(\"click\", function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n initiateBankTransfer_1();\n return [2];\n });\n }); });\n transferPurposeSelect_1.addEventListener(\"change\", handleValueChange_1);\n };\n var handleThreshold_1 = function (target) {\n if (thresholdLabel_1 && !isNaN(sendCurrency_1.Threshold)) {\n var text = formatNumberWithSymbol_1(sendCurrency_1.Threshold, 2, sendCurrency_1.Symbol);\n thresholdLabel_1.innerText = sendCurrency_1.Symbol + formatNumberWithCommas_1(text);\n if (target) {\n var originalSendAmountValue = parseFloat(target.value.replace(/[^\\d.]/g, ''));\n if (originalSendAmountValue > sendCurrency_1.Threshold) {\n amountInput_1.value = formatNumberWithCommas_1(sendCurrency_1.Threshold.toString());\n thresholdErrorExceed_1 === null || thresholdErrorExceed_1 === void 0 ? void 0 : thresholdErrorExceed_1.classList.add(\"create-pay__error--active\");\n handleValueChange_1();\n }\n }\n }\n };\n var handleThresholdRecieve_1 = function (target) {\n if (thresholdLabel_1 && !isNaN(sendCurrency_1.Threshold)) {\n var text = formatNumberWithSymbol_1(sendCurrency_1.Threshold, 2, sendCurrency_1.Symbol);\n thresholdLabel_1.innerText = sendCurrency_1.Symbol + formatNumberWithCommas_1(text);\n if (target) {\n var originalRecieveAmountValue = parseFloat(target.value.replace(/[^\\d.]/g, ''));\n var recieveAmountThreshold = sendCurrency_1.Threshold * receiveCurrency_1.ExchangeRate;\n if (originalRecieveAmountValue > recieveAmountThreshold) {\n createPayRecievedAmount_1.value = formatNumberWithCommas_1(recieveAmountThreshold.toFixed(2));\n thresholdErrorExceed_1 === null || thresholdErrorExceed_1 === void 0 ? void 0 : thresholdErrorExceed_1.classList.add(\"create-pay__error--active\");\n handleValueChange_1();\n }\n }\n }\n };\n var validateTotalToPay_1 = function () {\n var totalToPayValue = parseFloat(sendLabels_1[0].textContent.replace(/[^\\d.]/g, ''));\n var transferFeesValue = parseFloat(transferFees_1[0].textContent.replace(/[^\\d.]/g, ''));\n var difference = Math.abs(totalToPayValue - transferFeesValue);\n if (difference < sendCurrency_1.MinAmount) {\n nextButton_1.disabled = true;\n }\n else if (difference >= sendCurrency_1.MinAmount) {\n nextButton_1.disabled = false;\n }\n };\n var handleInvalidExchangeRate_1 = function () {\n amountInput_1.value = \"\";\n createPaymentDetailsContainer_1.classList.add(\"create-pay__details--disabled\");\n createPaymentError_1.classList.add(\"create-pay__error--active\");\n amountInput_1.disabled = true;\n nextButton_1.disabled = true;\n transferPurposeSelect_1.disabled = true;\n updateLabels_1(\"N/A\", \"N/A\", \"N/A\", \"N/A\");\n };\n var handleValidExchangeRate_1 = function () {\n amountInput_1.placeholder = \"\";\n createPaymentDetailsContainer_1.classList.remove(\"create-pay__details--disabled\");\n createPaymentError_1.classList.remove(\"create-pay__error--active\");\n amountInput_1.disabled = false;\n nextButton_1.disabled = false;\n transferPurposeSelect_1.disabled = false;\n updateLabels_1(\"\", \"\", \"\", \"\");\n };\n var handleInvalidAmount_1 = function () {\n nextButton_1.disabled = true;\n updateLabels_1(\"\", \"\", transferPurposeSelect_1.value);\n };\n var handleValidAmount_1 = function () {\n nextButton_1.disabled = false;\n var minValue = sendCurrency_1.MinAmount;\n if (+amountInput_1.value < minValue) {\n nextButton_1.disabled = true;\n debouncedFunc_1(minValue);\n }\n else {\n updateSession_1();\n }\n };\n var debounce = function (func, wait) {\n var timeout;\n return function executedFunction() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var later = function () {\n clearTimeout(timeout);\n func.apply(void 0, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n };\n var debouncedFunc_1 = debounce(function (min) {\n if (+amountInput_1.value < min) {\n thresholdErrorMin_1.classList.add(\"create-pay__error--active\");\n }\n updateSession_1();\n }, 1000);\n var calculateSendAmount_1 = function (amount, exchangeRate, fixedPoints, symbol) {\n if (fixedPoints === void 0) { fixedPoints = 5; }\n var sendAmount = amount * exchangeRate;\n return formatNumberWithSymbol_1(sendAmount, fixedPoints, symbol);\n };\n var formatNumberWithSymbol_1 = function (value, fixedPoints, symbol) {\n if (fixedPoints === void 0) { fixedPoints = 5; }\n if (!symbol)\n return value.toFixed(fixedPoints);\n if (isNaN(value))\n return \"\";\n return \"\" + symbol + value.toFixed(fixedPoints);\n };\n var calculateFees_1 = function (currentAmount) {\n return calculateFeeRate_1(currentAmount) + calculateFlatFee_1();\n };\n var calculateFeeRate_1 = function (currentAmount) {\n var _a, _b;\n var feeRate = (_b = (_a = feesDb_1 === null || feesDb_1 === void 0 ? void 0 : feesDb_1[currentPayoutMethod_1]) === null || _a === void 0 ? void 0 : _a.FeeRate) === null || _b === void 0 ? void 0 : _b.Value;\n if (feeRate) {\n var fee = currentAmount * feeRate;\n var roundedFee = Math.floor(fee * 100) / 100;\n return roundedFee;\n }\n return 0;\n };\n var calculateFlatFee_1 = function () {\n var _a, _b;\n var flatFee = (_b = (_a = feesDb_1 === null || feesDb_1 === void 0 ? void 0 : feesDb_1[currentPayoutMethod_1]) === null || _a === void 0 ? void 0 : _a.FlatFees[sendCurrency_1.Name]) === null || _b === void 0 ? void 0 : _b.Value;\n return flatFee !== null && flatFee !== void 0 ? flatFee : 0;\n };\n var updatePaymentMethodElements_1 = function () {\n var _a;\n paymentMethodRadio_1 = document.querySelector(\"input[name='payment-method']:checked\");\n if (bankPaymentMethod_1) {\n var topParent = (_a = bankPaymentMethod_1.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;\n if (!sendCurrency_1.HasBankDetails) {\n topParent === null || topParent === void 0 ? void 0 : topParent.classList.add(\"hidden-element\");\n if ((paymentMethodRadio_1 === null || paymentMethodRadio_1 === void 0 ? void 0 : paymentMethodRadio_1.value) === \"BankTransfer\") {\n paymentMethodRadio_1 = Array.from(paymentMethodRadios_1).find(function (radio) { return radio.value !== \"BankTransfer\"; });\n paymentMethodRadio_1.checked = true;\n }\n }\n else {\n topParent === null || topParent === void 0 ? void 0 : topParent.classList.remove(\"hidden-element\");\n }\n currentPayoutMethod_1 = paymentMethodRadio_1.value;\n }\n var parent = (paymentMethodRadio_1 === null || paymentMethodRadio_1 === void 0 ? void 0 : paymentMethodRadio_1.parentElement) || undefined;\n paymentMethodLabels_1.forEach(function (label) { var _a, _b; return label.textContent = (_b = (_a = parent.querySelector(\".create-pay__item-title\")) === null || _a === void 0 ? void 0 : _a.textContent) !== null && _b !== void 0 ? _b : \"\"; });\n };\n var updateLabels_1 = function (receiveAmount, sendAmount, tranferPurpose, exchangeText) {\n updatePaymentMethodElements_1();\n var originalSendAmountValue = parseFloat(sendAmount.replace(/[^\\d.]/g, ''));\n paymentMethodRadio_1 = document.querySelector(\"input[name='payment-method']:checked\");\n var fees = calculateFees_1(originalSendAmountValue);\n var sendAmountWithoutFees = formatNumberWithSymbol_1(originalSendAmountValue, 2, sendCurrency_1.Symbol);\n var sendAmountValue = originalSendAmountValue + fees;\n if (isNaN(sendAmountValue))\n return;\n sendAmount = formatNumberWithSymbol_1(sendAmountValue, 2, sendCurrency_1.Symbol);\n receiveLabels_1.forEach(function (label) { return label.textContent = receiveCurrency_1.Symbol + formatNumberWithCommas_1(receiveAmount); });\n sendLabels_1.forEach(function (label) { return label.textContent = sendCurrency_1.Symbol + formatNumberWithCommas_1(sendAmount); });\n payValueLabels_1.forEach(function (label) { return label.textContent = \"Pay \" + (sendCurrency_1.Symbol + formatNumberWithCommas_1(sendAmount)); });\n transferFees_1.forEach(function (label) { return label.textContent = sendCurrency_1.Symbol + formatNumberWithCommas_1(fees.toFixed(2).toString()); });\n if (tranferPurpose)\n transferPurposeLabels_1.forEach(function (label) { return label.textContent = tranferPurpose; });\n else\n updateTransferPurposeLabels_1();\n if (exchangeText)\n exchangeRateLabels_1.forEach(function (label) { return label.textContent = exchangeText; });\n else\n updateExchangeRateLabels_1();\n if (youreSendingLabel_1)\n youreSendingLabel_1.textContent = sendCurrency_1.Symbol + formatNumberWithCommas_1(sendAmountWithoutFees);\n };\n var updateExchangeRateLabels_1 = function () {\n if (sendCurrency_1 && receiveCurrency_1) {\n exchangeRateLabels_1.forEach(function (label) {\n label.textContent = sendCurrency_1.Symbol + \" 1 = \" + receiveCurrency_1.Symbol + \" \" + receiveCurrency_1.ExchangeRate.toFixed(3);\n });\n }\n };\n var updateTransferPurposeLabels_1 = function () {\n transferPurposeLabels_1.forEach(function (label) {\n label.textContent = transferPurposeSelect_1.value;\n });\n };\n var handleValueChange_1 = function () {\n var originalSendValue = parseFloat(amountInput_1.value.replace(/[^\\d.]/g, ''));\n sendCurrency_1 = db_1[currencySelect_1.selectedIndex];\n receiveCurrency_1 = sendCurrency_1.ToCurrencies.find(function (currency) { return currency.Name === receiveCurrencyName_1; });\n handleThreshold_1();\n var recieveAmount = parseFloat(createPayRecievedAmount_1.value.replace(/[^\\d.]/g, ''));\n if (!receiveCurrency_1) {\n handleInvalidExchangeRate_1();\n return;\n }\n handleValidExchangeRate_1();\n if (isNaN(originalSendValue)) {\n handleInvalidAmount_1();\n return;\n }\n handleValidAmount_1();\n transferPurposeSelect_1 = createPayComponent.querySelector(\"#create-pay__dropdown-select\");\n var toReceiveAmount = formatNumberWithSymbol_1(recieveAmount, 2, receiveCurrency_1.Symbol);\n var toSendAmount = calculateSendAmount_1(originalSendValue, (1), 2, sendCurrency_1.Symbol);\n var transferPurpose = transferPurposeSelect_1.value;\n var exchangeRate = sendCurrency_1.Symbol + \" 1 = \" + receiveCurrency_1.Symbol + \" \" + receiveCurrency_1.ExchangeRate.toFixed(3);\n updateLabels_1(toReceiveAmount, toSendAmount, transferPurpose, exchangeRate);\n validateTotalToPay_1();\n };\n var populateDropdowns_1 = function () {\n currencySelect_1.innerHTML = \"\";\n db_1.forEach(function (currency) {\n var option = document.createElement(\"option\");\n option.value = currency.Name;\n option.textContent = currency.Name;\n option.setAttribute(\"data-cur-symbol\", currency.Symbol);\n option.classList.add(\"create-pay__currency\");\n currencySelect_1.appendChild(option);\n });\n currencySelect_1.selectedIndex = 0;\n currencySymbolElement_1.textContent = db_1[0].Symbol;\n };\n var updateMinAmount_1 = function () {\n var amount = formatNumberWithSymbol_1(sendCurrency_1.MinAmount, 2, sendCurrency_1.Symbol);\n if (minAmountParagraph_1 != null) {\n minAmountParagraph_1.textContent = sendCurrency_1.Symbol + formatNumberWithCommas_1(amount);\n }\n };\n var isUserInput_1 = true;\n var updateSenderInput_1 = function () {\n var receivedAmountValue = parseFloat(createPayRecievedAmount_1.value.replace(/[^\\d.]/g, ''));\n var senderAmount = (receivedAmountValue / receiveCurrency_1.ExchangeRate).toFixed(2);\n createPayAmount_1.value = formatNumberWithCommas_1(senderAmount);\n createPayAmount_1.dispatchEvent(new Event('input'));\n };\n var updateRecievesInput_1 = function () {\n var amountValue = parseFloat(createPayAmount_1.value.replace(/[^\\d.]/g, ''));\n var sendAmount = (amountValue * receiveCurrency_1.ExchangeRate).toFixed(2);\n createPayRecievedAmount_1.value = formatNumberWithCommas_1(sendAmount);\n createPayRecievedAmount_1.dispatchEvent(new Event('input'));\n };\n createPayAmount_1.addEventListener('input', function () {\n if (isUserInput_1) {\n isUserInput_1 = false;\n updateRecievesInput_1();\n isUserInput_1 = true;\n }\n });\n createPayRecievedAmount_1.addEventListener('input', function () {\n if (isUserInput_1) {\n isUserInput_1 = false;\n updateSenderInput_1();\n isUserInput_1 = true;\n }\n });\n var updateSession_1 = function () {\n var _a;\n var amountValue = parseFloat(amountInput_1.value.replace(/[^\\d.]/g, ''));\n var sendAmount = amountValue * receiveCurrency_1.ExchangeRate;\n session_1 = {\n Uid: parseInt(uid_1),\n ExchangeRate: receiveCurrency_1.ExchangeRate,\n FromValue: amountValue,\n FromCurrency: sendCurrency_1.Name,\n FromSymbol: sendCurrency_1.Symbol,\n ToCurrency: receiveCurrency_1.Name,\n ToSymbol: receiveCurrency_1.Symbol,\n ToValue: sendAmount,\n PayoutCountry: (_a = payoutCountryLabel_1 === null || payoutCountryLabel_1 === void 0 ? void 0 : payoutCountryLabel_1.textContent) !== null && _a !== void 0 ? _a : \"\",\n PayoutMethod: currentPayoutMethod_1,\n TransferPurpose: transferPurposeSelect_1.value\n };\n sessionStorage.setItem(\"createPaymentSession\", JSON.stringify(session_1));\n dispatchSessionChangeEvent();\n function dispatchSessionChangeEvent() {\n var event = new Event('sessionChange');\n window.dispatchEvent(event);\n }\n };\n var showTooltip = function () {\n tooltipText_1.classList.add('create-pay__tooltip--active');\n };\n var hideTooltip_1 = function () {\n tooltipText_1.classList.remove('create-pay__tooltip--active');\n };\n tooltipIcon_1.addEventListener('mouseover', showTooltip);\n tooltipIcon_1.addEventListener('mouseout', hideTooltip_1);\n tooltipIcon_1.addEventListener('click', function () {\n if (tooltipText_1.classList.contains('create-pay__tooltip--active')) {\n tooltipText_1.classList.remove('create-pay__tooltip--active');\n }\n else {\n tooltipText_1.classList.add('create-pay__tooltip--active');\n }\n });\n tooltipIcon_1.addEventListener('touchstart', function (e) {\n e.preventDefault();\n if (tooltipText_1.classList.contains('create-pay__tooltip--active')) {\n tooltipText_1.classList.remove('create-pay__tooltip--active');\n }\n else {\n tooltipText_1.classList.add('create-pay__tooltip--active');\n }\n });\n document.addEventListener('touchstart', function (e) {\n if (e.target !== tooltipIcon_1 && e.target !== tooltipText_1) {\n hideTooltip_1();\n }\n });\n changeCurrencyButton.addEventListener(\"click\", function () {\n changeCurrencyButton.nextElementSibling.classList.add(\"change-currency__overlay--active\");\n });\n closeButtons.addEventListener(\"click\", function () {\n closeOverlays_1();\n });\n document.addEventListener('keydown', function (event) {\n if (event.key === 'Escape') {\n closeOverlays_1();\n }\n });\n overlay.addEventListener(\"click\", function (e) {\n var target = e.target;\n if (target.classList.contains(\"change-currency__overlay--active\"))\n closeOverlays_1();\n });\n saveCurrencyButton.addEventListener(\"click\", function () {\n saveCurrency_1();\n closeOverlays_1();\n });\n var init = function () {\n populateDropdowns_1();\n handleValueChange_1();\n hookListeners_1();\n handleThreshold_1();\n updateMinAmount_1();\n updatePaymentMethodElements_1();\n };\n init();\n}\n\n},{\"axios\":52}],7:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar ctaCardsCarousels = document.querySelectorAll(\".cta-cards__carousel-inner\");\nvar setRangeMax = function (arr, input) {\n var slidesLength = Array.from(arr).length;\n var rangeMax = '0';\n rangeMax = (slidesLength - 1).toString();\n input.max = rangeMax;\n setRangeThumbWidth(rangeMax, input);\n};\nvar setRangeThumbWidth = function (max, input) {\n var width = 200 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"100px\");\n }\n};\nif (ctaCardsCarousels) {\n var ctaCardsCarouselsArray = Array.from(ctaCardsCarousels) || [];\n ctaCardsCarouselsArray.forEach(function (item) {\n var glide = new glide_1.default(item, {\n type: 'slider',\n perView: 1.7,\n gap: 10,\n rewind: false,\n bound: true,\n breakpoints: {\n 550: {\n perView: 1.24,\n },\n }\n });\n glide.mount();\n var carouselRange = item.querySelector(\".cta-cards__carousel-range\");\n var slides = item.querySelectorAll(\".cta-cards__card\");\n carouselRange.addEventListener(\"input\", function (e) {\n setTimeout(function () {\n glide.go(\"=\" + carouselRange.value);\n }, 500);\n });\n glide.on('move.after', function () {\n var currentIndex = glide.index;\n carouselRange.value = currentIndex;\n });\n setRangeMax(slides, carouselRange);\n });\n}\n\n},{\"@glidejs/glide\":51}],9:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar clickDrag_1 = __importDefault(require(\"../../../helpers/clickDrag\"));\nvar dashboard = document.querySelector('.dashboard');\nif (dashboard) {\n var closeButtons = dashboard.querySelectorAll('.recipient-detail__close');\n var dashboardRight_1 = dashboard.querySelector(\".dashboard__right\");\n var footer_1 = document.querySelector(\".footer\");\n var dashboardPaymentCarousels = dashboard.querySelectorAll('.dashboard__carousel');\n var contactsCarousel_1 = dashboard.querySelector('.dashboard__carousel-contacts');\n var cardsCarousel = dashboard.querySelector('.dashboard__carousel-cards');\n var dashboardCardsCarousel = cardsCarousel.querySelectorAll('.dash-card');\n var dashboardCardsCarouselOverlays_1 = cardsCarousel.querySelectorAll('.recipient-detail__overlay');\n var contactsCarouselCards = contactsCarousel_1.querySelectorAll('.dashboard-contact');\n var contactsCarouselOverlays_1 = contactsCarousel_1.querySelectorAll('.recipient-detail__overlay');\n var contactsList = dashboard.querySelector('.dashboard__contacts-list');\n var cardsList = dashboard.querySelector('.dashboard__cards');\n var contactCards = contactsList.querySelectorAll('.dashboard-contact');\n var dashboardCards = cardsList.querySelectorAll('.dash-card');\n var contactCardsOverlays_1 = contactsList.querySelectorAll('.recipient-detail__overlay');\n var dashboardCardsOverlays_1 = cardsList.querySelectorAll('.recipient-detail__overlay');\n var setRangeMax_1 = function (arr, input) {\n var slidesLength = arr.length;\n var rangeMax = '0';\n rangeMax = (slidesLength - 1).toString();\n input.max = rangeMax;\n setRangeThumbWidth_1(rangeMax, input);\n };\n var setRangeThumbWidth_1 = function (max, input) {\n var width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + 'px');\n if (max === '1') {\n input.style.setProperty('--thumb-size', '47px');\n }\n };\n var handleOverlay_1 = function (card, index, overlays) {\n var activeIndex = index;\n card.addEventListener('click', function () {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n footer_1.classList.add(\"hidden\");\n });\n card.addEventListener('keydown', function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', function (e) {\n var targetElement = e.target;\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n setTimeout(function () {\n dashboardRight_1.classList.remove(\"dashboard__right--hidden\");\n footer_1.classList.remove(\"hidden\");\n }, 200);\n }\n });\n }\n };\n closeButtons.forEach(function (button) {\n button.addEventListener('click', function () {\n button.parentElement.parentElement.parentElement.parentElement.classList.remove('recipient-detail__overlay--active');\n setTimeout(function () {\n dashboardRight_1.classList.remove(\"dashboard__right--hidden\");\n footer_1.classList.remove(\"hidden\");\n }, 200);\n });\n });\n dashboardPaymentCarousels.forEach(function (carousel, i) {\n if (i === 0) {\n var glide = new glide_1.default(carousel, {\n type: 'slider',\n perView: 1,\n gap: 30,\n rewind: false,\n bound: false,\n });\n glide.mount();\n carousel.setAttribute(\"data-history-carousel\", \"true\");\n }\n if (i === 1) {\n var glide = new glide_1.default(carousel, {\n type: 'slider',\n perView: 1.3,\n gap: 11,\n rewind: false,\n bound: true,\n });\n glide.mount();\n var carouselRange_1 = dashboard.querySelector('.dashboard__range');\n var slides = contactsCarousel_1.querySelectorAll('.dashboard-contact');\n carouselRange_1.addEventListener('input', function () {\n setTimeout(function () {\n glide.go(\"=\" + carouselRange_1.value);\n }, 500);\n });\n glide.on('move.after', function () {\n var currentIndex = glide.index;\n carouselRange_1.value = currentIndex;\n });\n setRangeMax_1(slides, carouselRange_1);\n }\n });\n dashboardCardsCarousel.forEach(function (card, index) {\n handleOverlay_1(card, index, dashboardCardsCarouselOverlays_1);\n });\n contactsCarouselCards.forEach(function (card, index) {\n handleOverlay_1(card, index, contactsCarouselOverlays_1);\n });\n contactCards.forEach(function (card, index) {\n handleOverlay_1(card, index, contactCardsOverlays_1);\n });\n dashboardCards.forEach(function (card, index) {\n handleOverlay_1(card, index, dashboardCardsOverlays_1);\n });\n clickDrag_1.default('.dashboard__links');\n}\n\n},{\"../../../helpers/clickDrag\":1,\"@glidejs/glide\":51}],10:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar recipientDetails = document.querySelectorAll(\".recipient-detail\");\nif (recipientDetails.length > 0) {\n var setRangeMax_1 = function (arr, input) {\n var slidesLength = arr.length;\n var rangeMax = (slidesLength - 2).toString();\n input.max = rangeMax;\n setRangeThumbWidth_1(rangeMax, input);\n };\n var setRangeThumbWidth_1 = function (max, input) {\n var width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"47px\");\n }\n };\n recipientDetails.forEach(function (item) {\n var glide = new glide_1.default(item, {\n type: 'slider',\n perView: 2.8,\n gap: 10,\n rewind: true,\n bound: true,\n });\n glide.mount();\n var carouselRange = item.querySelector(\".recipient-detail__carousel-range\");\n var slides = item.querySelectorAll(\".recipient-detail__item\");\n carouselRange.addEventListener(\"input\", function (e) {\n setTimeout(function () {\n glide.go(\"=\" + carouselRange.value);\n }, 500);\n });\n glide.on('move.after', function () {\n var currentIndex = glide.index;\n carouselRange.value = currentIndex.toString();\n });\n setRangeMax_1(slides, carouselRange);\n });\n}\n\n},{\"@glidejs/glide\":51}],11:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar clickDrag_1 = __importDefault(require(\"../../../helpers/clickDrag\"));\nvar dashboardUnverified = document.querySelector('.dashboard-unverified');\nif (dashboardUnverified) {\n var closeButtons = dashboardUnverified.querySelectorAll('.recipient-detail__close');\n var contactsCarousel = dashboardUnverified.querySelector('.dashboard-unverified__carousel');\n var contactsList = dashboardUnverified.querySelector('.dashboard-unverified__contacts-list');\n var handleOverlay_1 = function (card, index, overlays) {\n var activeIndex = index;\n card.addEventListener('click', function () {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n });\n card.addEventListener('keydown', function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', function (e) {\n var targetElement = e.target;\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n }\n });\n }\n };\n closeButtons.forEach(function (button) {\n button.addEventListener('click', function () {\n button.parentElement.parentElement.parentElement.parentElement.classList.remove('recipient-detail__overlay--active');\n });\n });\n if (contactsCarousel) {\n var contactsCarouselCards = contactsCarousel.querySelectorAll('.dashboard-contact');\n var contactsCarouselOverlays_1 = contactsCarousel.querySelectorAll('.recipient-detail__overlay');\n var setRangeMax = function (arr, input) {\n var slidesLength = arr.length;\n var rangeMax = '0';\n rangeMax = (slidesLength - 1).toString();\n input.max = rangeMax;\n setRangeThumbWidth_1(rangeMax, input);\n };\n var setRangeThumbWidth_1 = function (max, input) {\n var width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + 'px');\n if (max === '1') {\n input.style.setProperty('--thumb-size', '47px');\n }\n };\n contactsCarouselCards.forEach(function (card, index) {\n handleOverlay_1(card, index, contactsCarouselOverlays_1);\n });\n var glide_2 = new glide_1.default(contactsCarousel, {\n type: 'slider',\n perView: 1.3,\n gap: 11,\n rewind: false,\n bound: true,\n });\n glide_2.mount();\n var carouselRange_1 = dashboardUnverified.querySelector('.dashboard-unverified__range');\n var slides = contactsCarousel.querySelectorAll('.dashboard-contact');\n carouselRange_1.addEventListener('input', function () {\n setTimeout(function () {\n glide_2.go(\"=\" + carouselRange_1.value);\n }, 500);\n });\n glide_2.on('move.after', function () {\n var currentIndex = glide_2.index;\n carouselRange_1.value = currentIndex;\n });\n setRangeMax(slides, carouselRange_1);\n }\n if (contactsList) {\n var contactCards = contactsList.querySelectorAll('.dashboard-contact');\n var contactCardsOverlays_1 = contactsList.querySelectorAll('.recipient-detail__overlay');\n contactCards.forEach(function (card, index) {\n handleOverlay_1(card, index, contactCardsOverlays_1);\n });\n }\n clickDrag_1.default('.dashboard-unverified__links');\n}\n\n},{\"../../../helpers/clickDrag\":1,\"@glidejs/glide\":51}],12:[function(require,module,exports){\nvar featureDownloadButton = document.querySelector(\".feature-with-media__button\");\nif (featureDownloadButton) {\n var featureDownloadMedia_1 = function (url, fileName) {\n var anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = fileName;\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n };\n var onDownloadButtonClick = function () {\n var mediaUrl = featureDownloadButton.getAttribute(\"data-url\");\n var mediaFileName = featureDownloadButton.getAttribute(\"data-label\");\n featureDownloadMedia_1(mediaUrl, mediaFileName);\n };\n featureDownloadButton.addEventListener('click', onDownloadButtonClick);\n}\n\n},{}],13:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar individualUpload_1 = __importDefault(require(\"../../../helpers/individualUpload\"));\nvar individualAuthProof = document.querySelectorAll(\".individual-auth__proof\");\nvar individualAuthDocumentTypes = document.querySelectorAll(\".document-type\");\nif (individualAuthProof.length > 0 && individualAuthDocumentTypes.length > 0) {\n var individualAuth_1 = document.querySelector(\".individual-auth\");\n var individualAuthRight_1 = document.querySelector(\".individual-auth__right\");\n var individualAuthLeft_1 = document.querySelector(\".individual-auth__left\");\n var individualAuthButton = document.querySelector(\".individual-auth__button\");\n var individualAuthProofDocs_1 = document.querySelectorAll(\".individual-auth__proof-docs\");\n var individualAuthUploadButtons_1 = document.querySelectorAll(\".individual-auth__upload-button\");\n var individualAuthUploadWrappers_1 = document.querySelectorAll(\".individual-upload__wrapper\");\n if (window.innerWidth > 992) {\n individualAuthProof[0].classList.add(\"individual-auth__proof--active\");\n individualAuthDocumentTypes[0].classList.add(\"document-type--active\");\n }\n var resetIndividualAuthCards_1 = function () {\n individualAuthDocumentTypes.forEach(function (card) {\n card.classList.remove(\"document-type--active\");\n });\n individualAuthProof.forEach(function (item) {\n item.classList.remove(\"individual-auth__proof--active\");\n });\n individualAuthRight_1.classList.remove(\"individual-auth__right--active\");\n individualAuthLeft_1.classList.remove(\"individual-auth__left--hidden\");\n };\n var resetIndividualAuthDocs_1 = function () {\n individualAuthProofDocs_1.forEach(function (card) {\n card.classList.remove(\"individual-auth__proof-docs--active\");\n });\n };\n var individualAuthRightScroll_1 = function () {\n var topOffset = 70;\n var elementTop = individualAuthRight_1.getBoundingClientRect().top + window.scrollY;\n var scrollPosition = elementTop - topOffset;\n window.scrollTo({ top: scrollPosition, behavior: 'smooth' });\n };\n var showActiveIndividualProof_1 = function (item, index) {\n resetIndividualAuthCards_1();\n item.classList.add(\"document-type--active\");\n individualAuthProof[index].classList.add(\"individual-auth__proof--active\");\n individualAuthRight_1.classList.add(\"individual-auth__right--active\");\n individualAuthLeft_1.classList.add(\"individual-auth__left--hidden\");\n if (window.innerWidth < 768) {\n individualAuthRightScroll_1();\n }\n };\n var handleProofDocClick_1 = function (doc) {\n var activeIndex = 0;\n individualAuthDocumentTypes.forEach(function (doc, i) {\n if (doc.classList.contains(\"document-type--active\")) {\n activeIndex = i;\n }\n });\n individualAuthUploadButtons_1[activeIndex].removeAttribute(\"disabled\");\n resetIndividualAuthDocs_1();\n doc.classList.add(\"individual-auth__proof-docs--active\");\n individualAuthUploadButtons_1[activeIndex].addEventListener(\"click\", function () {\n individualAuthUploadWrappers_1.forEach(function (item) {\n item.classList.remove(\"individual-upload__wrapper--active\");\n });\n var individualAuthUploadWrapperActive = doc.nextElementSibling;\n individualAuthUploadWrapperActive.classList.add(\"individual-upload__wrapper--active\");\n var individualUploadLeftActive = document.querySelector(\".individual-upload__wrapper--active .individual-upload__left\");\n individualAuth_1.style.height = individualUploadLeftActive.scrollHeight + \"px\";\n individualUpload_1.default();\n var topOffset = 70;\n var upload = document.querySelector(\".individual-upload__wrapper--active .individual-upload__left\");\n var elementTop = upload.getBoundingClientRect().top + window.scrollY;\n var scrollPosition = elementTop - topOffset;\n window.scrollTo({ top: scrollPosition, behavior: 'smooth' });\n });\n };\n individualAuthButton.addEventListener(\"click\", function () {\n resetIndividualAuthCards_1();\n });\n individualAuthDocumentTypes.forEach(function (card, i) {\n card.addEventListener(\"click\", function () {\n showActiveIndividualProof_1(card, i);\n });\n });\n individualAuthDocumentTypes.forEach(function (card, i) {\n card.addEventListener(\"keydown\", function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === \"Enter\") {\n showActiveIndividualProof_1(card, i);\n }\n });\n });\n individualAuthProofDocs_1.forEach(function (card, i) {\n card.addEventListener(\"click\", function () {\n handleProofDocClick_1(card);\n });\n card.addEventListener(\"keydown\", function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === \"Enter\") {\n handleProofDocClick_1(card);\n }\n });\n });\n}\n\n},{\"../../../helpers/individualUpload\":3}],14:[function(require,module,exports){\nvar loginCountry = document.querySelector(\".login-country\");\nif (loginCountry) {\n var countryItems_1 = loginCountry.querySelectorAll(\".login-country__item\");\n var nextButton_1 = loginCountry.querySelector(\".button\");\n var activeCountry_1 = document.querySelector(\".login-country__item.active\");\n var countryInput_1 = document.getElementById('selectedCountry');\n var toggleCountry_1 = function (elm) {\n var _a;\n if (elm == activeCountry_1)\n return;\n activeCountry_1 === null || activeCountry_1 === void 0 ? void 0 : activeCountry_1.classList.remove(\"login-country__item--active\");\n activeCountry_1 = elm;\n activeCountry_1.classList.add(\"login-country__item--active\");\n var activeCountryName = ((_a = activeCountry_1.querySelector(\".login-country__item-name\")) === null || _a === void 0 ? void 0 : _a.textContent) || \"\";\n countryInput_1.value = activeCountryName.trim();\n nextButton_1.disabled = false;\n };\n var hookListeners = function () {\n countryItems_1.forEach(function (item) {\n item.addEventListener(\"click\", function (e) {\n var target = e.target.closest(\".login-country__item\");\n toggleCountry_1(target);\n });\n });\n };\n document.addEventListener(\"DOMContentLoaded\", hookListeners);\n}\n\n},{}],15:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar forgotPassForm = document.querySelector(\".individual-forgot-pass__form\");\nif (forgotPassForm) {\n var forgotEmailInput_1 = document.querySelector(\".individual-forgot-pass__email\");\n var forgotEmailValidation_1 = document.querySelector(\".individual-forgot-pass__validation-email\");\n var resetForgotPasswordValidation_1 = function () {\n forgotEmailValidation_1.classList.remove(\"individual-forgot-pass__validation--active\");\n };\n forgotEmailInput_1.addEventListener(\"input\", function () {\n forgotEmailValidation_1.classList.remove(\"individual-forgot-pass__validation--active\");\n });\n forgotPassForm.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n resetForgotPasswordValidation_1();\n formValues = {\n email: forgotEmailInput_1.value,\n };\n if (!forgotEmailInput_1.value) {\n forgotEmailValidation_1.classList.add(\"individual-forgot-pass__validation--active\");\n }\n if (forgotEmailInput_1.value) {\n resetForgotPasswordValidation_1();\n }\n else {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n\n},{}],16:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dateMaxValue_1 = __importDefault(require(\"../../../helpers/dateMaxValue\"));\nvar individualProfileForm = document.querySelector(\".individual-profile__form\");\nif (individualProfileForm) {\n var firstNameInput_1 = document.querySelector(\".individual-profile__first-name\");\n var middleNameInput_1 = document.querySelector(\".individual-profile__middle-name\");\n var lastNameInput_1 = document.querySelector(\".individual-profile__last-name\");\n var dateInput_1 = document.querySelector(\".individual-profile__dob\");\n var dateInputOverlay_1 = document.querySelector(\".individual-profile__dob-overlay\");\n var dateInputIcon_1 = document.querySelector(\".individual-profile__dob-icon-container\");\n var countryInput_1 = document.querySelector(\".individual-profile__country\");\n var firstNameValidation_1 = document.querySelector(\".individual-profile__validation-first-name\");\n var middleNameValidation_1 = document.querySelector(\".individual-profile__validation-middle-name\");\n var lastNameValidation_1 = document.querySelector(\".individual-profile__validation-last-name\");\n var dateValidation_1 = document.querySelector(\".individual-profile__validation-dob\");\n var countryValidation_1 = document.querySelector(\".individual-profile__validation-country\");\n var isFormValid_1 = false;\n var resetIndividualProfileValidation_1 = function () {\n firstNameValidation_1.classList.remove(\"individual-profile__validation--active\");\n middleNameValidation_1.classList.remove(\"individual-profile__validation--active\");\n lastNameValidation_1.classList.remove(\"individual-profile__validation--active\");\n dateValidation_1.classList.remove(\"individual-profile__validation--active\");\n countryValidation_1.classList.remove(\"individual-profile__validation--active\");\n };\n var resetForm = function () {\n firstNameInput_1.value = \"\";\n lastNameInput_1.value = \"\";\n middleNameInput_1.value = \"\";\n dateInput_1.value = \"\";\n countryInput_1.value = \"\";\n countryInput_1.classList.remove(\"individual-profile__country--active\");\n dateInput_1.classList.remove(\"individual-profile__dob--active\");\n };\n var nameValidation_1 = function (name) {\n var regex = /^[\\u0600-\\u06FFa-zA-Z\\s'-]+$/;\n return regex.test(name);\n };\n var validateForm_1 = function () {\n isFormValid_1 = true;\n if (!firstNameInput_1.value || !nameValidation_1(firstNameInput_1.value)) {\n firstNameValidation_1.classList.add(\"individual-profile__validation--active\");\n firstNameValidation_1.textContent = \"First name is required and must contain only letters\";\n isFormValid_1 = false;\n }\n if (middleNameInput_1.value && !nameValidation_1(middleNameInput_1.value)) {\n middleNameValidation_1.classList.add(\"individual-profile__validation--active\");\n middleNameValidation_1.textContent = \"Middle name must contain only letters\";\n isFormValid_1 = false;\n }\n if (!lastNameInput_1.value || !nameValidation_1(lastNameInput_1.value)) {\n lastNameValidation_1.classList.add(\"individual-profile__validation--active\");\n lastNameValidation_1.textContent = \"Last name is required and must contain only letters\";\n isFormValid_1 = false;\n }\n if (!dateInput_1.value) {\n dateValidation_1.classList.add(\"individual-profile__validation--active\");\n isFormValid_1 = false;\n }\n if (!countryInput_1.value) {\n countryValidation_1.classList.add(\"individual-profile__validation--active\");\n isFormValid_1 = false;\n }\n return isFormValid_1;\n };\n var handleDateClick_1 = function () {\n try {\n dateInput_1.showPicker();\n }\n catch (error) {\n console.log(error.message);\n }\n };\n var listenForInputChanges = function () {\n firstNameInput_1.addEventListener(\"input\", function () {\n firstNameValidation_1.classList.remove(\"individual-profile__validation--active\");\n });\n lastNameInput_1.addEventListener(\"input\", function () {\n lastNameValidation_1.classList.remove(\"individual-profile__validation--active\");\n });\n dateInput_1.addEventListener(\"click\", function () {\n handleDateClick_1();\n });\n dateInputIcon_1.addEventListener(\"click\", function () {\n handleDateClick_1();\n });\n dateInput_1.addEventListener(\"input\", function () {\n dateInput_1.classList.add(\"individual-profile__dob--active\");\n dateValidation_1.classList.remove(\"individual-profile__validation--active\");\n dateInputOverlay_1.classList.add(\"individual-profile__dob-overlay--hidden\");\n });\n countryInput_1.addEventListener(\"input\", function () {\n countryValidation_1.classList.remove(\"individual-profile__validation--active\");\n countryInput_1.classList.add(\"individual-profile__country--active\");\n });\n };\n listenForInputChanges();\n dateInput_1.setAttribute(\"max\", dateMaxValue_1.default());\n individualProfileForm.addEventListener(\"submit\", function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n resetIndividualProfileValidation_1();\n formValues = {\n firstName: firstNameInput_1.value,\n middleName: middleNameInput_1.value,\n lastName: lastNameInput_1.value,\n dateOfBirth: dateInput_1.value,\n countryOfBirth: countryInput_1.value,\n };\n validateForm_1();\n if (isFormValid_1) {\n isFormValid_1 = false;\n }\n else {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n\n},{\"../../../helpers/dateMaxValue\":2}],17:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],18:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar individualResetPassword = document.querySelector(\".individual-reset-pass__form\");\nif (individualResetPassword) {\n var passwordInput_1 = document.querySelector(\".individual-reset-pass__password\");\n var passwordAgainInput_1 = document.querySelector(\".individual-reset-pass__password-again\");\n var passwordAgainValidation_1 = document.querySelector(\".individual-reset-pass__validation-password-again\");\n var criteriaItems_1 = individualResetPassword.querySelectorAll(\".individual-reset-pass__item\");\n var showPasswordButtons = individualResetPassword.querySelectorAll(\".zmdi-eye\");\n var hidePasswordButtons = individualResetPassword.querySelectorAll(\".zmdi-eye-off\");\n var validations_1 = [false, false, false, false, false];\n var formValidation_1 = {\n password: false\n };\n var isSubmitClickedFirstTime_1 = false;\n var showValidationMessage_1 = function () {\n if (isSubmitClickedFirstTime_1) {\n passwordAgainValidation_1.classList.add(\"individual-reset-pass__validation--active\");\n }\n };\n var removeValidationMessage_1 = function () {\n passwordAgainValidation_1.classList.remove(\"individual-reset-pass__validation--active\");\n };\n var validatePassword_1 = function (password) {\n validations_1 = [false, false, false, false, false];\n if (password.length > 5) {\n validations_1[0] = true;\n }\n if (/(?=.*[a-z])/.test(password)) {\n validations_1[1] = true;\n }\n if (/(?=.*[A-Z])/.test(password)) {\n validations_1[2] = true;\n }\n if (/(?=.*\\d)/.test(password)) {\n validations_1[3] = true;\n }\n if (/(?=.*[!@#$&*])/.test(password)) {\n validations_1[4] = true;\n }\n var isPasswordValid = false;\n if (passwordInput_1.value === passwordAgainInput_1.value && validations_1.every(function (val) { return val === true; })) {\n isPasswordValid = true;\n removeValidationMessage_1();\n }\n else {\n showValidationMessage_1();\n }\n if (!isPasswordValid) {\n formValidation_1.password = false;\n }\n else {\n formValidation_1.password = true;\n }\n return isPasswordValid ? \"Password is valid.\" : validations_1;\n };\n var resetCriteriaItems_1 = function () {\n criteriaItems_1.forEach(function (item) {\n item.classList.remove(\"individual-reset-pass__item--active\");\n });\n };\n showPasswordButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n button.previousElementSibling.setAttribute(\"type\", \"text\");\n button.classList.remove(\"zmdi-eye--active\");\n button.nextElementSibling.classList.add(\"zmdi-eye-off--active\");\n });\n });\n hidePasswordButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n button.previousElementSibling.previousElementSibling.setAttribute(\"type\", \"password\");\n button.classList.remove(\"zmdi-eye-off--active\");\n button.previousElementSibling.classList.add(\"zmdi-eye--active\");\n });\n });\n passwordInput_1.addEventListener(\"input\", function () {\n validatePassword_1(passwordInput_1.value);\n for (var i = 0; i < criteriaItems_1.length; i++) {\n if (validations_1[i] === true) {\n criteriaItems_1[i].classList.add(\"individual-reset-pass__item--active\");\n }\n else {\n criteriaItems_1[i].classList.remove(\"individual-reset-pass__item--active\");\n }\n }\n });\n passwordAgainInput_1.addEventListener(\"input\", function () {\n validatePassword_1(passwordAgainInput_1.value);\n });\n individualResetPassword.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n isSubmitClickedFirstTime_1 = true;\n if (passwordInput_1.value !== passwordAgainInput_1.value) {\n showValidationMessage_1();\n }\n formValues = {\n password: passwordInput_1.value,\n };\n if (formValidation_1.password === true) {\n console.log(formValues);\n validations_1 = [false, false, false, false, false];\n formValidation_1 = {\n password: false\n };\n resetCriteriaItems_1();\n }\n else {\n console.log(\"Form is NOT valid\");\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n\n},{}],19:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar signUpIndividual = document.querySelector('.sign-in-details__form');\nif (signUpIndividual) {\n var emailInput_1 = document.querySelector('.sign-in-details__email');\n var passwordInput_1 = document.querySelector('.sign-in-details__password');\n var passwordAgainInput_1 = document.querySelector('.sign-in-details__password-again');\n var passwordAgainValidation_1 = document.querySelector('.sign-in-details__validation-password-again');\n var signUpIndividualEmailValidation_1 = document.querySelector('.sign-in-details__validation-email');\n var criteriaItems_1 = signUpIndividual.querySelectorAll('.sign-in-details__item');\n var showPasswordButtons = signUpIndividual.querySelectorAll('.zmdi-eye');\n var hidePasswordButtons = signUpIndividual.querySelectorAll('.zmdi-eye-off');\n var regexPattern_1 = signUpIndividual.getAttribute(\"pattern\") || null;\n var conditions_1 = [];\n var validations_1 = [false];\n var formValidation_1 = {\n email: false,\n password: false,\n };\n var recaptcha = false;\n window.recaptcha = false;\n var isSubmitClickedFirstTime_1 = false;\n var extractConditions_1 = function (regexPattern) {\n validations_1 = [false];\n conditions_1 = [];\n conditions_1 = regexPattern.match(new RegExp(\"\\\\(\\\\?=(.*?)\\\\)|\\\\(\\\\?!(.*?)\\\\)|\\\\(\\\\?<=(.*?)\\\\)|\\\\(\\\\?<(.*?)\\\\)\", \"g\"));\n conditions_1 = conditions_1.filter(function (condition) { return condition !== null; });\n conditions_1.map(function (condition) { return validations_1.push(false); });\n };\n var showValidationMessage_1 = function () {\n if (isSubmitClickedFirstTime_1) {\n passwordAgainValidation_1.classList.add(\"sign-in-details__validation--active\");\n }\n };\n var removeValidationMessage_1 = function () {\n passwordAgainValidation_1.classList.remove(\"sign-in-details__validation--active\");\n };\n var validateEmail_1 = function (email) {\n if (String(email)\n .toLowerCase()\n .match(/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z0-9\\-]*[a-zA-Z][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}))$/)) {\n signUpIndividualEmailValidation_1.classList.remove(\"sign-in-details__validation--active\");\n formValidation_1.email = true;\n }\n else {\n signUpIndividualEmailValidation_1.classList.add(\"sign-in-details__validation--active\");\n formValidation_1.email = false;\n }\n };\n function validateRecaptcha() {\n window.recaptcha = true;\n }\n window.validateRecaptcha = validateRecaptcha;\n var validatePassword_1 = function (password) {\n extractConditions_1(regexPattern_1);\n if (password.length > 5) {\n validations_1[0] = true;\n }\n conditions_1.forEach(function (cond, index) {\n if (new RegExp(cond).test(password)) {\n validations_1[index + 1] = true;\n }\n });\n var isPasswordValid = false;\n if (passwordInput_1.value && validations_1.every(function (val) { return val === true; })) {\n isPasswordValid = true;\n removeValidationMessage_1();\n resetCriteriaItems_1();\n }\n else {\n showValidationMessage_1();\n }\n if (isPasswordValid) {\n formValidation_1.password = true;\n }\n else {\n formValidation_1.password = false;\n }\n return isPasswordValid ? \"Password is valid.\" : validations_1;\n };\n var resetCriteriaItems_1 = function () {\n criteriaItems_1.forEach(function (item) {\n item.classList.remove(\"sign-in-details__item--active\");\n });\n };\n showPasswordButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n button.previousElementSibling.setAttribute(\"type\", \"text\");\n button.classList.remove(\"zmdi-eye--active\");\n button.nextElementSibling.classList.add(\"zmdi-eye-off--active\");\n });\n });\n hidePasswordButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n button.previousElementSibling.previousElementSibling.setAttribute(\"type\", \"password\");\n button.classList.remove(\"zmdi-eye-off--active\");\n button.previousElementSibling.classList.add(\"zmdi-eye--active\");\n });\n });\n emailInput_1.addEventListener(\"input\", function () {\n if (isSubmitClickedFirstTime_1) {\n validateEmail_1(emailInput_1.value);\n }\n });\n passwordInput_1.addEventListener(\"input\", function () {\n validatePassword_1(passwordInput_1.value);\n for (var i = 0; i < criteriaItems_1.length; i++) {\n if (validations_1[i] === true) {\n criteriaItems_1[i].classList.add(\"sign-in-details__item--active\");\n }\n else {\n criteriaItems_1[i].classList.remove(\"sign-in-details__item--active\");\n }\n }\n });\n passwordAgainInput_1.addEventListener(\"input\", function () {\n removeValidationMessage_1();\n });\n signUpIndividual.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n isSubmitClickedFirstTime_1 = true;\n if (passwordInput_1.value !== passwordAgainInput_1.value) {\n showValidationMessage_1();\n }\n validateEmail_1(emailInput_1.value);\n formValues = {\n email: emailInput_1.value,\n password: passwordInput_1.value,\n };\n if (formValidation_1.email === true\n && formValidation_1.password === true\n && passwordInput_1.value === passwordAgainInput_1.value\n && window.recaptcha === true) {\n formValidation_1 = {\n email: false,\n password: false\n };\n resetCriteriaItems_1();\n }\n else {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n if (regexPattern_1) {\n extractConditions_1(regexPattern_1);\n }\n}\n\n},{}],20:[function(require,module,exports){\nvar keyFactCardTitles = document.querySelectorAll('.key-facts__card-title');\nvar numberRegex = /\\d+\\.?\\d*/;\nkeyFactCardTitles.forEach(function (title) {\n var match = title.innerText.match(numberRegex);\n if (!match)\n return;\n var targetCount = parseFloat(match[0]);\n var currentCount = 0;\n var increment = targetCount < 10 ? 0.1 : 10;\n var isCountUpComplete = false;\n var isCountUpRunning = false;\n var observer = new IntersectionObserver(function (entries) {\n if (entries[0].isIntersecting && !isCountUpComplete && !isCountUpRunning) {\n isCountUpRunning = true;\n var interval_1 = setInterval(function () {\n if (targetCount === 0) {\n currentCount = targetCount;\n }\n else {\n currentCount = +(currentCount + increment).toFixed(1);\n }\n title.innerText = title.innerText.replace(numberRegex, currentCount.toString());\n if (currentCount >= targetCount) {\n clearInterval(interval_1);\n isCountUpComplete = true;\n isCountUpRunning = false;\n }\n }, 100);\n }\n });\n observer.observe(title);\n});\n\n},{}],21:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar loginForm = document.querySelector(\".login__form\");\nif (loginForm) {\n var resetLoginValidation_1 = function () {\n loginForm.querySelectorAll(\".login__validation--active\").forEach(function (node) {\n node.classList.remove(\"login__validation--active\");\n });\n };\n var usernameInput_1 = document.querySelector(\".login__username\");\n var passwordInput_1 = document.querySelector(\".login__password\");\n var loginUsernameValidation_1 = document.querySelector(\".login__validation-username\");\n var loginPasswordValidation_1 = document.querySelector(\".login__validation-password\");\n usernameInput_1.addEventListener(\"input\", function () {\n loginUsernameValidation_1.classList.remove(\"login__validation--active\");\n });\n passwordInput_1.addEventListener(\"input\", function () {\n loginPasswordValidation_1.classList.remove(\"login__validation--active\");\n });\n loginForm.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n resetLoginValidation_1();\n if (!usernameInput_1.value) {\n loginUsernameValidation_1.classList.add(\"login__validation--active\");\n }\n if (!passwordInput_1.value) {\n loginPasswordValidation_1.classList.add(\"login__validation--active\");\n }\n if (!(usernameInput_1.value && passwordInput_1.value)) {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n(function () {\n var rotatingElementLogin = document.querySelector('.login__image');\n var lastScrollTop = 0;\n if (rotatingElementLogin) {\n rotatingElementLogin.addEventListener('mouseover', function () {\n window.addEventListener('scroll', handleLoginScroll);\n });\n }\n function handleLoginScroll() {\n var scrollPos = window.scrollY;\n var rotation = (scrollPos - lastScrollTop) / 2;\n var translateZ = Math.max(0, scrollPos / 30);\n rotation = Math.min(Math.max(rotation, -20), 10);\n rotatingElementLogin.style.transform = \"rotateY(\" + rotation + \"deg) rotateX(\" + rotation + \"deg) translateZ(\" + translateZ + \"px)\";\n lastScrollTop = scrollPos;\n }\n})();\n\n},{}],22:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar mediaCarousels = document.querySelectorAll(\".media-carousel__carousel-inner\");\nif (mediaCarousels.length > 0) {\n var mediaCarouselsArray = Array.from(mediaCarousels) || [];\n mediaCarouselsArray.forEach(function (item) {\n var glide = new glide_1.default(item, {\n type: 'carousel',\n perView: 1.779,\n gap: 20,\n rewind: true,\n bound: true,\n focusAt: \"center\",\n breakpoints: {\n 480: {\n perView: 1.357,\n },\n }\n });\n glide.mount();\n });\n}\n\n},{\"@glidejs/glide\":51}],23:[function(require,module,exports){\nvar mobileMenuIcon = document.querySelector(\".menu-mobile__icon\");\nvar mobileMenuIconContainer = document.querySelector(\".menu-mobile__icon-container\");\nvar mobileMenuButton = document.querySelector(\".menu-mobile__icon-container\");\nvar mobileMenuBackButton = document.querySelector(\".menu-mobile__back\");\nvar getInTouchButton = document.querySelector(\".menu-mobile__button\");\nvar mobileMenuOverlay = document.querySelector(\".menu-mobile__overlay\");\nvar mobileMenuNested = document.querySelector(\".menu-mobile__nested\");\nvar html = document.querySelector(\"html\");\nif (mobileMenuIconContainer) {\n mobileMenuIconContainer.addEventListener(\"click\", function (e) {\n if (mobileMenuIcon.classList.contains(\"menu-mobile__icon--open\")) {\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\");\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\");\n setTimeout(function () {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\");\n }, 500);\n html.style.overflow = \"auto\";\n }\n else {\n mobileMenuIcon.classList.add(\"menu-mobile__icon--open\");\n mobileMenuOverlay.classList.add(\"menu-mobile__overlay--active\");\n html.style.overflow = \"hidden\";\n }\n });\n}\nif (mobileMenuButton) {\n mobileMenuButton.addEventListener(\"keydown\", function (e) {\n if (e.key === \"Enter\") {\n if (mobileMenuIcon.classList.contains(\"menu-mobile__icon--open\")) {\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\");\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\");\n setTimeout(function () {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\");\n }, 500);\n html.style.overflow = \"auto\";\n }\n else {\n mobileMenuIcon.classList.add(\"menu-mobile__icon--open\");\n mobileMenuOverlay.classList.add(\"menu-mobile__overlay--active\");\n html.style.overflow = \"hidden\";\n }\n }\n });\n}\nif (mobileMenuOverlay) {\n mobileMenuOverlay.addEventListener(\"keydown\", function (e) {\n if (e.key === \"Escape\") {\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\");\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\");\n setTimeout(function () {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\");\n }, 500);\n html.style.overflow = \"auto\";\n }\n });\n mobileMenuOverlay.addEventListener(\"click\", function (e) {\n var targetElement = e.target;\n if (targetElement.className === \"menu-mobile__overlay menu-mobile__overlay--active\") {\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\");\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\");\n setTimeout(function () {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\");\n }, 500);\n html.style.overflow = \"auto\";\n }\n });\n}\nif (getInTouchButton) {\n getInTouchButton.addEventListener(\"click\", function (e) {\n mobileMenuNested.classList.add(\"menu-mobile__nested--active\");\n });\n}\nif (mobileMenuBackButton) {\n mobileMenuBackButton.addEventListener(\"click\", function (e) {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\");\n });\n}\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar mobileMenuPlatform = document.querySelector('.menu-mobile-platform__container');\nif (mobileMenuPlatform) {\n var mobileMenuOverlayPlatform_1 = document.querySelector('.menu-mobile-platform__overlay');\n var mobileMenuIconPlatform_1 = document.querySelector('.menu-mobile-platform__icon');\n var mobileMenuIconContainerPlatform = document.querySelector('.menu-mobile-platform__icon-container');\n var mobileMenuButtonPlatform = document.querySelector('.menu-mobile-platform__icon-container');\n var htmlPlatform_1 = document.querySelector('html');\n var carousel = mobileMenuPlatform.querySelector('.menu-mobile-platform__carousel');\n var cards = carousel.querySelectorAll('.dashboard-contact');\n var recipientDetailsOverlays_1 = mobileMenuPlatform.querySelectorAll('.recipient-detail__overlay');\n var closeButtons = mobileMenuPlatform.querySelectorAll('.recipient-detail__close');\n var handleOverlay_1 = function (card, index, overlays) {\n var activeIndex = index;\n card.addEventListener('click', function () {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n });\n card.addEventListener('keydown', function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', function (e) {\n var targetElement = e.target;\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n }\n });\n }\n };\n var handleMenuClose_1 = function () {\n mobileMenuIconPlatform_1.classList.remove('menu-mobile-platform__icon--open');\n mobileMenuOverlayPlatform_1.classList.remove('menu-mobile-platform__overlay--active');\n htmlPlatform_1.style.overflow = 'auto';\n };\n var handleShowMenu_1 = function () {\n mobileMenuIconPlatform_1.classList.add('menu-mobile-platform__icon--open');\n mobileMenuOverlayPlatform_1.classList.add('menu-mobile-platform__overlay--active');\n htmlPlatform_1.style.overflow = 'hidden';\n };\n mobileMenuOverlayPlatform_1.addEventListener('keydown', function (e) {\n if (e.key === 'Escape') {\n handleMenuClose_1();\n }\n });\n mobileMenuOverlayPlatform_1.addEventListener('click', function (e) {\n var targetElement = e.target;\n if (targetElement.className === 'menu-mobile-platform__overlay menu-mobile-platform__overlay--active') {\n handleMenuClose_1();\n }\n });\n if (carousel) {\n var glide = new glide_1.default(carousel, {\n type: 'slider',\n perView: 1.3,\n gap: 10,\n rewind: false,\n bound: false,\n });\n glide.mount();\n cards.forEach(function (card, index) {\n handleOverlay_1(card, index, recipientDetailsOverlays_1);\n });\n closeButtons.forEach(function (button) {\n button.addEventListener('click', function () {\n button.parentElement.parentElement.parentElement.parentElement.classList.remove('recipient-detail__overlay--active');\n });\n });\n }\n if (mobileMenuIconContainerPlatform) {\n mobileMenuIconContainerPlatform.addEventListener('click', function (e) {\n if (mobileMenuIconPlatform_1.classList.contains('menu-mobile-platform__icon--open')) {\n handleMenuClose_1();\n }\n else {\n handleShowMenu_1();\n }\n });\n }\n if (mobileMenuButtonPlatform) {\n mobileMenuButtonPlatform.addEventListener('keydown', function (e) {\n if (e.key === 'Enter') {\n if (mobileMenuIconPlatform_1.classList.contains('menu-mobile-platform__icon--open')) {\n handleMenuClose_1();\n }\n else {\n handleShowMenu_1();\n }\n }\n });\n }\n}\n\n},{\"@glidejs/glide\":51}],25:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = __importDefault(require(\"axios\"));\nvar account = document.querySelector(\".account__wrapper\");\nif (account) {\n var type_1 = null;\n var conditions_1 = [];\n var validations_1 = [false];\n var validationMessages_1 = [\n \"Must be at least 6 characters long. \",\n \"Must have at least one lowercase letter. \",\n \"Must have at least one uppercase letter. \",\n \"Must include a number. \",\n \"Must include any of the following symbols: !@#$&*.\"\n ];\n var changeButtons = account.querySelectorAll(\".account__button\");\n var closeButtons = account.querySelectorAll(\".account-slider__close\");\n var overlays_1 = account.querySelectorAll(\".account-slider__overlay\");\n var passwordInputs_1 = account.querySelectorAll(\".account-slider__password\");\n var passwordOldInput_1 = document.querySelector('.account-slider__password-old');\n var passwordOldValidation_1 = document.querySelector('.account-slider__validation-password-old');\n var passwordNewInput_1 = document.querySelector('.account-slider__password-new');\n var passwordNewValidation_1 = document.querySelector('.account-slider__validation-password-new');\n var passwordAgainInput_1 = document.querySelector('.account-slider__password-again');\n var passwordAgainValidation_1 = document.querySelector('.account-slider__validation-password-again');\n var photoValidation_1 = document.querySelector('.account-slider__validation-photo');\n var showPasswordButtons = account.querySelectorAll('.zmdi-eye');\n var hidePasswordButtons = account.querySelectorAll('.zmdi-eye-off');\n var countryDropdown_1 = document.querySelector('#account-slider__country');\n var countryOptions_1 = countryDropdown_1 === null || countryDropdown_1 === void 0 ? void 0 : countryDropdown_1.querySelectorAll('option');\n var currencyDropdown_1 = document.querySelector('.account-slider__currency');\n var currencyOptions_1 = currencyDropdown_1 === null || currencyDropdown_1 === void 0 ? void 0 : currencyDropdown_1.querySelectorAll('option');\n var uploadInput = document.querySelector('.account__upload-input');\n var forms = account.querySelectorAll(\".account-slider__form\");\n var passwordForm = account.querySelector(\".account-slider__password-form\");\n var regexPattern = passwordForm.getAttribute(\"pattern\") || null;\n var notification_1 = account.querySelector(\".account__notify\");\n var submitButtons_1 = account.querySelectorAll(\".button__label\");\n var accountImages_1 = document.querySelectorAll(\".account__image\");\n var isLoading_1 = false;\n var successElm_1 = account.querySelector(\".account__notify--success\");\n var failElm_1 = account.querySelector(\".account__notify--fail\");\n var currentCountryElm_1 = account.querySelector(\"#currentResidenceCountry\");\n var currentCurrencyElm_1 = account.querySelector(\"#currentCurrency\");\n var closeOverlays_1 = function () {\n overlays_1.forEach(function (item) { return item.classList.remove(\"account-slider__overlay--active\"); });\n setTimeout(function () {\n clearForm_1();\n resetValidations_1();\n }, 500);\n };\n var resetValidations_1 = function () {\n passwordOldValidation_1.classList.remove(\"account-slider__validation--active\");\n passwordNewValidation_1.classList.remove(\"account-slider__validation--active\");\n passwordAgainValidation_1.classList.remove(\"account-slider__validation--active\");\n photoValidation_1.classList.remove(\"account-slider__validation--active\");\n };\n var validatePasswords_1 = function () {\n if (!passwordOldInput_1.value) {\n passwordOldValidation_1.classList.add(\"account-slider__validation--active\");\n passwordOldValidation_1.textContent = \"This field cannot be empty\";\n return false;\n }\n if (!passwordNewInput_1.value) {\n passwordNewValidation_1.classList.add(\"account-slider__validation--active\");\n passwordNewValidation_1.textContent = \"This field cannot be empty\";\n return false;\n }\n if (!passwordAgainInput_1.value) {\n passwordAgainValidation_1.classList.add(\"account-slider__validation--active\");\n passwordAgainValidation_1.textContent = \"This field cannot be empty\";\n return false;\n }\n if (passwordNewInput_1.value !== passwordAgainInput_1.value) {\n passwordNewValidation_1.classList.add(\"account-slider__validation--active\");\n passwordNewValidation_1.textContent = \"The passwords do not match.\";\n passwordAgainValidation_1.classList.add(\"account-slider__validation--active\");\n passwordAgainValidation_1.textContent = \"The passwords do not match.\";\n return false;\n }\n return true;\n };\n var showPhotoValidations_1 = function () {\n photoValidation_1.classList.add(\"account-slider__validation--active\");\n };\n var validatePhoto_1 = function (file) {\n if (file && file.size <= 5000000) {\n return true;\n }\n showPhotoValidations_1();\n return false;\n };\n var clearForm_1 = function () {\n passwordInputs_1.forEach(function (input) { return input.value = \"\"; });\n };\n var updateButtons_1 = function () {\n submitButtons_1.forEach(function (button) { return button.disabled = isLoading_1; });\n };\n var updateMessages_1 = function (success) {\n if (success) {\n failElm_1.classList.remove(\"active\");\n successElm_1.classList.add(\"active\");\n }\n else if (success === false) {\n failElm_1.classList.add(\"active\");\n successElm_1.classList.remove(\"active\");\n }\n else if (isLoading_1) {\n failElm_1.classList.remove(\"active\");\n successElm_1.classList.remove(\"active\");\n }\n };\n var updateUI_1 = function (success) {\n updateButtons_1();\n updateMessages_1(success);\n if (success) {\n clearForm_1();\n closeOverlays_1();\n }\n else if (success === false) {\n closeOverlays_1();\n }\n };\n var enableOptions_1 = function (options, currentOptionIdx) {\n options.forEach(function (option) {\n option.disabled = false;\n option.style.color = \"#000\";\n });\n options[currentOptionIdx].disabled = true;\n options[currentOptionIdx].style.color = \"rgba(0, 0, 0, 0.5)\";\n };\n var updateCurrency_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var payload, response, data, exception_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isLoading_1 = true;\n updateUI_1();\n payload = {\n currencyName: currencyDropdown_1.value\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, axios_1.default.post(\"/api/member/updatePreferredCurrency\", payload)];\n case 2:\n response = _a.sent();\n data = response.data;\n isLoading_1 = false;\n updateUI_1(data.success);\n if (data.success) {\n enableOptions_1(currencyOptions_1, currencyDropdown_1.selectedIndex);\n currentCurrencyElm_1.textContent = currencyDropdown_1.options[currencyDropdown_1.selectedIndex].text;\n }\n return [3, 4];\n case 3:\n exception_1 = _a.sent();\n updateUI_1(false);\n console.log(exception_1);\n return [3, 4];\n case 4: return [2];\n }\n });\n }); };\n var updateCountry_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var payload, response, data, exception_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isLoading_1 = true;\n updateUI_1();\n payload = {\n country: countryDropdown_1.value\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, axios_1.default.post(\"/api/member/updateResidenceCountry\", payload)];\n case 2:\n response = _a.sent();\n data = response.data;\n isLoading_1 = false;\n updateUI_1(data.success);\n if (data.success) {\n enableOptions_1(countryOptions_1, countryDropdown_1.selectedIndex);\n currentCountryElm_1.textContent = countryDropdown_1.options[countryDropdown_1.selectedIndex].text;\n }\n return [3, 4];\n case 3:\n exception_2 = _a.sent();\n updateUI_1(false);\n console.log(exception_2);\n return [3, 4];\n case 4: return [2];\n }\n });\n }); };\n var updatePassword_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var payload, response, data, exception_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isLoading_1 = true;\n updateUI_1();\n payload = {\n currentPassword: passwordOldInput_1.value,\n newPassword: passwordNewInput_1.value\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, axios_1.default.post(\"/api/member/updatePassword\", payload)];\n case 2:\n response = _a.sent();\n data = response.data;\n isLoading_1 = false;\n if (!data.success) {\n passwordOldValidation_1.classList.add(\"account-slider__validation--active\");\n passwordOldValidation_1.textContent = data.message;\n updateUI_1();\n }\n else {\n updateUI_1(true);\n }\n return [3, 4];\n case 3:\n exception_3 = _a.sent();\n updateUI_1(false);\n console.log(exception_3);\n return [3, 4];\n case 4: return [2];\n }\n });\n }); };\n var updateProfilePicture_1 = function (file) { return __awaiter(void 0, void 0, void 0, function () {\n var payload, response, data, exception_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isLoading_1 = true;\n updateUI_1();\n payload = new FormData();\n payload.append(\"profilePicture\", file);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, axios_1.default.post(\"/api/member/updateProfilePicture\", payload)];\n case 2:\n response = _a.sent();\n data = response.data;\n isLoading_1 = false;\n updateUI_1(data.success);\n if (data.success) {\n accountImages_1.forEach(function (img) {\n img.src = URL.createObjectURL(file);\n img.classList.remove(\"navbar-platform__avatar--default\");\n img.classList.remove(\"account__image--default\");\n });\n }\n return [3, 4];\n case 3:\n exception_4 = _a.sent();\n updateUI_1(false);\n console.log(exception_4);\n return [3, 4];\n case 4: return [2];\n }\n });\n }); };\n var handlePasswordSubmit_1 = function (e) {\n e.preventDefault();\n resetValidations_1();\n if (validatePasswords_1() && validateRegexPassword_1(passwordNewInput_1.value)) {\n updatePassword_1();\n }\n };\n var handleCountrySubmit_1 = function (e) {\n e.preventDefault();\n updateCountry_1();\n };\n var handleCurrencySubmit_1 = function (e) {\n e.preventDefault();\n updateCurrency_1();\n };\n var handlePhotoSubmit_1 = function (e, file) {\n e.preventDefault();\n resetValidations_1();\n if (validatePhoto_1(file)) {\n updateProfilePicture_1(file);\n }\n };\n var validateRegexPassword_1 = function (password) {\n if (password && (password === null || password === void 0 ? void 0 : password.length) > 5) {\n validations_1[0] = true;\n }\n conditions_1.forEach(function (cond, index) {\n if (new RegExp(cond).test(password)) {\n validations_1[index + 1] = true;\n }\n });\n var isPasswordValid = false;\n if (validations_1.every(function (val) { return val === true; })) {\n isPasswordValid = true;\n }\n else {\n isPasswordValid = false;\n showRegexPasswordValidationMessage_1();\n }\n return isPasswordValid;\n };\n var showRegexPasswordValidationMessage_1 = function () {\n var validationMessage = validations_1\n .map(function (isValid, index) { return !isValid ? validationMessages_1[index] : \"\"; })\n .filter(function (msg) { return msg; })\n .join(\" \");\n if (validations_1.every(function (val) { return val === true; })) {\n return;\n }\n else {\n passwordNewValidation_1.classList.add(\"account-slider__validation--active\");\n passwordNewValidation_1.textContent = validationMessage;\n return;\n }\n };\n var extractConditions = function (regexPattern) {\n conditions_1 = regexPattern.match(/\\(\\?=(.*?)\\)|\\(\\?!(.*?)\\)|\\(\\?<=(.*?)\\)|\\(\\?<(.*?)\\)/g);\n conditions_1 = conditions_1.filter(function (condition) { return condition !== null; });\n conditions_1.map(function (condition) { return validations_1.push(false); });\n };\n var hideNotification = function () {\n var time = notification_1.getAttribute(\"data-timeout\");\n if (time) {\n setTimeout(function () {\n notification_1.classList.remove(\"account__notify--fail\");\n notification_1.classList.remove(\"account__notify--success\");\n }, +time);\n }\n };\n uploadInput.addEventListener('change', function (e) {\n var target = e.target;\n var file = target.files[0];\n handlePhotoSubmit_1(e, file);\n });\n overlays_1.forEach(function (item) {\n item.addEventListener(\"click\", function (e) {\n var target = e.target;\n if (target.classList.contains(\"account-slider__overlay--active\"))\n closeOverlays_1();\n });\n });\n closeButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n closeOverlays_1();\n });\n });\n changeButtons.forEach(function (button, index) {\n button.addEventListener(\"click\", function () {\n button.nextElementSibling.classList.add(\"account-slider__overlay--active\");\n if (button.classList.contains(\"account__button-password\")) {\n type_1 = \"password\";\n }\n else if (button.classList.contains(\"account__button-country\")) {\n type_1 = \"country\";\n }\n else if (button.classList.contains(\"account__button-currency\")) {\n type_1 = \"currency\";\n }\n });\n });\n document.addEventListener('keydown', function (event) {\n if (event.key === 'Escape') {\n closeOverlays_1();\n }\n });\n showPasswordButtons.forEach(function (button) {\n button.addEventListener('click', function () {\n button.previousElementSibling.setAttribute('type', 'text');\n button.classList.remove('zmdi-eye--active');\n button.nextElementSibling.classList.add('zmdi-eye-off--active');\n });\n });\n hidePasswordButtons.forEach(function (button) {\n button.addEventListener('click', function () {\n button.previousElementSibling.previousElementSibling.setAttribute('type', 'password');\n button.classList.remove('zmdi-eye-off--active');\n button.previousElementSibling.classList.add('zmdi-eye--active');\n });\n });\n passwordOldInput_1.addEventListener(\"input\", function () {\n resetValidations_1();\n });\n passwordNewInput_1.addEventListener(\"input\", function () {\n resetValidations_1();\n });\n passwordAgainInput_1.addEventListener(\"input\", function () {\n resetValidations_1();\n });\n forms.forEach(function (form) {\n form.addEventListener(\"submit\", function (e) {\n switch (type_1) {\n case \"password\":\n handlePasswordSubmit_1(e);\n break;\n case \"country\":\n handleCountrySubmit_1(e);\n break;\n case \"currency\":\n handleCurrencySubmit_1(e);\n break;\n default:\n null;\n }\n });\n });\n if (regexPattern) {\n extractConditions(regexPattern);\n }\n if (notification_1.classList.contains(\"account__notify--fail\") || notification_1.classList.contains(\"account__notify--success\")) {\n hideNotification();\n }\n}\n\n},{\"axios\":52}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],27:[function(require,module,exports){\nvar sendFundsButton = document.querySelector(\".navbar__button-funds\");\nvar sendFunds = document.querySelector(\".send-funds__overlay\");\nvar sendFundsMobileButton = document.querySelector(\".navbar__sticky-button\");\nvar htmlElement = document.documentElement;\nvar navbar = document.querySelector(\".navbar\");\nvar pageLinkCurrent = function (link) {\n var currentUrl = window.location.pathname.split(\"/\")[1];\n if (currentUrl) {\n return link.includes(currentUrl);\n }\n return false;\n};\nif (sendFundsButton) {\n sendFundsButton.addEventListener(\"click\", function (e) {\n if (sendFunds.classList.contains(\"send-funds__overlay--open\")) {\n sendFunds.classList.remove(\"send-funds__overlay--active\");\n htmlElement.style.overflow = \"auto\";\n }\n else {\n sendFunds.classList.add(\"send-funds__overlay--active\");\n htmlElement.style.overflow = \"hidden\";\n }\n });\n}\nif (sendFundsMobileButton) {\n sendFundsMobileButton.addEventListener(\"click\", function (e) {\n if (sendFunds.classList.contains(\"send-funds__overlay--open\")) {\n sendFunds.classList.remove(\"send-funds__overlay--active\");\n htmlElement.style.overflow = \"auto\";\n }\n else {\n sendFunds.classList.add(\"send-funds__overlay--active\");\n htmlElement.style.overflow = \"hidden\";\n }\n });\n}\nif (navbar) {\n var links = navbar.querySelectorAll(\".navbar__links-item .link\");\n links.forEach(function (link) {\n var href = link.href;\n if (pageLinkCurrent(href)) {\n link.classList.add(\"link--active\");\n }\n });\n}\n\n},{}],28:[function(require,module,exports){\n\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar axios_1 = __importDefault(require(\"axios\"));\nvar newPaymentComponent = document.querySelector(\".new-pay__wrapper\");\nif (newPaymentComponent) {\n var searchInput_1 = newPaymentComponent.querySelector(\".new-pay__form-desktop .new-pay__search\");\n var searchInputMobile_1 = newPaymentComponent.querySelector(\".new-pay__form-mobile .new-pay__search\");\n var newPaymentContacts_1 = newPaymentComponent.querySelector(\".new-pay__contacts-list\");\n var newPaymentRecipients_1 = newPaymentComponent.querySelector(\".new-pay__recipients-list\");\n var newPaymentCarousel = newPaymentComponent.querySelector(\".new-pay__recipients-carousel\");\n var newPayAmountText_1 = newPaymentComponent.querySelector(\".new-pay__number\");\n var recipientCards_1 = newPaymentRecipients_1.querySelectorAll(\".dashboard-contact\");\n var carouselCards_1 = newPaymentCarousel.querySelectorAll(\".dashboard-contact\");\n var loadMoreButton_1 = newPaymentComponent.querySelector(\".new-pay__load\");\n var loader_1 = newPaymentComponent.querySelector(\".payments__loader\");\n var contactDetails_1 = newPaymentComponent.querySelectorAll(\".recipient-detail__overlay\");\n var db_1 = {\n html: \"\",\n hasReachedEnd: false,\n lastId: 0\n };\n var isLoading_1 = false;\n var payload_1 = {\n keyword: \"\",\n lastId: 0,\n pageIncrement: 10\n };\n var handleOverlay_1 = function (card, index, overlays) {\n var activeIndex = index;\n card.addEventListener('click', function () {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n });\n card.addEventListener('keydown', function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', function (e) {\n var targetElement = e.target;\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n }\n });\n }\n };\n var initGlide_1 = function (carousel, carouselRange, slides) {\n carouselRange.addEventListener(\"input\", function () {\n setTimeout(function () {\n glide.go(\"=\" + carouselRange.value);\n }, 500);\n });\n var setRangeMax = function (arr, input) {\n var slidesLength = arr.length;\n var rangeMax = '0';\n rangeMax = (slidesLength - 1).toString();\n input.max = rangeMax;\n setRangeThumbWidth(rangeMax, input);\n };\n var setRangeThumbWidth = function (max, input) {\n var width = 94 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"47px\");\n }\n };\n var glide = new glide_1.default(carousel, {\n type: 'slider',\n perView: 1.37,\n gap: 11,\n rewind: false,\n bound: true,\n });\n glide.mount();\n glide.on('move.after', function () {\n var currentIndex = glide.index;\n carouselRange.value = currentIndex;\n });\n setRangeMax(slides, carouselRange);\n var carouselOverlays = carousel.querySelectorAll('.recipient-detail__overlay');\n carouselCards_1.forEach(function (card, i) {\n handleOverlay_1(card, i, carouselOverlays);\n });\n };\n var init = function () {\n var hookApiListeners = function () {\n var timeoutId;\n var handleSearch = function (e) {\n var target = e.target;\n var str = target.value;\n payload_1.keyword = str;\n payload_1.lastId = 0;\n db_1.html = \"\";\n clearTimeout(timeoutId);\n timeoutId = setTimeout(function () {\n fetchContacts_1();\n }, 1000);\n };\n loadMoreButton_1.addEventListener(\"click\", function () {\n payload_1.lastId = db_1.lastId;\n fetchContacts_1();\n });\n searchInput_1.addEventListener(\"input\", handleSearch);\n searchInputMobile_1.addEventListener(\"input\", handleSearch);\n };\n var carousel = newPaymentComponent.querySelector(\".new-pay__recipients-carousel\");\n var carouselRange = newPaymentComponent.querySelector(\".new-pay__range\");\n var slides = carousel.querySelectorAll(\".dashboard-contact\");\n hookApiListeners();\n initGlide_1(carousel, carouselRange, slides);\n };\n var hookOverlays_1 = function () {\n var contactsCards = newPaymentContacts_1.querySelectorAll(\".dashboard-contact\");\n var closeButtons = newPaymentComponent.querySelectorAll(\".recipient-detail__close\");\n var contactsOverlays = newPaymentContacts_1.querySelectorAll('.recipient-detail__overlay');\n var recipientOverlays = newPaymentRecipients_1.querySelectorAll('.recipient-detail__overlay');\n contactsCards.forEach(function (card, i) {\n handleOverlay_1(card, i, contactsOverlays);\n });\n recipientCards_1.forEach(function (card, i) {\n handleOverlay_1(card, i, recipientOverlays);\n });\n closeButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n contactDetails_1.forEach(function (item) { return item.classList.remove(\"recipient-detail__overlay--active\"); });\n contactsCards.forEach(function (item) { return item.classList.remove(\"recipient-detail__overlay--active\"); });\n });\n });\n contactDetails_1.forEach(function (item) {\n item.addEventListener(\"keydown\", function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === \"Escape\") {\n item.classList.remove(\"recipient-detail__overlay--active\");\n }\n });\n });\n };\n var clearData_1 = function () {\n var paymentsChildren = Array.from(newPaymentContacts_1.children);\n var itemsToKeep = [loadMoreButton_1.className, loader_1.className];\n paymentsChildren.forEach(function (child) {\n if (!itemsToKeep.includes(child.className)) {\n child.remove();\n }\n });\n };\n var refreshVariables_1 = function () {\n newPaymentContacts_1 = newPaymentComponent.querySelector(\".new-pay__contacts-list\");\n contactDetails_1 = newPaymentComponent.querySelectorAll(\".recipient-detail__overlay\");\n };\n var updateUI_1 = function () {\n var _a;\n refreshVariables_1();\n if (isLoading_1) {\n clearData_1();\n refreshVariables_1();\n loadMoreButton_1.classList.add(\"hidden\");\n loader_1.classList.add(\"payments__loader--active\");\n (_a = newPaymentContacts_1.querySelector(\".payments__item-caption\")) === null || _a === void 0 ? void 0 : _a.remove();\n newPayAmountText_1.textContent = \"(0)\";\n }\n else {\n loader_1.classList.remove(\"payments__loader--active\");\n if (!db_1.hasReachedEnd) {\n loadMoreButton_1.classList.remove(\"hidden\");\n }\n if (db_1.html) {\n newPaymentContacts_1.insertAdjacentHTML(\"afterbegin\", db_1.html);\n }\n if (db_1.hasReachedEnd) {\n newPaymentContacts_1.insertAdjacentHTML(\"beforeend\", '
  • End of results
  • ');\n }\n else {\n loadMoreButton_1.classList.remove(\"hidden\");\n }\n refreshVariables_1();\n newPayAmountText_1.textContent = \"(\" + newPaymentContacts_1.querySelectorAll(\".dashboard-contact\").length.toString() + \")\";\n }\n hookOverlays_1();\n };\n var fetchContacts_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var response, error_1, listElement, cardDetails;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (isLoading_1)\n return [2];\n isLoading_1 = true;\n updateUI_1();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, 4, 5]);\n return [4, axios_1.default.get(\"/api/contacts/getAllContacts\", {\n params: __assign({}, payload_1),\n })];\n case 2:\n response = (_a.sent()).data;\n isLoading_1 = false;\n db_1.html += response.html;\n db_1.hasReachedEnd = response.hasReachedEnd;\n db_1.lastId = response.lastId;\n return [3, 5];\n case 3:\n error_1 = _a.sent();\n console.error(error_1);\n return [3, 5];\n case 4:\n updateUI_1();\n hookOverlays_1();\n listElement = newPaymentComponent.querySelector(\".new-pay__contacts-list\");\n cardDetails = listElement.querySelectorAll(\".recipient-detail\");\n cardDetails.forEach(function (item) {\n var carousel = item.querySelector(\".recipient-detail__carousel\");\n var carouselRange = item.querySelector(\".recipient-detail__carousel-range\");\n var slides = item.querySelectorAll(\".recipient-detail__item\");\n initGlide_1(carousel, carouselRange, slides);\n });\n return [7];\n case 5: return [2];\n }\n });\n }); };\n hookOverlays_1();\n init();\n fetchContacts_1();\n}\n\n},{\"@glidejs/glide\":51,\"axios\":52}],29:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = __importDefault(require(\"axios\"));\nvar newRecipientComponent = document.querySelector('.new-recipient__wrapper');\nif (newRecipientComponent) {\n var forms = newRecipientComponent.querySelectorAll('.new-recipient__form');\n var inputs_1 = newRecipientComponent.querySelectorAll('.new-recipient__input');\n var button_1 = newRecipientComponent.querySelector('.new-recipient__button');\n var loader_1 = newRecipientComponent.querySelector('.loader');\n var validStatus_1 = newRecipientComponent.querySelector('.new-recipient__status--valid');\n var invalidStatus_1 = newRecipientComponent.querySelector('.new-recipient__status--invalid');\n var isLoading_1 = false;\n var payload_1 = {\n CardNumber: \"\",\n Cvv: \"\"\n };\n var response_1;\n var reset_1 = function () {\n inputs_1.forEach(function (input) {\n input.classList.remove('new-recipient__input--active');\n input.classList.remove('new-recipient__input--error');\n });\n validStatus_1.classList.remove('new-recipient__status--active');\n invalidStatus_1.classList.remove('new-recipient__status--active');\n button_1.disabled = true;\n };\n var handleValid_1 = function () {\n inputs_1.forEach(function (input) { return input.classList.add('new-recipient__input--active'); });\n validStatus_1.classList.add('new-recipient__status--active');\n button_1.disabled = false;\n return true;\n };\n var handleInvalid_1 = function () {\n inputs_1.forEach(function (input) { return input.classList.add('new-recipient__input--error'); });\n invalidStatus_1.classList.add('new-recipient__status--active');\n button_1.disabled = true;\n return false;\n };\n var showLoader_1 = function () {\n inputs_1.forEach(function (input) { return (input.disabled = true); });\n loader_1.classList.add('loader--active');\n };\n var removeLoader_1 = function () {\n inputs_1.forEach(function (input) { return (input.disabled = false); });\n loader_1.classList.remove('loader--active');\n };\n var getCardPayload_1 = function () {\n var cardNumberInputs = newRecipientComponent.querySelectorAll('.new-recipient__input--card-number');\n var cvvInputs = newRecipientComponent.querySelectorAll('.new-recipient__input--card-cvv');\n var cardNumber = Array.from(cardNumberInputs).map(function (input) { return input.value; }).join('');\n var cvv = Array.from(cvvInputs).map(function (input) { return input.value; }).join('');\n return {\n CardNumber: cardNumber,\n Cvv: cvv\n };\n };\n var updateUI_1 = function () {\n if (isLoading_1) {\n showLoader_1();\n }\n else {\n removeLoader_1();\n if (response_1 === null || response_1 === void 0 ? void 0 : response_1.success) {\n handleValid_1();\n button_1.disabled = true;\n setTimeout(function () {\n window.location.href = response_1.data.url;\n }, 2500);\n }\n else {\n handleInvalid_1();\n }\n }\n };\n var fetchCard_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var request, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (isLoading_1)\n return [2];\n isLoading_1 = true;\n updateUI_1();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, 4, 5]);\n payload_1 = getCardPayload_1();\n return [4, axios_1.default.post('/api/recipients/getRecipient', payload_1)];\n case 2:\n request = _a.sent();\n response_1 = request.data;\n isLoading_1 = false;\n return [3, 5];\n case 3:\n error_1 = _a.sent();\n console.error(error_1);\n return [3, 5];\n case 4:\n updateUI_1();\n return [7];\n case 5: return [2];\n }\n });\n }); };\n var checkInputs_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var _i, _a, input;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reset_1();\n for (_i = 0, _a = Array.from(inputs_1); _i < _a.length; _i++) {\n input = _a[_i];\n if (!input.value.trim()) {\n button_1.disabled = true;\n return [2, false];\n }\n }\n return [4, fetchCard_1()];\n case 1:\n _b.sent();\n return [2];\n }\n });\n }); };\n forms.forEach(function (form) {\n var codeInputs = form.querySelectorAll('.new-recipient__input');\n codeInputs.forEach(function (input, index) {\n input.addEventListener('input', function (event) {\n var target = event.target;\n var value = target.value;\n value = value.replace(/\\D/g, '');\n if (value.length > 1) {\n value = value.slice(0, 1);\n }\n target.value = value;\n if (index < codeInputs.length - 1 && value) {\n codeInputs[index + 1].focus();\n }\n checkInputs_1();\n });\n input.addEventListener('paste', function (event) { return __awaiter(void 0, void 0, void 0, function () {\n var clipboardText, digits;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n event.preventDefault();\n return [4, navigator.clipboard.readText()];\n case 1:\n clipboardText = _a.sent();\n digits = clipboardText.match(/\\d/g);\n if (digits) {\n digits.forEach(function (digit, i) {\n if (i < codeInputs.length) {\n codeInputs[i].value = digit;\n checkInputs_1();\n }\n });\n }\n return [2];\n }\n });\n }); });\n input.addEventListener('keydown', function (event) {\n var target = event.target;\n var key = event.key;\n if (key === 'Backspace' && index > 0) {\n if (!target.value && index > 0) {\n codeInputs[index - 1].focus();\n }\n }\n });\n });\n });\n}\n\n},{\"axios\":52}],31:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],32:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar newsGridCarousels = document.querySelectorAll(\".news-grid__carousel-inner\");\nvar setRangeMax = function (arr, input) {\n var slidesLength = Array.from(arr).length;\n var rangeMax = '0';\n rangeMax = (slidesLength - 1).toString();\n input.max = rangeMax;\n setRangeThumbWidth(rangeMax, input);\n};\nvar setRangeThumbWidth = function (max, input) {\n var width = 200 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"100px\");\n }\n};\nif (newsGridCarousels.length > 0) {\n var newsGridCarouselsArray = Array.from(newsGridCarousels) || [];\n newsGridCarouselsArray.forEach(function (item) {\n var glide = new glide_1.default(item, {\n type: 'slider',\n perView: 1.24,\n gap: 10,\n rewind: false,\n bound: true,\n });\n glide.mount();\n var carouselRange = item.querySelector(\".news-grid__carousel-range\");\n var slides = item.querySelectorAll(\".news-grid__card\");\n carouselRange.addEventListener(\"input\", function (e) {\n setTimeout(function () {\n glide.go(\"=\" + carouselRange.value);\n }, 500);\n });\n glide.on('move.after', function () {\n var currentIndex = glide.index;\n carouselRange.value = currentIndex;\n });\n setRangeMax(slides, carouselRange);\n });\n}\n\n},{\"@glidejs/glide\":51}],33:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = __importDefault(require(\"axios\"));\nvar newsListing = document.querySelector('.news-listing') || null;\nif (newsListing) {\n var nextButton_1 = document.querySelector('.news-listing__button--next');\n var prevButton_1 = document.querySelector('.news-listing__button--prev');\n var pageId_1 = +document.querySelector('#pageId').value;\n var newsCards_1 = [];\n var pageNumber_1 = 1;\n var pagesCount_1 = 0;\n var isLoading_1 = false;\n var fetchNews_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var payload, response, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n payload = {\n pageNumber: pageNumber_1,\n pageId: pageId_1,\n };\n isLoading_1 = true;\n updateUI_1();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, 4, 5]);\n return [4, axios_1.default.get('/api/newsListing/getNews', {\n params: payload,\n })];\n case 2:\n response = _a.sent();\n newsCards_1 = response.data.newsCards;\n pagesCount_1 = response.data.pagesCount;\n return [3, 5];\n case 3:\n error_1 = _a.sent();\n console.error(error_1);\n return [3, 5];\n case 4:\n isLoading_1 = false;\n updateUI_1();\n return [7];\n case 5: return [2];\n }\n });\n }); };\n var updateCards_1 = function () {\n var grid = document.querySelector('.news-listing__grid');\n grid.innerHTML = '';\n newsCards_1.forEach(function (card) {\n var cardDiv = document.createElement('div');\n cardDiv.classList.add('news-listing__card', 'flex', 'flex--column');\n if (card.imageUrl) {\n var image = document.createElement('img');\n image.classList.add('news-listing__card-image');\n image.src = card.imageUrl;\n image.alt = card.imageAlt;\n cardDiv.appendChild(image);\n }\n if (card.title) {\n var title = document.createElement('h5');\n title.classList.add('news-listing__card-title');\n title.innerText = card.title;\n cardDiv.appendChild(title);\n }\n var cardBottomDiv = document.createElement('div');\n cardBottomDiv.classList.add('news-listing__card-bottom', 'flex', 'flex--row', 'flex--justify-between', 'flex--align-center');\n if (card.readTime) {\n var readTime = document.createElement('p');\n readTime.classList.add('news-listing__card-read');\n readTime.innerText = card.readTime;\n cardBottomDiv.appendChild(readTime);\n }\n var cardButtonText = document.createElement('a');\n cardButtonText.classList.add('news-listing__button', 'flex', 'flex--row', 'flex--justify-center', 'flex--align-center');\n cardButtonText.href = card.url;\n cardButtonText.innerText = card.buttonText;\n var arrowSpan = document.createElement('span');\n arrowSpan.classList.add('zmdi', 'zmdi-long-arrow-right');\n cardButtonText.appendChild(arrowSpan);\n cardBottomDiv.appendChild(cardButtonText);\n cardDiv.appendChild(cardBottomDiv);\n grid.appendChild(cardDiv);\n });\n };\n var hookListeners_1 = function () {\n nextButton_1.addEventListener('click', function () {\n ++pageNumber_1;\n fetchNews_1();\n });\n prevButton_1.addEventListener('click', function () {\n --pageNumber_1;\n fetchNews_1();\n });\n };\n var updatePagination_1 = function () {\n if (isLoading_1) {\n nextButton_1.disabled = prevButton_1.disabled = true;\n }\n else {\n nextButton_1.disabled = pageNumber_1 >= pagesCount_1;\n prevButton_1.disabled = pageNumber_1 === 1;\n }\n };\n var updateUI_1 = function () {\n updateCards_1();\n updatePagination_1();\n };\n var init = function () {\n fetchNews_1();\n hookListeners_1();\n };\n document.addEventListener('DOMContentLoaded', init);\n}\n\n},{\"axios\":52}],34:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],35:[function(require,module,exports){\n\n},{}],36:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar orgDirectorForm = document.querySelector(\".org-director__form\");\nif (orgDirectorForm) {\n var resetValidation_1 = function () {\n validations_1.forEach(function (item) {\n item.classList.remove(\"org-director__validation--active\");\n });\n };\n var inputs = orgDirectorForm.querySelectorAll(\".org-director__input\");\n var validations_1 = orgDirectorForm.querySelectorAll(\".org-director__validation\");\n var director1Input_1 = document.querySelector(\".org-director__director-1\");\n var director2Input_1 = document.querySelector(\".org-director__director-2\");\n var director3Input_1 = document.querySelector(\".org-director__director-3\");\n var director1Validation_1 = document.querySelector(\".org-director__validation-director-1\");\n inputs.forEach(function (input) {\n input.addEventListener(\"input\", function () {\n input.nextElementSibling.classList.remove(\"org-director__validation--active\");\n });\n });\n orgDirectorForm.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n resetValidation_1();\n formValues = {\n director1: director1Input_1.value,\n director2: director2Input_1.value,\n director3: director3Input_1.value,\n };\n if (!director1Input_1.value) {\n director1Validation_1.classList.add(\"org-director__validation--active\");\n }\n if (director1Input_1.value) {\n resetValidation_1();\n }\n else {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n\n},{}],37:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar orgManualEntryForm = document.querySelector(\".org-manual-entry__form\");\nif (orgManualEntryForm) {\n var nameInput_1 = document.querySelector(\".org-manual-entry__name\");\n var numberInput_1 = document.querySelector(\".org-manual-entry__number\");\n var address1Input_1 = document.querySelector(\".org-manual-entry__address-1\");\n var address2Input_1 = document.querySelector(\".org-manual-entry__address-2\");\n var address3Input_1 = document.querySelector(\".org-manual-entry__address-3\");\n var postcodeInput_1 = document.querySelector(\".org-manual-entry__postcode\");\n var countryInput_1 = document.querySelector(\".org-manual-entry__country\");\n var nameValidation_1 = document.querySelector(\".org-manual-entry__validation-name\");\n var numberValidation_1 = document.querySelector(\".org-manual-entry__validation-number\");\n var address1Validation_1 = document.querySelector(\".org-manual-entry__validation-address-1\");\n var postcodeValidation_1 = document.querySelector(\".org-manual-entry__validation-postcode\");\n var countryValidation_1 = document.querySelector(\".org-manual-entry__validation-country\");\n var isFormValid_1 = false;\n var resetValidation_1 = function () {\n nameValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n numberValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n address1Validation_1.classList.remove(\"org-manual-entry__validation--active\");\n postcodeValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n countryValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n };\n var resetForm = function () {\n nameInput_1.value = \"\";\n numberInput_1.value = \"\";\n address1Input_1.value = \"\";\n address2Input_1.value = \"\";\n address3Input_1.value = \"\";\n postcodeInput_1.value = \"\";\n countryInput_1.value = \"\";\n };\n var validateForm_1 = function () {\n if (!nameInput_1.value) {\n nameValidation_1.classList.add(\"org-manual-entry__validation--active\");\n }\n if (!numberInput_1.value) {\n numberValidation_1.classList.add(\"org-manual-entry__validation--active\");\n }\n if (!address1Input_1.value) {\n address1Validation_1.classList.add(\"org-manual-entry__validation--active\");\n }\n if (!postcodeInput_1.value) {\n postcodeValidation_1.classList.add(\"org-manual-entry__validation--active\");\n }\n if (!countryInput_1.value) {\n countryValidation_1.classList.add(\"org-manual-entry__validation--active\");\n }\n if (nameInput_1.value && numberInput_1.value && address1Input_1.value && postcodeInput_1.value && countryInput_1.value) {\n isFormValid_1 = true;\n }\n };\n var listenForInputChanges = function () {\n nameInput_1.addEventListener(\"input\", function () {\n nameValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n });\n numberInput_1.addEventListener(\"input\", function () {\n numberValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n });\n address1Input_1.addEventListener(\"input\", function () {\n address1Validation_1.classList.remove(\"org-manual-entry__validation--active\");\n });\n postcodeInput_1.addEventListener(\"input\", function () {\n postcodeValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n });\n countryInput_1.addEventListener(\"input\", function () {\n countryValidation_1.classList.remove(\"org-manual-entry__validation--active\");\n });\n };\n listenForInputChanges();\n orgManualEntryForm.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n resetValidation_1();\n formValues = {\n name: nameInput_1.value,\n number: numberInput_1.value,\n address1: address1Input_1.value,\n address2: address2Input_1.value,\n address3: address3Input_1.value,\n postcode: postcodeInput_1.value,\n country: countryInput_1.value,\n };\n validateForm_1();\n if (isFormValid_1) {\n resetValidation_1();\n isFormValid_1 = false;\n }\n else {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n\n},{}],38:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dateMaxValue_1 = __importDefault(require(\"../../../helpers/dateMaxValue\"));\nvar orgProfileMemberForm = document.querySelector(\".org-member-profile__form\");\nif (orgProfileMemberForm) {\n var firstNameInput_1 = orgProfileMemberForm.querySelector(\".org-member-profile__first-name\");\n var middleNameInput_1 = orgProfileMemberForm.querySelector(\".org-member-profile__middle-name\");\n var lastNameInput_1 = orgProfileMemberForm.querySelector(\".org-member-profile__last-name\");\n var dateInput_1 = orgProfileMemberForm.querySelector(\".org-member-profile__dob\");\n var countryInput_1 = orgProfileMemberForm.querySelector(\".org-member-profile__country\");\n var validations_1 = orgProfileMemberForm.querySelectorAll(\".org-member-profile__validation\");\n var firstNameValidation_1 = orgProfileMemberForm.querySelector(\".org-member-profile__validation-first-name\");\n var middleNameValidation_1 = orgProfileMemberForm.querySelector(\".org-member-profile__validation-middle-name\");\n var lastNameValidation_1 = orgProfileMemberForm.querySelector(\".org-member-profile__validation-last-name\");\n var dateValidation_1 = orgProfileMemberForm.querySelector(\".org-member-profile__validation-dob\");\n var countryValidation_1 = orgProfileMemberForm.querySelector(\".org-member-profile__validation-country\");\n var isFormValid_1 = false;\n var resetValidation_1 = function () {\n validations_1.forEach(function (item) {\n item.classList.remove(\"org-member-profile__validation--active\");\n });\n };\n var resetForm = function () {\n firstNameInput_1.value = \"\";\n lastNameInput_1.value = \"\";\n middleNameInput_1.value = \"\";\n dateInput_1.value = \"\";\n countryInput_1.value = \"\";\n countryInput_1.classList.remove(\"org-member-profile__country--active\");\n dateInput_1.classList.remove(\"org-member-profile__dob--active\");\n };\n var nameValidation_1 = function (name) {\n var regex = /^[\\u0600-\\u06FFa-zA-Z\\s'-]+$/;\n return regex.test(name);\n };\n var validateForm_1 = function () {\n isFormValid_1 = true;\n if (!firstNameInput_1.value || !nameValidation_1(firstNameInput_1.value)) {\n firstNameValidation_1.classList.add(\"org-member-profile__validation--active\");\n firstNameValidation_1.textContent = \"First name is required and must contain only letters\";\n isFormValid_1 = false;\n }\n if (middleNameInput_1.value && !nameValidation_1(middleNameInput_1.value)) {\n middleNameValidation_1.classList.add(\"org-member-profile__validation--active\");\n middleNameValidation_1.textContent = \"Middle name must contain only letters\";\n isFormValid_1 = false;\n }\n if (!lastNameInput_1.value || !nameValidation_1(lastNameInput_1.value)) {\n lastNameValidation_1.classList.add(\"org-member-profile__validation--active\");\n lastNameValidation_1.textContent = \"Last name is required and must contain only letters\";\n isFormValid_1 = false;\n }\n if (!dateInput_1.value) {\n dateValidation_1.classList.add(\"org-member-profile__validation--active\");\n isFormValid_1 = false;\n }\n if (!countryInput_1.value) {\n countryValidation_1.classList.add(\"org-member-profile__validation--active\");\n isFormValid_1 = false;\n }\n return isFormValid_1;\n };\n var listenForInputChanges = function () {\n firstNameInput_1.addEventListener(\"input\", function () {\n firstNameValidation_1.classList.remove(\"org-member-profile__validation--active\");\n });\n lastNameInput_1.addEventListener(\"input\", function () {\n lastNameValidation_1.classList.remove(\"org-member-profile__validation--active\");\n });\n dateInput_1.addEventListener(\"input\", function () {\n dateInput_1.classList.add(\"org-member-profile__dob--active\");\n dateValidation_1.classList.remove(\"org-member-profile__validation--active\");\n });\n countryInput_1.addEventListener(\"input\", function () {\n countryValidation_1.classList.remove(\"org-member-profile__validation--active\");\n countryInput_1.classList.add(\"org-member-profile__country--active\");\n });\n };\n listenForInputChanges();\n dateInput_1.setAttribute(\"max\", dateMaxValue_1.default());\n orgProfileMemberForm.addEventListener(\"submit\", function (e) { return __awaiter(void 0, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n resetValidation_1();\n formValues = {\n firstName: firstNameInput_1.value,\n middleName: middleNameInput_1.value,\n lastName: lastNameInput_1.value,\n dateOfBirth: dateInput_1.value,\n countryOfBirth: countryInput_1.value,\n };\n validateForm_1();\n if (isFormValid_1) {\n isFormValid_1 = false;\n }\n else {\n e.preventDefault();\n }\n return [2];\n });\n }); });\n}\n\n},{\"../../../helpers/dateMaxValue\":2}],39:[function(require,module,exports){\nvar orgProfile = document.querySelector(\".org-profile__wrapper\");\nif (orgProfile) {\n var orgProfileCards_1 = document.querySelectorAll(\".org-profile__card\");\n var orgProfileForms_1 = document.querySelectorAll(\".org-profile__form\");\n var orgProfileButton_1 = document.querySelector(\".org-profile__next\");\n var resetRegisterCards_1 = function () {\n orgProfileCards_1.forEach(function (card) {\n card.classList.remove(\"org-profile__card--active\");\n });\n orgProfileForms_1.forEach(function (card) {\n card.classList.remove(\"org-profile__form--active\");\n });\n };\n var getCorrectInputs_1 = function () {\n var activeForm = orgProfile.querySelector(\".org-profile__form--active\");\n var inputName = activeForm.querySelector(\".org-profile__name\");\n var inputNumber = activeForm.querySelector(\".org-profile__number\");\n var isBusinessNameValid = false;\n var isBusinessNumberValid = false;\n var numberValidation = function (name) {\n var regex = /^\\d+$/;\n return regex.test(name);\n };\n var validateBusinessName = function (input) {\n var parent = input.parentElement;\n var orgProfileNameValidation = parent.querySelector(\".org-profile__validation-business-name\");\n if (input.value.length > 0) {\n orgProfileNameValidation.classList.remove(\"org-profile__validation--active\");\n isBusinessNameValid = true;\n }\n else {\n orgProfileNameValidation.classList.add(\"org-profile__validation--active\");\n isBusinessNameValid = false;\n }\n };\n var validateBusinessNumber = function (input) {\n var parent = input.parentElement;\n var orgProfileNumberValidation = parent.querySelector(\".org-profile__validation-business-number\");\n if (input.value.length > 0 && numberValidation(input.value)) {\n orgProfileNumberValidation.classList.remove(\"org-profile__validation--active\");\n isBusinessNumberValid = true;\n }\n else {\n orgProfileNumberValidation.classList.add(\"org-profile__validation--active\");\n isBusinessNumberValid = false;\n }\n };\n var toggleSubmitButton = function () {\n if (isBusinessNameValid && isBusinessNumberValid) {\n orgProfileButton_1.disabled = false;\n }\n else {\n orgProfileButton_1.disabled = true;\n }\n };\n inputName.addEventListener(\"input\", function (e) {\n var target = e.target;\n validateBusinessName(target);\n toggleSubmitButton();\n });\n inputNumber.addEventListener(\"input\", function (e) {\n var target = e.target;\n validateBusinessNumber(target);\n toggleSubmitButton();\n });\n };\n var setActiveCard_1 = function (item, index) {\n resetRegisterCards_1();\n item.classList.add(\"org-profile__card--active\");\n orgProfileForms_1[index].classList.add(\"org-profile__form--active\");\n getCorrectInputs_1();\n };\n if (orgProfileCards_1.length > 0) {\n orgProfileCards_1[0].classList.add(\"org-profile__card--active\");\n orgProfileForms_1[0].classList.add(\"org-profile__form--active\");\n getCorrectInputs_1();\n orgProfileCards_1.forEach(function (card, i) {\n card.addEventListener(\"click\", function () {\n setActiveCard_1(card, i);\n });\n card.addEventListener(\"keydown\", function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === \"Enter\") {\n setActiveCard_1(card, i);\n }\n });\n });\n document.querySelector(\".org-profile__next\").addEventListener(\"click\", function (e) {\n e.preventDefault();\n var activeForm = document.querySelector(\".org-profile__form--active\");\n activeForm.submit();\n });\n }\n}\n\n},{}],40:[function(require,module,exports){\nvar orgProfileConfirmComponent = document.querySelector(\".org-profile-confirm__wrapper\");\nif (orgProfileConfirmComponent) {\n var directors_1 = orgProfileConfirmComponent.querySelectorAll(\".org-profile-confirm__card\");\n var continueButton_1 = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__next\");\n var selectDirectors_1 = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__select\");\n var selectedNumber_1 = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__number\");\n var cardsContainer_1 = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__cards\");\n var maxDirectors_1 = 3;\n var moreThanThree = directors_1.length > maxDirectors_1;\n var selectedItems_1 = [];\n var selectedNames_1 = [];\n var director0_1 = document.querySelector('input[name=\"Director0\"]');\n var director1_1 = document.querySelector('input[name=\"Director1\"]');\n var director2_1 = document.querySelector('input[name=\"Director2\"]');\n var handleItems_1 = function (enableAll) {\n if (enableAll === void 0) { enableAll = false; }\n if (enableAll) {\n directors_1.forEach(function (item) {\n item.style.pointerEvents = \"all\";\n item.setAttribute(\"tabindex\", \"0\");\n });\n }\n else if (!enableAll) {\n directors_1.forEach(function (item) {\n var radio = item.querySelector(\".org-profile-confirm__card-radio\");\n if (!radio.checked) {\n item.style.pointerEvents = \"none\";\n item.setAttribute(\"tabindex\", \"-1\");\n }\n });\n }\n };\n var handleDirectorClick_1 = function (item, index) {\n var radio = item.querySelector(\".org-profile-confirm__card-radio\");\n var name = item.querySelector(\".org-profile-confirm__card-title\").textContent.trim();\n if (selectedItems_1.length < maxDirectors_1 && !radio.checked) {\n radio.checked = true;\n selectedItems_1.push(index);\n selectedNames_1.push(name);\n if (selectedNames_1.length > 0)\n director0_1.value = selectedNames_1[0];\n if (selectedNames_1.length > 1)\n director1_1.value = selectedNames_1[1];\n if (selectedNames_1.length > 2)\n director2_1.value = selectedNames_1[2];\n }\n else if (radio.checked) {\n radio.checked = false;\n selectedItems_1.splice(selectedItems_1.indexOf(index), 1);\n selectedNames_1.splice(selectedNames_1.indexOf(name), 1);\n }\n if (selectedItems_1.length > (maxDirectors_1 - 1)) {\n continueButton_1.disabled = false;\n handleItems_1();\n }\n else {\n continueButton_1.disabled = true;\n handleItems_1(true);\n }\n selectedNumber_1.textContent = selectedItems_1.length.toString() + \"/\" + maxDirectors_1.toString();\n if (selectedItems_1.length === maxDirectors_1) {\n continueButton_1.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n };\n var showMoreThanThreeContent = function () {\n cardsContainer_1.classList.add(\"org-profile-confirm__cards-select\");\n selectDirectors_1.classList.add(\"org-profile-confirm__select--active\");\n };\n if (moreThanThree) {\n continueButton_1.disabled = true;\n showMoreThanThreeContent();\n directors_1.forEach(function (item, index) {\n item.classList.add(\"org-profile-confirm__card-alt\");\n item.addEventListener(\"click\", function () {\n handleDirectorClick_1(item, index);\n });\n item.addEventListener(\"keydown\", function (event) {\n if (event.key === \"Enter\") {\n handleDirectorClick_1(item, index);\n }\n });\n });\n }\n}\n\n},{}],41:[function(require,module,exports){\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar _this = this;\nvar signUpOrganisation = document.querySelector(\".sign-in-details__form-organisation\");\nif (signUpOrganisation) {\n var emailInput_1 = document.querySelector(\".sign-in-details__email\");\n var passwordInput_1 = document.querySelector(\".sign-in-details__password\");\n var passwordAgainInput_1 = document.querySelector(\".sign-in-details__password-again\");\n var passwordAgainValidation_1 = document.querySelector(\".sign-in-details__validation-password-again\");\n var signUpOrganisationEmailValidation_1 = document.querySelector(\".sign-in-details__validation-email\");\n var criteriaItems_1 = signUpOrganisation.querySelectorAll(\".sign-in-details__item\");\n var showPasswordButtons = signUpOrganisation.querySelectorAll(\".zmdi-eye\");\n var hidePasswordButtons = signUpOrganisation.querySelectorAll(\".zmdi-eye-off\");\n var regexPattern_1 = signUpOrganisation.getAttribute(\"pattern\") || null;\n var conditions_1 = [];\n var validations_1 = [false];\n var formValidation_1 = {\n email: false,\n password: false\n };\n var recaptcha = false;\n window.recaptcha = false;\n var isSubmitClickedFirstTime_1 = false;\n var extractConditions_1 = function (regexPattern) {\n validations_1 = [false];\n conditions_1 = [];\n conditions_1 = regexPattern.match(/\\(\\?=(.*?)\\)|\\(\\?!(.*?)\\)|\\(\\?<=(.*?)\\)|\\(\\?<(.*?)\\)/g);\n conditions_1 = conditions_1.filter(function (condition) { return condition !== null; });\n conditions_1.map(function (condition) { return validations_1.push(false); });\n };\n var showValidationMessage_1 = function () {\n if (isSubmitClickedFirstTime_1) {\n passwordAgainValidation_1.classList.add(\"sign-in-details__validation--active\");\n }\n };\n var removeValidationMessage_1 = function () {\n passwordAgainValidation_1.classList.remove(\"sign-in-details__validation--active\");\n };\n var validateEmail_1 = function (email) {\n if (String(email)\n .toLowerCase()\n .match(/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/)) {\n signUpOrganisationEmailValidation_1.classList.remove(\"sign-in-details__validation--active\");\n formValidation_1.email = true;\n }\n else {\n signUpOrganisationEmailValidation_1.classList.add(\"sign-in-details__validation--active\");\n formValidation_1.email = false;\n }\n };\n function validateRecaptcha() {\n window.recaptcha = true;\n }\n window.validateRecaptcha = validateRecaptcha;\n var validatePassword_1 = function (password) {\n extractConditions_1(regexPattern_1);\n if (password.length > 5) {\n validations_1[0] = true;\n }\n conditions_1.forEach(function (cond, index) {\n if (new RegExp(cond).test(password)) {\n validations_1[index + 1] = true;\n }\n });\n var isPasswordValid = false;\n if (passwordInput_1.value && validations_1.every(function (val) { return val === true; })) {\n isPasswordValid = true;\n removeValidationMessage_1();\n resetCriteriaItems_1();\n }\n else {\n showValidationMessage_1();\n }\n if (isPasswordValid) {\n formValidation_1.password = true;\n }\n else {\n formValidation_1.password = false;\n }\n return isPasswordValid ? \"Password is valid.\" : validations_1;\n };\n var resetCriteriaItems_1 = function () {\n criteriaItems_1.forEach(function (item) {\n item.classList.remove(\"sign-in-details__item--active\");\n });\n };\n showPasswordButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n button.previousElementSibling.setAttribute(\"type\", \"text\");\n button.classList.remove(\"zmdi-eye--active\");\n button.nextElementSibling.classList.add(\"zmdi-eye-off--active\");\n });\n });\n hidePasswordButtons.forEach(function (button) {\n button.addEventListener(\"click\", function () {\n button.previousElementSibling.previousElementSibling.setAttribute(\"type\", \"password\");\n button.classList.remove(\"zmdi-eye-off--active\");\n button.previousElementSibling.classList.add(\"zmdi-eye--active\");\n });\n });\n emailInput_1.addEventListener(\"input\", function () {\n if (isSubmitClickedFirstTime_1) {\n validateEmail_1(emailInput_1.value);\n }\n });\n passwordInput_1.addEventListener(\"input\", function () {\n validatePassword_1(passwordInput_1.value);\n for (var i = 0; i < criteriaItems_1.length; i++) {\n if (validations_1[i] === true) {\n criteriaItems_1[i].classList.add(\"sign-in-details__item--active\");\n }\n else {\n criteriaItems_1[i].classList.remove(\"sign-in-details__item--active\");\n }\n }\n });\n passwordAgainInput_1.addEventListener(\"input\", function () {\n removeValidationMessage_1();\n });\n signUpOrganisation.addEventListener(\"submit\", function (e) { return __awaiter(_this, void 0, void 0, function () {\n var formValues;\n return __generator(this, function (_a) {\n isSubmitClickedFirstTime_1 = true;\n if (passwordInput_1.value !== passwordAgainInput_1.value) {\n showValidationMessage_1();\n }\n validateEmail_1(emailInput_1.value);\n formValues = {\n email: emailInput_1.value,\n password: passwordInput_1.value,\n };\n if (formValidation_1.email === true\n && formValidation_1.password === true\n && passwordInput_1.value === passwordAgainInput_1.value\n && window.recaptcha === true) {\n formValidation_1 = {\n email: false,\n password: false\n };\n resetCriteriaItems_1();\n }\n else {\n e.preventDefault();\n window.recaptcha = false;\n }\n return [2];\n });\n }); });\n if (regexPattern_1) {\n extractConditions_1(regexPattern_1);\n }\n}\n\n},{}],42:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = __importDefault(require(\"axios\"));\nvar paymentsComponent = document.querySelector('.payments__wrapper');\nif (paymentsComponent) {\n var paymentsList_1 = paymentsComponent.querySelector('.payments__list');\n var paymentsRight_1 = paymentsComponent.querySelector('.payments__right');\n var searchInput_1 = paymentsComponent.querySelector('.payments__search');\n var paymentDates_1 = paymentsComponent.querySelector('.payments__dates');\n var dateInput1_1 = paymentDates_1.querySelector('.payments__date-1');\n var dateInput2_1 = paymentDates_1.querySelector('.payments__date-2');\n var paymentDateButton_1 = paymentsComponent.querySelector('.payments__button');\n var reachedEnd_1 = false;\n var lastTransactionId_1 = 0;\n var increment_1 = 12;\n var fetchingData_1 = false;\n var startDate_1 = null;\n var endDate_1 = null;\n var searchTerm_1 = null;\n var db_1 = [];\n var fetchData_1 = function (isScroll) { return __awaiter(void 0, void 0, void 0, function () {\n var response, newData, scrollThreshold, bottomScrollPosition, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (fetchingData_1 || reachedEnd_1) {\n return [2];\n }\n fetchingData_1 = true;\n showLoader_1();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4, axios_1.default.get(\"/api/payments/getAllPayments\", {\n params: {\n pageIncrement: increment_1,\n lastTransactionId: lastTransactionId_1,\n startDate: startDate_1,\n endDate: endDate_1,\n searchTerm: searchTerm_1\n },\n })];\n case 2:\n response = (_a.sent()).data;\n lastTransactionId_1 = response.lastTransactionId;\n reachedEnd_1 = response.reachedEnd;\n newData = response.transactions;\n db_1.push.apply(db_1, newData);\n generateHtml_1(db_1);\n if (reachedEnd_1) {\n paymentsList_1.innerHTML +=\n '
  • End of results
  • ';\n }\n fetchingData_1 = false;\n hideLoader_1();\n afterData_1();\n if (isScroll) {\n scrollThreshold = 900;\n bottomScrollPosition = paymentsList_1.scrollHeight - scrollThreshold;\n paymentsList_1.scrollTo({ top: bottomScrollPosition, behavior: 'smooth' });\n }\n fetchingData_1 = false;\n return [3, 4];\n case 3:\n error_1 = _a.sent();\n console.log(error_1);\n return [3, 4];\n case 4: return [2];\n }\n });\n }); };\n var generateHtml_1 = function (data) {\n renderList_1(data);\n renderPayment_1(data);\n };\n var renderList_1 = function (data) {\n var container = paymentsList_1;\n if (!container)\n return;\n container.innerHTML =\n '
  • \"loading
  • ';\n data.forEach(function (item) {\n var html = renderListItem_1(item);\n container.innerHTML += html;\n });\n };\n var formatAmount_1 = function (amount) {\n var numericAmount = parseFloat(amount.toString().replace(/[^0-9.-]+/g, ''));\n return numericAmount.toFixed(2);\n };\n var formatAmountWithCurrency_1 = function (item) {\n var formattedAmount = formatAmount_1(item.amount.value);\n var currencySymbol = item.amount.currencySymbol;\n return formattedAmount.includes(currencySymbol) ? formattedAmount : \"\" + currencySymbol + formattedAmount;\n };\n var renderListItem_1 = function (item) {\n var status = item.status || \"\";\n item.amount.value = formatAmountWithCurrency_1(item);\n var html = \"\\n
  • \\n

    \" + item.title + \"

    \\n
    \\n

    \" + item.amount.value + \"

    \\n\\n \" + (status === \"delivered\" ? (\"\\n
    \\n \\n
    \\n \") : \"\") + \"\\n\\n \" + (status === \"rejected\" ? (\"\\n
    \\n \\n
    \\n \") : \"\") + \"\\n\\n \" + (status === \"in progress\" ? (\"\\n
    \\n
    \\n
    \\n
    \\n
    \\n \") : \"\") + \"\\n\\n \" + (status === \"pending\" ? (\"\\n
    \\n
    \\n
    \\n
    \\n
    \\n \") : \"\") + \"\\n\\n

    \" + item.dateValue + \"

    \\n
    \\n \\n
  • \\n\";\n return html;\n };\n var renderPayment_1 = function (data) {\n var container = paymentsRight_1;\n if (!container)\n return;\n container.innerHTML = '';\n data.forEach(function (item) {\n var html = renderPaymentItem_1(item);\n container.innerHTML += html;\n });\n };\n var renderPaymentItem_1 = function (item) {\n var payAgainText = paymentsRight_1.getAttribute('data-pay-again');\n var receiptText = paymentsRight_1.getAttribute('data-receipt');\n var paymentTitle = paymentsRight_1.getAttribute('data-pay-title');\n var paymentCaption = paymentsRight_1.getAttribute('data-pay-caption');\n var transferPurposeTitle = paymentsRight_1.getAttribute('data-purpose');\n var sentText = paymentsRight_1.getAttribute('data-sent');\n var exchangeRateText = paymentsRight_1.getAttribute('data-exchange');\n var totalPaidText = paymentsRight_1.getAttribute('data-total');\n var payoutCountryText = paymentsRight_1.getAttribute('data-country');\n var payoutMethodText = paymentsRight_1.getAttribute('data-method');\n var amanacardNumberText = paymentsRight_1.getAttribute('data-number');\n var paymentMethodText = paymentsRight_1.getAttribute('data-payment-method');\n var referenceNumberText = paymentsRight_1.getAttribute('data-reference-number');\n var status = item.status || \"\";\n var lastUpdated = item.lastUpdated || \"\";\n var paymentInProgressStatusTitle = paymentsRight_1.getAttribute('data-status-in-progress-title') || \"\";\n var paymentInProgressStatusSubtitle = paymentsRight_1.getAttribute('data-status-in-progress-subtitle') || \"\";\n var paymentPendingStatusTitle = paymentsRight_1.getAttribute('data-status-pending-title') || \"\";\n var paymentPendingStatusSubtitle = paymentsRight_1.getAttribute('data-status-pending-subtitle') || \"\";\n var paymentRejectedStatusTitle = paymentsRight_1.getAttribute('data-status-rejected-title') || \"\";\n var paymentRejectedStatusSubtitle = paymentsRight_1.getAttribute('data-status-rejected-subtitle') || \"\";\n var paymentDeliveredStatusTitle = paymentsRight_1.getAttribute('data-status-delivered-title') || \"\";\n var paymentDeliveredStatusSubtitle = paymentsRight_1.getAttribute('data-status-delivered-subtitle') || \"\";\n var lastUpdatedText = paymentsRight_1.getAttribute('data-last-updated') || \"\";\n var html = \"\\n
    \\n
    \\n

    \\n \" + item.dateValue + \"\\n

    \\n
    \\n \" + (payAgainText && item.payAgainUrl && (\"\\n \" + payAgainText + \"\\n \")) + \"\\n \" + (receiptText && item.receiptUrl && (\"\\n \" + receiptText + \"\\n \")) + \"\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \" + item.amount.value + \"\\n \\n \\n \" + item.amount1.currency + \"\\n \\n
    \\n \\n
    \\n \\n \" + item.amount2.value + \"\\n \\n \\n \" + item.amount2.currency + \"\\n \\n
    \\n
    \\n

    \\n \" + paymentTitle + \"\\n

    \\n
    \\n

    \\n \" + paymentCaption + \"\\n

    \\n
    \\n\\n \" + (status === \"in progress\" ? (\"\\n
    \\n
    \" + paymentInProgressStatusTitle + \"
    \\n
    \\n
    \\n
    \\n

    \" + paymentInProgressStatusSubtitle + \"

    \\n

    \" + lastUpdatedText + \" \" + lastUpdated + \"

    \\n
    \\n \") : \"\") + \"\\n \\n \" + (status === \"pending\" ? (\"\\n
    \\n
    \" + paymentPendingStatusTitle + \"
    \\n
    \\n
    \\n
    \\n

    \" + paymentPendingStatusSubtitle + \"

    \\n

    \" + lastUpdatedText + \" \" + lastUpdated + \"

    \\n
    \\n \") : \"\") + \"\\n \\n \" + (status === \"rejected\" ? (\"\\n
    \\n
    \" + paymentRejectedStatusTitle + \"
    \\n
    \\n
    \\n
    \\n

    \" + paymentRejectedStatusSubtitle + \"

    \\n

    \" + lastUpdatedText + \" \" + lastUpdated + \"

    \\n
    \\n \") : \"\") + \"\\n \\n \" + (status === \"delivered\" ? (\"\\n
    \\n
    \" + paymentDeliveredStatusTitle + \"
    \\n
    \\n
    \\n
    \\n

    \" + paymentDeliveredStatusSubtitle + \"

    \\n

    \" + lastUpdatedText + \" \" + lastUpdated + \"

    \\n
    \\n \") : \"\") + \"\\n\\n
    \\n

    \" + transferPurposeTitle + \"

    \\n

    \" + item.transferPurposeText + \"

    \\n
    \\n
      \\n
    • \\n

      \" + sentText + \"

      \\n

      \" + item.amount.value + \"

      \\n
    • \\n
    • \\n

      \" + exchangeRateText + \"

      \\n

      \" + item.exchangeRate + \"

      \\n
    • \\n
    • \\n

      \" + totalPaidText + \"

      \\n

      \" + item.totalPaid + \"

      \\n
    • \\n
    • \\n

      \" + paymentMethodText + \"

      \\n

      \" + item.paymentMethod + \"

      \\n
    • \\n
    • \\n

      \" + referenceNumberText + \"

      \\n

      \" + item.referenceNumber + \"

      \\n
    • \\n
    • \\n

      \" + payoutCountryText + \"

      \\n

      \" + item.payoutCountry + \"

      \\n
    • \\n
    • \\n

      \" + payoutMethodText + \"

      \\n

      \" + item.payoutMethod + \"

      \\n
    • \\n
    • \\n

      \" + amanacardNumberText + \"

      \\n

      \" + item.amanacardNumber + \"

      \\n
    • \\n
    \\n
    \\n \\n \\n
    \\n
    \\n \";\n return html;\n };\n var isScrolledToBottom_1 = function () {\n var scrollThreshold = 100;\n return paymentsList_1.scrollTop + paymentsList_1.clientHeight >= paymentsList_1.scrollHeight - scrollThreshold;\n };\n paymentsList_1.addEventListener('scroll', function () {\n if (isScrolledToBottom_1()) {\n fetchData_1(true);\n }\n });\n var resetDb_1 = function () {\n db_1 = [];\n reachedEnd_1 = false;\n lastTransactionId_1 = null;\n };\n dateInput1_1.addEventListener('change', function (e) {\n var target = e.target;\n startDate_1 = formatDate_1(new Date(target.value));\n var today = formatDate_1(new Date());\n dateInput1_1.max = today;\n dateInput2_1.max = today;\n dateInput2_1.min = startDate_1;\n if (startDate_1 > endDate_1) {\n dateInput2_1.value = startDate_1;\n }\n else {\n dateInput1_1.max = endDate_1;\n }\n resetDb_1();\n fetchData_1(false);\n });\n dateInput2_1.addEventListener('change', function (e) {\n var target = e.target;\n endDate_1 = formatDate_1(new Date(target.value));\n dateInput1_1.max = endDate_1;\n if (startDate_1 > endDate_1) {\n dateInput1_1.value = endDate_1;\n }\n resetDb_1();\n fetchData_1(false);\n });\n paymentDateButton_1.addEventListener('click', function () {\n if (paymentDates_1.classList.contains('payments__dates--active')) {\n paymentDates_1.classList.remove('payments__dates--active');\n paymentDateButton_1.classList.remove(\"payments__button--active\");\n }\n else {\n paymentDates_1.classList.add('payments__dates--active');\n paymentDateButton_1.classList.add(\"payments__button--active\");\n }\n });\n var showLoader_1 = function () {\n var paymentsLoader = paymentsComponent.querySelector('.payments__loader');\n var items = paymentsComponent.querySelectorAll('.payments__item');\n items.forEach(function (item) {\n item.classList.add('payments__item--hidden');\n });\n paymentsLoader.classList.add('payments__loader--active');\n };\n var hideLoader_1 = function () {\n var paymentsLoader = paymentsComponent.querySelector('.payments__loader');\n var items = paymentsComponent.querySelectorAll('.payments__item');\n items.forEach(function (item) {\n item.classList.remove('payments__item--hidden');\n });\n paymentsLoader.classList.remove('payments__loader--active');\n };\n var formatDate_1 = function (date) {\n return date.toISOString().split('T')[0];\n };\n var afterData_1 = function () {\n var paymentsBack = paymentsComponent.querySelector('.payments__back');\n var paymentCards = paymentsComponent.querySelectorAll('.payments__item');\n var resetCards = function () {\n var newPaymentCards = paymentsComponent.querySelectorAll('.payments__item');\n newPaymentCards.forEach(function (card) {\n card.classList.remove('payments__item--active');\n });\n };\n var resetDetails = function () {\n var newPaymentDetails = paymentsComponent.querySelectorAll('.payments__details');\n newPaymentDetails.forEach(function (item) {\n paymentsRight_1.classList.remove('payments__right--active');\n item.classList.remove('payments__details--active');\n });\n paymentsBack.classList.remove('payments__back--active');\n };\n var handleCardSelect = function (card, index) {\n var newPaymentDetails = paymentsComponent.querySelectorAll('.payments__details');\n resetCards();\n resetDetails();\n card.classList.add('payments__item--active');\n paymentsRight_1.classList.add('payments__right--active');\n newPaymentDetails[index].classList.add('payments__details--active');\n paymentsBack.classList.add('payments__back--active');\n if (window.innerWidth < 768) {\n newPaymentDetails[index].focus();\n window.scrollTo({ top: 0, behavior: 'smooth' });\n newPaymentDetails[index].addEventListener('keydown', function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === 'Escape') {\n resetCards();\n resetDetails();\n }\n });\n }\n };\n if (window.innerWidth > 768) {\n var newPaymentDetails = paymentsComponent.querySelectorAll('.payments__details');\n var newPaymentCards = paymentsComponent.querySelectorAll('.payments__item');\n if (newPaymentDetails.length > 0) {\n newPaymentDetails[0].classList.add('payments__details--active');\n newPaymentCards[0].classList.add('payments__item--active');\n }\n }\n var timeoutId;\n searchInput_1.addEventListener('input', function (e) {\n var target = e.target;\n searchTerm_1 = target.value.trim().toLowerCase();\n clearTimeout(timeoutId);\n timeoutId = setTimeout(function () {\n resetDb_1();\n fetchData_1(false);\n }, 1000);\n });\n paymentCards.forEach(function (card, i) {\n card.addEventListener('click', function () {\n handleCardSelect(card, i);\n });\n card.addEventListener('keydown', function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === 'Enter') {\n handleCardSelect(card, i);\n }\n });\n });\n paymentsBack.addEventListener('click', function () {\n resetCards();\n resetDetails();\n });\n };\n var setDefaultDates = function () {\n var today = new Date();\n var oneMonthAgo = new Date(today);\n oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1);\n if (oneMonthAgo.getMonth() === 1 && oneMonthAgo.getDate() === 29) {\n oneMonthAgo.setDate(28);\n }\n endDate_1 = formatDate_1(today);\n startDate_1 = formatDate_1(oneMonthAgo);\n dateInput1_1.value = startDate_1;\n dateInput2_1.value = endDate_1;\n dateInput1_1.min = formatDate_1(new Date(2000, 0, 1));\n dateInput2_1.min = startDate_1;\n dateInput1_1.max = endDate_1;\n dateInput2_1.max = endDate_1;\n };\n setDefaultDates();\n fetchData_1(false);\n}\n\n},{\"axios\":52}],43:[function(require,module,exports){\nmodule.exports=[\n {\n \"Country Name\": \"Afghanistan\",\n \"ISO2\": \"AF\",\n \"ISO3\": \"AFG\",\n \"Top Level Domain\": \"af\",\n \"FIPS\": \"AF\",\n \"ISO Numeric\": \"004\",\n \"GeoNameID\": 1149361,\n \"E164\": 93,\n \"Phone Code\": 93,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kabul\",\n \"Time Zone in Capital\": \"Asia/Kabul\",\n \"Currency\": \"Afghani\",\n \"Language Codes\": \"fa-AF,ps,uz-AF,tk\",\n \"Languages\": \"Afghan Persian or Dari (official) 50%, Pashto (official) 35%, Turkic languages (primarily Uzbek and Turkmen) 11%, 30 minor languages (primarily Balochi and Pashai) 4%, much bilingualism, but Dari functions as the lingua franca\",\n \"Area KM2\": 647500,\n \"Internet Hosts\": 223,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 18000000,\n \"Phones (Landline)\": 13500,\n \"GDP\": 20650000000\n },\n {\n \"Country Name\": \"Albania\",\n \"ISO2\": \"AL\",\n \"ISO3\": \"ALB\",\n \"Top Level Domain\": \"al\",\n \"FIPS\": \"AL\",\n \"ISO Numeric\": \"008\",\n \"GeoNameID\": 783754,\n \"E164\": 355,\n \"Phone Code\": 355,\n \"Continent\": \"Europe\",\n \"Capital\": \"Tirana\",\n \"Time Zone in Capital\": \"Europe/Tirane\",\n \"Currency\": \"Lek\",\n \"Language Codes\": \"sq,el\",\n \"Languages\": \"Albanian 98.8% (official - derived from Tosk dialect), Greek 0.5%, other 0.6% (including Macedonian, Roma, Vlach, Turkish, Italian, and Serbo-Croatian), unspecified 0.1% (2011 est.)\",\n \"Area KM2\": 28748,\n \"Internet Hosts\": 15528,\n \"Internet Users\": 1300000,\n \"Phones (Mobile)\": 3500000,\n \"Phones (Landline)\": 312000,\n \"GDP\": 12800000000\n },\n {\n \"Country Name\": \"Algeria\",\n \"ISO2\": \"DZ\",\n \"ISO3\": \"DZA\",\n \"Top Level Domain\": \"dz\",\n \"FIPS\": \"AG\",\n \"ISO Numeric\": \"012\",\n \"GeoNameID\": 2589581,\n \"E164\": 213,\n \"Phone Code\": 213,\n \"Continent\": \"Africa\",\n \"Capital\": \"Algiers\",\n \"Time Zone in Capital\": \"Africa/Algiers\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-DZ\",\n \"Languages\": \"Arabic (official), French (lingua franca), Berber dialects: Kabylie Berber (Tamazight), Chaouia Berber (Tachawit), Mzab Berber, Tuareg Berber (Tamahaq)\",\n \"Area KM2\": 2381740,\n \"Internet Hosts\": 676,\n \"Internet Users\": 4700000,\n \"Phones (Mobile)\": 37692000,\n \"Phones (Landline)\": 3200000,\n \"GDP\": 215700000000\n },\n {\n \"Country Name\": \"American Samoa\",\n \"ISO2\": \"AS\",\n \"ISO3\": \"ASM\",\n \"Top Level Domain\": \"as\",\n \"FIPS\": \"AQ\",\n \"ISO Numeric\": \"016\",\n \"GeoNameID\": 5880801,\n \"E164\": 1,\n \"Phone Code\": \"1-684\",\n \"Continent\": \"Oceania\",\n \"Capital\": \"Pago Pago\",\n \"Time Zone in Capital\": \"Pacific/Pago_Pago\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AS,sm,to\",\n \"Languages\": \"Samoan 90.6% (closely related to Hawaiian and other Polynesian languages), English 2.9%, Tongan 2.4%, other Pacific islander 2.1%, other 2%\",\n \"Area KM2\": 199,\n \"Internet Hosts\": 2387,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": 10000,\n \"GDP\": 462200000\n },\n {\n \"Country Name\": \"Andorra\",\n \"ISO2\": \"AD\",\n \"ISO3\": \"AND\",\n \"Top Level Domain\": \"ad\",\n \"FIPS\": \"AN\",\n \"ISO Numeric\": \"020\",\n \"GeoNameID\": 3041565,\n \"E164\": 376,\n \"Phone Code\": 376,\n \"Continent\": \"Europe\",\n \"Capital\": \"Andorra la Vella\",\n \"Time Zone in Capital\": \"Europe/Andorra\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"ca\",\n \"Languages\": \"Catalan (official), French, Castilian, Portuguese\",\n \"Area KM2\": 468,\n \"Internet Hosts\": 28383,\n \"Internet Users\": 67100,\n \"Phones (Mobile)\": 65000,\n \"Phones (Landline)\": 39000,\n \"GDP\": 4800000000\n },\n {\n \"Country Name\": \"Angola\",\n \"ISO2\": \"AO\",\n \"ISO3\": \"AGO\",\n \"Top Level Domain\": \"ao\",\n \"FIPS\": \"AO\",\n \"ISO Numeric\": \"024\",\n \"GeoNameID\": 3351879,\n \"E164\": 244,\n \"Phone Code\": 244,\n \"Continent\": \"Africa\",\n \"Capital\": \"Luanda\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Kwanza\",\n \"Language Codes\": \"pt-AO\",\n \"Languages\": \"Portuguese (official), Bantu and other African languages\",\n \"Area KM2\": 1246700,\n \"Internet Hosts\": 20703,\n \"Internet Users\": 606700,\n \"Phones (Mobile)\": 9800000,\n \"Phones (Landline)\": 303000,\n \"GDP\": 124000000000\n },\n {\n \"Country Name\": \"Anguilla\",\n \"ISO2\": \"AI\",\n \"ISO3\": \"AIA\",\n \"Top Level Domain\": \"ai\",\n \"FIPS\": \"AV\",\n \"ISO Numeric\": 660,\n \"GeoNameID\": 3573511,\n \"E164\": 1,\n \"Phone Code\": \"1-264\",\n \"Continent\": \"North America\",\n \"Capital\": \"The Valley\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AI\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 102,\n \"Internet Hosts\": 269,\n \"Internet Users\": 3700,\n \"Phones (Mobile)\": 26000,\n \"Phones (Landline)\": 6000,\n \"GDP\": 175400000\n },\n {\n \"Country Name\": \"Antarctica\",\n \"ISO2\": \"AQ\",\n \"ISO3\": \"ATA\",\n \"Top Level Domain\": \"aq\",\n \"FIPS\": \"AY\",\n \"ISO Numeric\": \"010\",\n \"GeoNameID\": 6697173,\n \"E164\": 672,\n \"Phone Code\": 672,\n \"Continent\": \"Antarctica\",\n \"Capital\": \"\",\n \"Time Zone in Capital\": \"Antarctica/Troll\",\n \"Currency\": \"\",\n \"Language Codes\": \"\",\n \"Languages\": \"\",\n \"Area KM2\": 14000000,\n \"Internet Hosts\": 7764,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Antigua and Barbuda\",\n \"ISO2\": \"AG\",\n \"ISO3\": \"ATG\",\n \"Top Level Domain\": \"ag\",\n \"FIPS\": \"AC\",\n \"ISO Numeric\": \"028\",\n \"GeoNameID\": 3576396,\n \"E164\": 1,\n \"Phone Code\": \"1-268\",\n \"Continent\": \"North America\",\n \"Capital\": \"St. John's\",\n \"Time Zone in Capital\": \"America/Antigua\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AG\",\n \"Languages\": \"English (official), local dialects\",\n \"Area KM2\": 443,\n \"Internet Hosts\": 11532,\n \"Internet Users\": 65000,\n \"Phones (Mobile)\": 179800,\n \"Phones (Landline)\": 35000,\n \"GDP\": 1220000000\n },\n {\n \"Country Name\": \"Argentina\",\n \"ISO2\": \"AR\",\n \"ISO3\": \"ARG\",\n \"Top Level Domain\": \"ar\",\n \"FIPS\": \"AR\",\n \"ISO Numeric\": \"032\",\n \"GeoNameID\": 3865483,\n \"E164\": 54,\n \"Phone Code\": 54,\n \"Continent\": \"South America\",\n \"Capital\": \"Buenos Aires\",\n \"Time Zone in Capital\": \"America/Argentina/Buenos_Aires\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-AR,en,it,de,fr,gn\",\n \"Languages\": \"Spanish (official), Italian, English, German, French, indigenous (Mapudungun, Quechua)\",\n \"Area KM2\": 2766890,\n \"Internet Hosts\": 11232000,\n \"Internet Users\": 13694000,\n \"Phones (Mobile)\": 58600000,\n \"Phones (Landline)\": 1,\n \"GDP\": 484600000000\n },\n {\n \"Country Name\": \"Armenia\",\n \"ISO2\": \"AM\",\n \"ISO3\": \"ARM\",\n \"Top Level Domain\": \"am\",\n \"FIPS\": \"AM\",\n \"ISO Numeric\": \"051\",\n \"GeoNameID\": 174982,\n \"E164\": 374,\n \"Phone Code\": 374,\n \"Continent\": \"Asia\",\n \"Capital\": \"Yerevan\",\n \"Time Zone in Capital\": \"Asia/Yerevan\",\n \"Currency\": \"Dram\",\n \"Language Codes\": \"hy\",\n \"Languages\": \"Armenian (official) 97.9%, Kurdish (spoken by Yezidi minority) 1%, other 1% (2011 est.)\",\n \"Area KM2\": 29800,\n \"Internet Hosts\": 194142,\n \"Internet Users\": 208200,\n \"Phones (Mobile)\": 3223000,\n \"Phones (Landline)\": 584000,\n \"GDP\": 10440000000\n },\n {\n \"Country Name\": \"Aruba\",\n \"ISO2\": \"AW\",\n \"ISO3\": \"ABW\",\n \"Top Level Domain\": \"aw\",\n \"FIPS\": \"AA\",\n \"ISO Numeric\": 533,\n \"GeoNameID\": 3577279,\n \"E164\": 297,\n \"Phone Code\": 297,\n \"Continent\": \"North America\",\n \"Capital\": \"Oranjestad\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl-AW,es,en\",\n \"Languages\": \"Papiamento (a Spanish-Portuguese-Dutch-English dialect) 69.4%, Spanish 13.7%, English (widely spoken) 7.1%, Dutch (official) 6.1%, Chinese 1.5%, other 1.7%, unspecified 0.4% (2010 est.)\",\n \"Area KM2\": 193,\n \"Internet Hosts\": 40560,\n \"Internet Users\": 24000,\n \"Phones (Mobile)\": 135000,\n \"Phones (Landline)\": 43000,\n \"GDP\": 2516000000\n },\n {\n \"Country Name\": \"Australia\",\n \"ISO2\": \"AU\",\n \"ISO3\": \"AUS\",\n \"Top Level Domain\": \"au\",\n \"FIPS\": \"AS\",\n \"ISO Numeric\": \"036\",\n \"GeoNameID\": 2077456,\n \"E164\": 61,\n \"Phone Code\": 61,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Canberra\",\n \"Time Zone in Capital\": \"Australia/Sydney\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AU\",\n \"Languages\": \"English 76.8%, Mandarin 1.6%, Italian 1.4%, Arabic 1.3%, Greek 1.2%, Cantonese 1.2%, Vietnamese 1.1%, other 10.4%, unspecified 5% (2011 est.)\",\n \"Area KM2\": 7686850,\n \"Internet Hosts\": 17081000,\n \"Internet Users\": 15810000,\n \"Phones (Mobile)\": 24400000,\n \"Phones (Landline)\": 10470000,\n \"GDP\": 1488000000000\n },\n {\n \"Country Name\": \"Austria\",\n \"ISO2\": \"AT\",\n \"ISO3\": \"AUT\",\n \"Top Level Domain\": \"at\",\n \"FIPS\": \"AU\",\n \"ISO Numeric\": \"040\",\n \"GeoNameID\": 2782113,\n \"E164\": 43,\n \"Phone Code\": 43,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vienna\",\n \"Time Zone in Capital\": \"Europe/Vienna\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"de-AT,hr,hu,sl\",\n \"Languages\": \"German (official nationwide) 88.6%, Turkish 2.3%, Serbian 2.2%, Croatian (official in Burgenland) 1.6%, other (includes Slovene, official in Carinthia, and Hungarian, official in Burgenland) 5.3% (2001 census)\",\n \"Area KM2\": 83858,\n \"Internet Hosts\": 3512000,\n \"Internet Users\": 6143000,\n \"Phones (Mobile)\": 13590000,\n \"Phones (Landline)\": 3342000,\n \"GDP\": 417900000000\n },\n {\n \"Country Name\": \"Azerbaijan\",\n \"ISO2\": \"AZ\",\n \"ISO3\": \"AZE\",\n \"Top Level Domain\": \"az\",\n \"FIPS\": \"AJ\",\n \"ISO Numeric\": \"031\",\n \"GeoNameID\": 587116,\n \"E164\": 994,\n \"Phone Code\": 994,\n \"Continent\": \"Asia\",\n \"Capital\": \"Baku\",\n \"Time Zone in Capital\": \"Asia/Baku\",\n \"Currency\": \"Manat\",\n \"Language Codes\": \"az,ru,hy\",\n \"Languages\": \"Azerbaijani (Azeri) (official) 92.5%, Russian 1.4%, Armenian 1.4%, other 4.7% (2009 est.)\",\n \"Area KM2\": 86600,\n \"Internet Hosts\": 46856,\n \"Internet Users\": 2420000,\n \"Phones (Mobile)\": 10125000,\n \"Phones (Landline)\": 1734000,\n \"GDP\": 76010000000\n },\n {\n \"Country Name\": \"Bahamas\",\n \"ISO2\": \"BS\",\n \"ISO3\": \"BHS\",\n \"Top Level Domain\": \"bs\",\n \"FIPS\": \"BF\",\n \"ISO Numeric\": \"044\",\n \"GeoNameID\": 3572887,\n \"E164\": 1,\n \"Phone Code\": \"1-242\",\n \"Continent\": \"North America\",\n \"Capital\": \"Nassau\",\n \"Time Zone in Capital\": \"America/Nassau\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BS\",\n \"Languages\": \"English (official), Creole (among Haitian immigrants)\",\n \"Area KM2\": 13940,\n \"Internet Hosts\": 20661,\n \"Internet Users\": 115800,\n \"Phones (Mobile)\": 254000,\n \"Phones (Landline)\": 137000,\n \"GDP\": 8373000000\n },\n {\n \"Country Name\": \"Bahrain\",\n \"ISO2\": \"BH\",\n \"ISO3\": \"BHR\",\n \"Top Level Domain\": \"bh\",\n \"FIPS\": \"BA\",\n \"ISO Numeric\": \"048\",\n \"GeoNameID\": 290291,\n \"E164\": 973,\n \"Phone Code\": 973,\n \"Continent\": \"Asia\",\n \"Capital\": \"Manama\",\n \"Time Zone in Capital\": \"Asia/Bahrain\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-BH,en,fa,ur\",\n \"Languages\": \"Arabic (official), English, Farsi, Urdu\",\n \"Area KM2\": 665,\n \"Internet Hosts\": 47727,\n \"Internet Users\": 419500,\n \"Phones (Mobile)\": 2125000,\n \"Phones (Landline)\": 290000,\n \"GDP\": 28360000000\n },\n {\n \"Country Name\": \"Bangladesh\",\n \"ISO2\": \"BD\",\n \"ISO3\": \"BGD\",\n \"Top Level Domain\": \"bd\",\n \"FIPS\": \"BG\",\n \"ISO Numeric\": \"050\",\n \"GeoNameID\": 1210997,\n \"E164\": 880,\n \"Phone Code\": 880,\n \"Continent\": \"Asia\",\n \"Capital\": \"Dhaka\",\n \"Time Zone in Capital\": \"Asia/Dhaka\",\n \"Currency\": \"Taka\",\n \"Language Codes\": \"bn-BD,en\",\n \"Languages\": \"Bangla (official, also known as Bengali), English\",\n \"Area KM2\": 144000,\n \"Internet Hosts\": 71164,\n \"Internet Users\": 617300,\n \"Phones (Mobile)\": 97180000,\n \"Phones (Landline)\": 962000,\n \"GDP\": 140200000000\n },\n {\n \"Country Name\": \"Barbados\",\n \"ISO2\": \"BB\",\n \"ISO3\": \"BRB\",\n \"Top Level Domain\": \"bb\",\n \"FIPS\": \"BB\",\n \"ISO Numeric\": \"052\",\n \"GeoNameID\": 3374084,\n \"E164\": 1,\n \"Phone Code\": \"1-246\",\n \"Continent\": \"North America\",\n \"Capital\": \"Bridgetown\",\n \"Time Zone in Capital\": \"America/Barbados\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BB\",\n \"Languages\": \"English (official), Bajan (English-based creole language, widely spoken in informal settings)\",\n \"Area KM2\": 431,\n \"Internet Hosts\": 1524,\n \"Internet Users\": 188000,\n \"Phones (Mobile)\": 347000,\n \"Phones (Landline)\": 144000,\n \"GDP\": 4262000000\n },\n {\n \"Country Name\": \"Belarus\",\n \"ISO2\": \"BY\",\n \"ISO3\": \"BLR\",\n \"Top Level Domain\": \"by\",\n \"FIPS\": \"BO\",\n \"ISO Numeric\": 112,\n \"GeoNameID\": 630336,\n \"E164\": 375,\n \"Phone Code\": 375,\n \"Continent\": \"Europe\",\n \"Capital\": \"Minsk\",\n \"Time Zone in Capital\": \"Europe/Minsk\",\n \"Currency\": \"Ruble\",\n \"Language Codes\": \"be,ru\",\n \"Languages\": \"Belarusian (official) 23.4%, Russian (official) 70.2%, other 3.1% (includes small Polish- and Ukrainian-speaking minorities), unspecified 3.3% (2009 est.)\",\n \"Area KM2\": 207600,\n \"Internet Hosts\": 295217,\n \"Internet Users\": 2643000,\n \"Phones (Mobile)\": 10675000,\n \"Phones (Landline)\": 4407000,\n \"GDP\": 69240000000\n },\n {\n \"Country Name\": \"Belgium\",\n \"ISO2\": \"BE\",\n \"ISO3\": \"BEL\",\n \"Top Level Domain\": \"be\",\n \"FIPS\": \"BE\",\n \"ISO Numeric\": \"056\",\n \"GeoNameID\": 2802361,\n \"E164\": 32,\n \"Phone Code\": 32,\n \"Continent\": \"Europe\",\n \"Capital\": \"Brussels\",\n \"Time Zone in Capital\": \"Europe/Brussels\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"nl-BE,fr-BE,de-BE\",\n \"Languages\": \"Dutch (official) 60%, French (official) 40%, German (official) less than 1%, legally bilingual (Dutch and French)\",\n \"Area KM2\": 30510,\n \"Internet Hosts\": 5192000,\n \"Internet Users\": 8113000,\n \"Phones (Mobile)\": 12880000,\n \"Phones (Landline)\": 4631000,\n \"GDP\": 507400000000\n },\n {\n \"Country Name\": \"Belize\",\n \"ISO2\": \"BZ\",\n \"ISO3\": \"BLZ\",\n \"Top Level Domain\": \"bz\",\n \"FIPS\": \"BH\",\n \"ISO Numeric\": \"084\",\n \"GeoNameID\": 3582678,\n \"E164\": 501,\n \"Phone Code\": 501,\n \"Continent\": \"North America\",\n \"Capital\": \"Belmopan\",\n \"Time Zone in Capital\": \"America/Belize\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BZ,es\",\n \"Languages\": \"Spanish 46%, Creole 32.9%, Mayan dialects 8.9%, English 3.9% (official), Garifuna 3.4% (Carib), German 3.3%, other 1.4%, unknown 0.2% (2000 census)\",\n \"Area KM2\": 22966,\n \"Internet Hosts\": 3392,\n \"Internet Users\": 36000,\n \"Phones (Mobile)\": 164200,\n \"Phones (Landline)\": 25400,\n \"GDP\": 1637000000\n },\n {\n \"Country Name\": \"Benin\",\n \"ISO2\": \"BJ\",\n \"ISO3\": \"BEN\",\n \"Top Level Domain\": \"bj\",\n \"FIPS\": \"BN\",\n \"ISO Numeric\": 204,\n \"GeoNameID\": 2395170,\n \"E164\": 229,\n \"Phone Code\": 229,\n \"Continent\": \"Africa\",\n \"Capital\": \"Porto-Novo\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-BJ\",\n \"Languages\": \"French (official), Fon and Yoruba (most common vernaculars in south), tribal languages (at least six major ones in north)\",\n \"Area KM2\": 112620,\n \"Internet Hosts\": 491,\n \"Internet Users\": 200100,\n \"Phones (Mobile)\": 8408000,\n \"Phones (Landline)\": 156700,\n \"GDP\": 8359000000\n },\n {\n \"Country Name\": \"Bermuda\",\n \"ISO2\": \"BM\",\n \"ISO3\": \"BMU\",\n \"Top Level Domain\": \"bm\",\n \"FIPS\": \"BD\",\n \"ISO Numeric\": \"060\",\n \"GeoNameID\": 3573345,\n \"E164\": 1,\n \"Phone Code\": \"1-441\",\n \"Continent\": \"North America\",\n \"Capital\": \"Hamilton\",\n \"Time Zone in Capital\": \"Atlantic/Bermuda\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BM,pt\",\n \"Languages\": \"English (official), Portuguese\",\n \"Area KM2\": 53,\n \"Internet Hosts\": 20040,\n \"Internet Users\": 54000,\n \"Phones (Mobile)\": 91000,\n \"Phones (Landline)\": 69000,\n \"GDP\": 5600000000\n },\n {\n \"Country Name\": \"Bhutan\",\n \"ISO2\": \"BT\",\n \"ISO3\": \"BTN\",\n \"Top Level Domain\": \"bt\",\n \"FIPS\": \"BT\",\n \"ISO Numeric\": \"064\",\n \"GeoNameID\": 1252634,\n \"E164\": 975,\n \"Phone Code\": 975,\n \"Continent\": \"Asia\",\n \"Capital\": \"Thimphu\",\n \"Time Zone in Capital\": \"Asia/Thimphu\",\n \"Currency\": \"Ngultrum\",\n \"Language Codes\": \"dz\",\n \"Languages\": \"Sharchhopka 28%, Dzongkha (official) 24%, Lhotshamkha 22%, other 26% (includes foreign languages) (2005 est.)\",\n \"Area KM2\": 47000,\n \"Internet Hosts\": 14590,\n \"Internet Users\": 50000,\n \"Phones (Mobile)\": 560000,\n \"Phones (Landline)\": 27000,\n \"GDP\": 2133000000\n },\n {\n \"Country Name\": \"Bolivia\",\n \"ISO2\": \"BO\",\n \"ISO3\": \"BOL\",\n \"Top Level Domain\": \"bo\",\n \"FIPS\": \"BL\",\n \"ISO Numeric\": \"068\",\n \"GeoNameID\": 3923057,\n \"E164\": 591,\n \"Phone Code\": 591,\n \"Continent\": \"South America\",\n \"Capital\": \"Sucre\",\n \"Time Zone in Capital\": \"America/La_Paz\",\n \"Currency\": \"Boliviano\",\n \"Language Codes\": \"es-BO,qu,ay\",\n \"Languages\": \"Spanish (official) 60.7%, Quechua (official) 21.2%, Aymara (official) 14.6%, Guarani (official), foreign languages 2.4%, other 1.2%\",\n \"Area KM2\": 1098580,\n \"Internet Hosts\": 180988,\n \"Internet Users\": 1103000,\n \"Phones (Mobile)\": 9494000,\n \"Phones (Landline)\": 880600,\n \"GDP\": 30790000000\n },\n {\n \"Country Name\": \"Bosnia and Herzegovina\",\n \"ISO2\": \"BA\",\n \"ISO3\": \"BIH\",\n \"Top Level Domain\": \"ba\",\n \"FIPS\": \"BK\",\n \"ISO Numeric\": \"070\",\n \"GeoNameID\": 3277605,\n \"E164\": 387,\n \"Phone Code\": 387,\n \"Continent\": \"Europe\",\n \"Capital\": \"Sarajevo\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Marka\",\n \"Language Codes\": \"bs,hr-BA,sr-BA\",\n \"Languages\": \"Bosnian (official), Croatian (official), Serbian (official)\",\n \"Area KM2\": 51129,\n \"Internet Hosts\": 155252,\n \"Internet Users\": 1422000,\n \"Phones (Mobile)\": 3350000,\n \"Phones (Landline)\": 878000,\n \"GDP\": 18870000000\n },\n {\n \"Country Name\": \"Botswana\",\n \"ISO2\": \"BW\",\n \"ISO3\": \"BWA\",\n \"Top Level Domain\": \"bw\",\n \"FIPS\": \"BC\",\n \"ISO Numeric\": \"072\",\n \"GeoNameID\": 933860,\n \"E164\": 267,\n \"Phone Code\": 267,\n \"Continent\": \"Africa\",\n \"Capital\": \"Gaborone\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Pula\",\n \"Language Codes\": \"en-BW,tn-BW\",\n \"Languages\": \"Setswana 78.2%, Kalanga 7.9%, Sekgalagadi 2.8%, English (official) 2.1%, other 8.6%, unspecified 0.4% (2001 census)\",\n \"Area KM2\": 600370,\n \"Internet Hosts\": 1806,\n \"Internet Users\": 120000,\n \"Phones (Mobile)\": 3082000,\n \"Phones (Landline)\": 160500,\n \"GDP\": 15530000000\n },\n {\n \"Country Name\": \"Brazil\",\n \"ISO2\": \"BR\",\n \"ISO3\": \"BRA\",\n \"Top Level Domain\": \"br\",\n \"FIPS\": \"BR\",\n \"ISO Numeric\": \"076\",\n \"GeoNameID\": 3469034,\n \"E164\": 55,\n \"Phone Code\": 55,\n \"Continent\": \"South America\",\n \"Capital\": \"Brasilia\",\n \"Time Zone in Capital\": \"America/Sao_Paulo\",\n \"Currency\": \"Real\",\n \"Language Codes\": \"pt-BR,es,en,fr\",\n \"Languages\": \"Portuguese (official and most widely spoken language)\",\n \"Area KM2\": 8511965,\n \"Internet Hosts\": 26577000,\n \"Internet Users\": 75982000,\n \"Phones (Mobile)\": 248324000,\n \"Phones (Landline)\": 44300000,\n \"GDP\": 2190000000000\n },\n {\n \"Country Name\": \"British Indian Ocean Territory\",\n \"ISO2\": \"IO\",\n \"ISO3\": \"IOT\",\n \"Top Level Domain\": \"io\",\n \"FIPS\": \"IO\",\n \"ISO Numeric\": \"086\",\n \"GeoNameID\": 1282588,\n \"E164\": 246,\n \"Phone Code\": 246,\n \"Continent\": \"Asia\",\n \"Capital\": \"Diego Garcia\",\n \"Time Zone in Capital\": \"Indian/Chagos\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-IO\",\n \"Languages\": \"English\",\n \"Area KM2\": 60,\n \"Internet Hosts\": 75006,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"British Virgin Islands\",\n \"ISO2\": \"VG\",\n \"ISO3\": \"VGB\",\n \"Top Level Domain\": \"vg\",\n \"FIPS\": \"VI\",\n \"ISO Numeric\": \"092\",\n \"GeoNameID\": 3577718,\n \"E164\": 1,\n \"Phone Code\": \"1-284\",\n \"Continent\": \"North America\",\n \"Capital\": \"Road Town\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-VG\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 153,\n \"Internet Hosts\": 505,\n \"Internet Users\": 4000,\n \"Phones (Mobile)\": 48700,\n \"Phones (Landline)\": 12268,\n \"GDP\": 1095000000\n },\n {\n \"Country Name\": \"Brunei\",\n \"ISO2\": \"BN\",\n \"ISO3\": \"BRN\",\n \"Top Level Domain\": \"bn\",\n \"FIPS\": \"BX\",\n \"ISO Numeric\": \"096\",\n \"GeoNameID\": 1820814,\n \"E164\": 673,\n \"Phone Code\": 673,\n \"Continent\": \"Asia\",\n \"Capital\": \"Bandar Seri Begawan\",\n \"Time Zone in Capital\": \"Asia/Brunei\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"ms-BN,en-BN\",\n \"Languages\": \"Malay (official), English, Chinese\",\n \"Area KM2\": 5770,\n \"Internet Hosts\": 49457,\n \"Internet Users\": 314900,\n \"Phones (Mobile)\": 469700,\n \"Phones (Landline)\": 70933,\n \"GDP\": 16560000000\n },\n {\n \"Country Name\": \"Bulgaria\",\n \"ISO2\": \"BG\",\n \"ISO3\": \"BGR\",\n \"Top Level Domain\": \"bg\",\n \"FIPS\": \"BU\",\n \"ISO Numeric\": 100,\n \"GeoNameID\": 732800,\n \"E164\": 359,\n \"Phone Code\": 359,\n \"Continent\": \"Europe\",\n \"Capital\": \"Sofia\",\n \"Time Zone in Capital\": \"Europe/Sofia\",\n \"Currency\": \"Lev\",\n \"Language Codes\": \"bg,tr-BG\",\n \"Languages\": \"Bulgarian (official) 76.8%, Turkish 8.2%, Roma 3.8%, other 0.7%, unspecified 10.5% (2011 est.)\",\n \"Area KM2\": 110910,\n \"Internet Hosts\": 976277,\n \"Internet Users\": 3395000,\n \"Phones (Mobile)\": 10780000,\n \"Phones (Landline)\": 2253000,\n \"GDP\": 53700000000\n },\n {\n \"Country Name\": \"Burkina Faso\",\n \"ISO2\": \"BF\",\n \"ISO3\": \"BFA\",\n \"Top Level Domain\": \"bf\",\n \"FIPS\": \"UV\",\n \"ISO Numeric\": 854,\n \"GeoNameID\": 2361809,\n \"E164\": 226,\n \"Phone Code\": 226,\n \"Continent\": \"Africa\",\n \"Capital\": \"Ouagadougou\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-BF\",\n \"Languages\": \"French (official), native African languages belonging to Sudanic family spoken by 90% of the population\",\n \"Area KM2\": 274200,\n \"Internet Hosts\": 1795,\n \"Internet Users\": 178100,\n \"Phones (Mobile)\": 9980000,\n \"Phones (Landline)\": 141400,\n \"GDP\": 12130000000\n },\n {\n \"Country Name\": \"Burundi\",\n \"ISO2\": \"BI\",\n \"ISO3\": \"BDI\",\n \"Top Level Domain\": \"bi\",\n \"FIPS\": \"BY\",\n \"ISO Numeric\": 108,\n \"GeoNameID\": 433561,\n \"E164\": 257,\n \"Phone Code\": 257,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bujumbura\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-BI,rn\",\n \"Languages\": \"Kirundi 29.7% (official), Kirundi and other language 9.1%, French (official) and French and other language 0.3%, Swahili and Swahili and other language 0.2% (along Lake Tanganyika and in the Bujumbura area), English and English and other language 0.06%, more than 2 languages 3.7%, unspecified 56.9% (2008 est.)\",\n \"Area KM2\": 27830,\n \"Internet Hosts\": 229,\n \"Internet Users\": 157800,\n \"Phones (Mobile)\": 2247000,\n \"Phones (Landline)\": 17400,\n \"GDP\": 2676000000\n },\n {\n \"Country Name\": \"Cambodia\",\n \"ISO2\": \"KH\",\n \"ISO3\": \"KHM\",\n \"Top Level Domain\": \"kh\",\n \"FIPS\": \"CB\",\n \"ISO Numeric\": 116,\n \"GeoNameID\": 1831722,\n \"E164\": 855,\n \"Phone Code\": 855,\n \"Continent\": \"Asia\",\n \"Capital\": \"Phnom Penh\",\n \"Time Zone in Capital\": \"Asia/Phnom_Penh\",\n \"Currency\": \"Riels\",\n \"Language Codes\": \"km,fr,en\",\n \"Languages\": \"Khmer (official) 96.3%, other 3.7% (2008 est.)\",\n \"Area KM2\": 181040,\n \"Internet Hosts\": 13784,\n \"Internet Users\": 78500,\n \"Phones (Mobile)\": 19100000,\n \"Phones (Landline)\": 584000,\n \"GDP\": 15640000000\n },\n {\n \"Country Name\": \"Cameroon\",\n \"ISO2\": \"CM\",\n \"ISO3\": \"CMR\",\n \"Top Level Domain\": \"cm\",\n \"FIPS\": \"CM\",\n \"ISO Numeric\": 120,\n \"GeoNameID\": 2233387,\n \"E164\": 237,\n \"Phone Code\": 237,\n \"Continent\": \"Africa\",\n \"Capital\": \"Yaounde\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"en-CM,fr-CM\",\n \"Languages\": \"24 major African language groups, English (official), French (official)\",\n \"Area KM2\": 475440,\n \"Internet Hosts\": 10207,\n \"Internet Users\": 749600,\n \"Phones (Mobile)\": 13100000,\n \"Phones (Landline)\": 737400,\n \"GDP\": 27880000000\n },\n {\n \"Country Name\": \"Canada\",\n \"ISO2\": \"CA\",\n \"ISO3\": \"CAN\",\n \"Top Level Domain\": \"ca\",\n \"FIPS\": \"CA\",\n \"ISO Numeric\": 124,\n \"GeoNameID\": 6251999,\n \"E164\": 1,\n \"Phone Code\": 1,\n \"Continent\": \"North America\",\n \"Capital\": \"Ottawa\",\n \"Time Zone in Capital\": \"America/Toronto\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-CA,fr-CA,iu\",\n \"Languages\": \"English (official) 58.7%, French (official) 22%, Punjabi 1.4%, Italian 1.3%, Spanish 1.3%, German 1.3%, Cantonese 1.2%, Tagalog 1.2%, Arabic 1.1%, other 10.5% (2011 est.)\",\n \"Area KM2\": 9984670,\n \"Internet Hosts\": 8743000,\n \"Internet Users\": 26960000,\n \"Phones (Mobile)\": 26263000,\n \"Phones (Landline)\": 18010000,\n \"GDP\": 1825000000000\n },\n {\n \"Country Name\": \"Cape Verde\",\n \"ISO2\": \"CV\",\n \"ISO3\": \"CPV\",\n \"Top Level Domain\": \"cv\",\n \"FIPS\": \"CV\",\n \"ISO Numeric\": 132,\n \"GeoNameID\": 3374766,\n \"E164\": 238,\n \"Phone Code\": 238,\n \"Continent\": \"Africa\",\n \"Capital\": \"Praia\",\n \"Time Zone in Capital\": \"Atlantic/Cape_Verde\",\n \"Currency\": \"Escudo\",\n \"Language Codes\": \"pt-CV\",\n \"Languages\": \"Portuguese (official), Crioulo (a blend of Portuguese and West African words)\",\n \"Area KM2\": 4033,\n \"Internet Hosts\": 38,\n \"Internet Users\": 150000,\n \"Phones (Mobile)\": 425300,\n \"Phones (Landline)\": 70200,\n \"GDP\": 1955000000\n },\n {\n \"Country Name\": \"Cayman Islands\",\n \"ISO2\": \"KY\",\n \"ISO3\": \"CYM\",\n \"Top Level Domain\": \"ky\",\n \"FIPS\": \"CJ\",\n \"ISO Numeric\": 136,\n \"GeoNameID\": 3580718,\n \"E164\": 1,\n \"Phone Code\": \"1-345\",\n \"Continent\": \"North America\",\n \"Capital\": \"George Town\",\n \"Time Zone in Capital\": \"America/Cayman\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-KY\",\n \"Languages\": \"English (official) 90.9%, Spanish 4%, Filipino 3.3%, other 1.7%, unspecified 0.1% (2010 est.)\",\n \"Area KM2\": 262,\n \"Internet Hosts\": 23472,\n \"Internet Users\": 23000,\n \"Phones (Mobile)\": 96300,\n \"Phones (Landline)\": 37400,\n \"GDP\": 2250000000\n },\n {\n \"Country Name\": \"Central African Republic\",\n \"ISO2\": \"CF\",\n \"ISO3\": \"CAF\",\n \"Top Level Domain\": \"cf\",\n \"FIPS\": \"CT\",\n \"ISO Numeric\": 140,\n \"GeoNameID\": 239880,\n \"E164\": 236,\n \"Phone Code\": 236,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bangui\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CF,sg,ln,kg\",\n \"Languages\": \"French (official), Sangho (lingua franca and national language), tribal languages\",\n \"Area KM2\": 622984,\n \"Internet Hosts\": 20,\n \"Internet Users\": 22600,\n \"Phones (Mobile)\": 1070000,\n \"Phones (Landline)\": 5600,\n \"GDP\": 2050000000\n },\n {\n \"Country Name\": \"Chad\",\n \"ISO2\": \"TD\",\n \"ISO3\": \"TCD\",\n \"Top Level Domain\": \"td\",\n \"FIPS\": \"CD\",\n \"ISO Numeric\": 148,\n \"GeoNameID\": 2434508,\n \"E164\": 235,\n \"Phone Code\": 235,\n \"Continent\": \"Africa\",\n \"Capital\": \"N'Djamena\",\n \"Time Zone in Capital\": \"Africa/Ndjamena\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-TD,ar-TD,sre\",\n \"Languages\": \"French (official), Arabic (official), Sara (in south), more than 120 different languages and dialects\",\n \"Area KM2\": 1284000,\n \"Internet Hosts\": 6,\n \"Internet Users\": 168100,\n \"Phones (Mobile)\": 4200000,\n \"Phones (Landline)\": 29900,\n \"GDP\": 13590000000\n },\n {\n \"Country Name\": \"Chile\",\n \"ISO2\": \"CL\",\n \"ISO3\": \"CHL\",\n \"Top Level Domain\": \"cl\",\n \"FIPS\": \"CI\",\n \"ISO Numeric\": 152,\n \"GeoNameID\": 3895114,\n \"E164\": 56,\n \"Phone Code\": 56,\n \"Continent\": \"South America\",\n \"Capital\": \"Santiago\",\n \"Time Zone in Capital\": \"America/Santiago\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-CL\",\n \"Languages\": \"Spanish 99.5% (official), English 10.2%, indigenous 1% (includes Mapudungun, Aymara, Quechua, Rapa Nui), other 2.3%, unspecified 0.2%\",\n \"Area KM2\": 756950,\n \"Internet Hosts\": 2152000,\n \"Internet Users\": 7009000,\n \"Phones (Mobile)\": 24130000,\n \"Phones (Landline)\": 3276000,\n \"GDP\": 281700000000\n },\n {\n \"Country Name\": \"China\",\n \"ISO2\": \"CN\",\n \"ISO3\": \"CHN\",\n \"Top Level Domain\": \"cn\",\n \"FIPS\": \"CH\",\n \"ISO Numeric\": 156,\n \"GeoNameID\": 1814991,\n \"E164\": 86,\n \"Phone Code\": 86,\n \"Continent\": \"Asia\",\n \"Capital\": \"Beijing\",\n \"Time Zone in Capital\": \"Asia/Shanghai\",\n \"Currency\": \"Yuan Renminbi\",\n \"Language Codes\": \"zh-CN,yue,wuu,dta,ug,za\",\n \"Languages\": \"Standard Chinese or Mandarin (official; Putonghua, based on the Beijing dialect), Yue (Cantonese), Wu (Shanghainese), Minbei (Fuzhou), Minnan (Hokkien-Taiwanese), Xiang, Gan, Hakka dialects, minority languages\",\n \"Area KM2\": 9596960,\n \"Internet Hosts\": 20602000,\n \"Internet Users\": 389000000,\n \"Phones (Mobile)\": 1100000000,\n \"Phones (Landline)\": 278860000,\n \"GDP\": 9330000000000\n },\n {\n \"Country Name\": \"Christmas Island\",\n \"ISO2\": \"CX\",\n \"ISO3\": \"CXR\",\n \"Top Level Domain\": \"cx\",\n \"FIPS\": \"KT\",\n \"ISO Numeric\": 162,\n \"GeoNameID\": 2078138,\n \"E164\": 61,\n \"Phone Code\": 61,\n \"Continent\": \"Asia\",\n \"Capital\": \"Flying Fish Cove\",\n \"Time Zone in Capital\": \"Indian/Christmas\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en,zh,ms-CC\",\n \"Languages\": \"English (official), Chinese, Malay\",\n \"Area KM2\": 135,\n \"Internet Hosts\": 3028,\n \"Internet Users\": 464,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Cocos Islands\",\n \"ISO2\": \"CC\",\n \"ISO3\": \"CCK\",\n \"Top Level Domain\": \"cc\",\n \"FIPS\": \"CK\",\n \"ISO Numeric\": 166,\n \"GeoNameID\": 1547376,\n \"E164\": 61,\n \"Phone Code\": 61,\n \"Continent\": \"Asia\",\n \"Capital\": \"West Island\",\n \"Time Zone in Capital\": \"Indian/Cocos\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"ms-CC,en\",\n \"Languages\": \"Malay (Cocos dialect), English\",\n \"Area KM2\": 14,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Colombia\",\n \"ISO2\": \"CO\",\n \"ISO3\": \"COL\",\n \"Top Level Domain\": \"co\",\n \"FIPS\": \"CO\",\n \"ISO Numeric\": 170,\n \"GeoNameID\": 3686110,\n \"E164\": 57,\n \"Phone Code\": 57,\n \"Continent\": \"South America\",\n \"Capital\": \"Bogota\",\n \"Time Zone in Capital\": \"America/Bogota\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-CO\",\n \"Languages\": \"Spanish (official)\",\n \"Area KM2\": 1138910,\n \"Internet Hosts\": 4410000,\n \"Internet Users\": 22538000,\n \"Phones (Mobile)\": 49066000,\n \"Phones (Landline)\": 6291000,\n \"GDP\": 369200000000\n },\n {\n \"Country Name\": \"Comoros\",\n \"ISO2\": \"KM\",\n \"ISO3\": \"COM\",\n \"Top Level Domain\": \"km\",\n \"FIPS\": \"CN\",\n \"ISO Numeric\": 174,\n \"GeoNameID\": 921929,\n \"E164\": 269,\n \"Phone Code\": 269,\n \"Continent\": \"Africa\",\n \"Capital\": \"Moroni\",\n \"Time Zone in Capital\": \"Indian/Comoro\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"ar,fr-KM\",\n \"Languages\": \"Arabic (official), French (official), Shikomoro (a blend of Swahili and Arabic)\",\n \"Area KM2\": 2170,\n \"Internet Hosts\": 14,\n \"Internet Users\": 24300,\n \"Phones (Mobile)\": 250000,\n \"Phones (Landline)\": 24000,\n \"GDP\": 658000000\n },\n {\n \"Country Name\": \"Cook Islands\",\n \"ISO2\": \"CK\",\n \"ISO3\": \"COK\",\n \"Top Level Domain\": \"ck\",\n \"FIPS\": \"CW\",\n \"ISO Numeric\": 184,\n \"GeoNameID\": 1899402,\n \"E164\": 682,\n \"Phone Code\": 682,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Avarua\",\n \"Time Zone in Capital\": \"Pacific/Rarotonga\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-CK,mi\",\n \"Languages\": \"English (official) 86.4%, Cook Islands Maori (Rarotongan) (official) 76.2%, other 8.3%\",\n \"Area KM2\": 240,\n \"Internet Hosts\": 3562,\n \"Internet Users\": 6000,\n \"Phones (Mobile)\": 7800,\n \"Phones (Landline)\": 7200,\n \"GDP\": 183200000\n },\n {\n \"Country Name\": \"Costa Rica\",\n \"ISO2\": \"CR\",\n \"ISO3\": \"CRI\",\n \"Top Level Domain\": \"cr\",\n \"FIPS\": \"CS\",\n \"ISO Numeric\": 188,\n \"GeoNameID\": 3624060,\n \"E164\": 506,\n \"Phone Code\": 506,\n \"Continent\": \"North America\",\n \"Capital\": \"San Jose\",\n \"Time Zone in Capital\": \"America/Costa_Rica\",\n \"Currency\": \"Colon\",\n \"Language Codes\": \"es-CR,en\",\n \"Languages\": \"Spanish (official), English\",\n \"Area KM2\": 51100,\n \"Internet Hosts\": 147258,\n \"Internet Users\": 1485000,\n \"Phones (Mobile)\": 6151000,\n \"Phones (Landline)\": 1018000,\n \"GDP\": 48510000000\n },\n {\n \"Country Name\": \"Croatia\",\n \"ISO2\": \"HR\",\n \"ISO3\": \"HRV\",\n \"Top Level Domain\": \"hr\",\n \"FIPS\": \"HR\",\n \"ISO Numeric\": 191,\n \"GeoNameID\": 3202326,\n \"E164\": 385,\n \"Phone Code\": 385,\n \"Continent\": \"Europe\",\n \"Capital\": \"Zagreb\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Kuna\",\n \"Language Codes\": \"hr-HR,sr\",\n \"Languages\": \"Croatian (official) 95.6%, Serbian 1.2%, other 3% (including Hungarian, Czech, Slovak, and Albanian), unspecified 0.2% (2011 est.)\",\n \"Area KM2\": 56542,\n \"Internet Hosts\": 729420,\n \"Internet Users\": 2234000,\n \"Phones (Mobile)\": 4970000,\n \"Phones (Landline)\": 1640000,\n \"GDP\": 59140000000\n },\n {\n \"Country Name\": \"Cuba\",\n \"ISO2\": \"CU\",\n \"ISO3\": \"CUB\",\n \"Top Level Domain\": \"cu\",\n \"FIPS\": \"CU\",\n \"ISO Numeric\": 192,\n \"GeoNameID\": 3562981,\n \"E164\": 53,\n \"Phone Code\": 53,\n \"Continent\": \"North America\",\n \"Capital\": \"Havana\",\n \"Time Zone in Capital\": \"America/Havana\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-CU\",\n \"Languages\": \"Spanish (official)\",\n \"Area KM2\": 110860,\n \"Internet Hosts\": 3244,\n \"Internet Users\": 1606000,\n \"Phones (Mobile)\": 1682000,\n \"Phones (Landline)\": 1217000,\n \"GDP\": 72300000000\n },\n {\n \"Country Name\": \"Curacao\",\n \"ISO2\": \"CW\",\n \"ISO3\": \"CUW\",\n \"Top Level Domain\": \"cw\",\n \"FIPS\": \"UC\",\n \"ISO Numeric\": 531,\n \"GeoNameID\": 7626836,\n \"E164\": 599,\n \"Phone Code\": 599,\n \"Continent\": \"North America\",\n \"Capital\": \"Willemstad\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl,pap\",\n \"Languages\": \"Papiamentu (a Spanish-Portuguese-Dutch-English dialect) 81.2%, Dutch (official) 8%, Spanish 4%, English 2.9%, other 3.9% (2001 census)\",\n \"Area KM2\": 444,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 5600000000\n },\n {\n \"Country Name\": \"Cyprus\",\n \"ISO2\": \"CY\",\n \"ISO3\": \"CYP\",\n \"Top Level Domain\": \"cy\",\n \"FIPS\": \"CY\",\n \"ISO Numeric\": 196,\n \"GeoNameID\": 146669,\n \"E164\": 357,\n \"Phone Code\": 357,\n \"Continent\": \"Europe\",\n \"Capital\": \"Nicosia\",\n \"Time Zone in Capital\": \"Asia/Nicosia\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"el-CY,tr-CY,en\",\n \"Languages\": \"Greek (official) 80.9%, Turkish (official) 0.2%, English 4.1%, Romanian 2.9%, Russian 2.5%, Bulgarian 2.2%, Arabic 1.2%, Filippino 1.1%, other 4.3%, unspecified 0.6% (2011 est.)\",\n \"Area KM2\": 9250,\n \"Internet Hosts\": 252013,\n \"Internet Users\": 433900,\n \"Phones (Mobile)\": 1110000,\n \"Phones (Landline)\": 373200,\n \"GDP\": 21780000000\n },\n {\n \"Country Name\": \"Czech Republic\",\n \"ISO2\": \"CZ\",\n \"ISO3\": \"CZE\",\n \"Top Level Domain\": \"cz\",\n \"FIPS\": \"EZ\",\n \"ISO Numeric\": 203,\n \"GeoNameID\": 3077311,\n \"E164\": 420,\n \"Phone Code\": 420,\n \"Continent\": \"Europe\",\n \"Capital\": \"Prague\",\n \"Time Zone in Capital\": \"Europe/Prague\",\n \"Currency\": \"Koruna\",\n \"Language Codes\": \"cs,sk\",\n \"Languages\": \"Czech 95.4%, Slovak 1.6%, other 3% (2011 census)\",\n \"Area KM2\": 78866,\n \"Internet Hosts\": 4148000,\n \"Internet Users\": 6681000,\n \"Phones (Mobile)\": 12973000,\n \"Phones (Landline)\": 2100000,\n \"GDP\": 194800000000\n },\n {\n \"Country Name\": \"Democratic Republic of the Congo\",\n \"ISO2\": \"CD\",\n \"ISO3\": \"COD\",\n \"Top Level Domain\": \"cd\",\n \"FIPS\": \"CG\",\n \"ISO Numeric\": 180,\n \"GeoNameID\": 203312,\n \"E164\": 243,\n \"Phone Code\": 243,\n \"Continent\": \"Africa\",\n \"Capital\": \"Kinshasa\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CD,ln,kg\",\n \"Languages\": \"French (official), Lingala (a lingua franca trade language), Kingwana (a dialect of Kiswahili or Swahili), Kikongo, Tshiluba\",\n \"Area KM2\": 2345410,\n \"Internet Hosts\": 2515,\n \"Internet Users\": 290000,\n \"Phones (Mobile)\": 19487000,\n \"Phones (Landline)\": 58200,\n \"GDP\": 18560000000\n },\n {\n \"Country Name\": \"Denmark\",\n \"ISO2\": \"DK\",\n \"ISO3\": \"DNK\",\n \"Top Level Domain\": \"dk\",\n \"FIPS\": \"DA\",\n \"ISO Numeric\": 208,\n \"GeoNameID\": 2623032,\n \"E164\": 45,\n \"Phone Code\": 45,\n \"Continent\": \"Europe\",\n \"Capital\": \"Copenhagen\",\n \"Time Zone in Capital\": \"Europe/Copenhagen\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"da-DK,en,fo,de-DK\",\n \"Languages\": \"Danish, Faroese, Greenlandic (an Inuit dialect), German (small minority)\",\n \"Area KM2\": 43094,\n \"Internet Hosts\": 4297000,\n \"Internet Users\": 4750000,\n \"Phones (Mobile)\": 6600000,\n \"Phones (Landline)\": 2431000,\n \"GDP\": 324300000000\n },\n {\n \"Country Name\": \"Djibouti\",\n \"ISO2\": \"DJ\",\n \"ISO3\": \"DJI\",\n \"Top Level Domain\": \"dj\",\n \"FIPS\": \"DJ\",\n \"ISO Numeric\": 262,\n \"GeoNameID\": 223816,\n \"E164\": 253,\n \"Phone Code\": 253,\n \"Continent\": \"Africa\",\n \"Capital\": \"Djibouti\",\n \"Time Zone in Capital\": \"Africa/Djibouti\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-DJ,ar,so-DJ,aa\",\n \"Languages\": \"French (official), Arabic (official), Somali, Afar\",\n \"Area KM2\": 23000,\n \"Internet Hosts\": 215,\n \"Internet Users\": 25900,\n \"Phones (Mobile)\": 209000,\n \"Phones (Landline)\": 18000,\n \"GDP\": 1459000000\n },\n {\n \"Country Name\": \"Dominica\",\n \"ISO2\": \"DM\",\n \"ISO3\": \"DMA\",\n \"Top Level Domain\": \"dm\",\n \"FIPS\": \"DO\",\n \"ISO Numeric\": 212,\n \"GeoNameID\": 3575830,\n \"E164\": 1,\n \"Phone Code\": \"1-767\",\n \"Continent\": \"North America\",\n \"Capital\": \"Roseau\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-DM\",\n \"Languages\": \"English (official), French patois\",\n \"Area KM2\": 754,\n \"Internet Hosts\": 723,\n \"Internet Users\": 28000,\n \"Phones (Mobile)\": 109300,\n \"Phones (Landline)\": 14600,\n \"GDP\": 495000000\n },\n {\n \"Country Name\": \"Dominican Republic\",\n \"ISO2\": \"DO\",\n \"ISO3\": \"DOM\",\n \"Top Level Domain\": \"do\",\n \"FIPS\": \"DR\",\n \"ISO Numeric\": 214,\n \"GeoNameID\": 3508796,\n \"E164\": 1,\n \"Phone Code\": \"1-809, 1-829, 1-849\",\n \"Continent\": \"North America\",\n \"Capital\": \"Santo Domingo\",\n \"Time Zone in Capital\": \"America/Santo_Domingo\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-DO\",\n \"Languages\": \"Spanish (official)\",\n \"Area KM2\": 48730,\n \"Internet Hosts\": 404500,\n \"Internet Users\": 2701000,\n \"Phones (Mobile)\": 9038000,\n \"Phones (Landline)\": 1065000,\n \"GDP\": 59270000000\n },\n {\n \"Country Name\": \"East Timor\",\n \"ISO2\": \"TL\",\n \"ISO3\": \"TLS\",\n \"Top Level Domain\": \"tl\",\n \"FIPS\": \"TT\",\n \"ISO Numeric\": 626,\n \"GeoNameID\": 1966436,\n \"E164\": 670,\n \"Phone Code\": 670,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Dili\",\n \"Time Zone in Capital\": \"Asia/Dili\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"tet,pt-TL,id,en\",\n \"Languages\": \"Tetum (official), Portuguese (official), Indonesian, English\",\n \"Area KM2\": 15007,\n \"Internet Hosts\": 252,\n \"Internet Users\": 2100,\n \"Phones (Mobile)\": 621000,\n \"Phones (Landline)\": 3000,\n \"GDP\": 6129000000\n },\n {\n \"Country Name\": \"Ecuador\",\n \"ISO2\": \"EC\",\n \"ISO3\": \"ECU\",\n \"Top Level Domain\": \"ec\",\n \"FIPS\": \"EC\",\n \"ISO Numeric\": 218,\n \"GeoNameID\": 3658394,\n \"E164\": 593,\n \"Phone Code\": 593,\n \"Continent\": \"South America\",\n \"Capital\": \"Quito\",\n \"Time Zone in Capital\": \"America/Guayaquil\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"es-EC\",\n \"Languages\": \"Spanish (Castillian) 93% (official), Quechua 4.1%, other indigenous 0.7%, foreign 2.2%\",\n \"Area KM2\": 283560,\n \"Internet Hosts\": 170538,\n \"Internet Users\": 3352000,\n \"Phones (Mobile)\": 16457000,\n \"Phones (Landline)\": 2310000,\n \"GDP\": 91410000000\n },\n {\n \"Country Name\": \"Egypt\",\n \"ISO2\": \"EG\",\n \"ISO3\": \"EGY\",\n \"Top Level Domain\": \"eg\",\n \"FIPS\": \"EG\",\n \"ISO Numeric\": 818,\n \"GeoNameID\": 357994,\n \"E164\": 20,\n \"Phone Code\": 20,\n \"Continent\": \"Africa\",\n \"Capital\": \"Cairo\",\n \"Time Zone in Capital\": \"Africa/Cairo\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-EG,en,fr\",\n \"Languages\": \"Arabic (official), English and French widely understood by educated classes\",\n \"Area KM2\": 1001450,\n \"Internet Hosts\": 200430,\n \"Internet Users\": 20136000,\n \"Phones (Mobile)\": 96800000,\n \"Phones (Landline)\": 8557000,\n \"GDP\": 262000000000\n },\n {\n \"Country Name\": \"El Salvador\",\n \"ISO2\": \"SV\",\n \"ISO3\": \"SLV\",\n \"Top Level Domain\": \"sv\",\n \"FIPS\": \"ES\",\n \"ISO Numeric\": 222,\n \"GeoNameID\": 3585968,\n \"E164\": 503,\n \"Phone Code\": 503,\n \"Continent\": \"North America\",\n \"Capital\": \"San Salvador\",\n \"Time Zone in Capital\": \"America/El_Salvador\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"es-SV\",\n \"Languages\": \"Spanish (official), Nahua (among some Amerindians)\",\n \"Area KM2\": 21040,\n \"Internet Hosts\": 24070,\n \"Internet Users\": 746000,\n \"Phones (Mobile)\": 8650000,\n \"Phones (Landline)\": 1060000,\n \"GDP\": 24670000000\n },\n {\n \"Country Name\": \"Equatorial Guinea\",\n \"ISO2\": \"GQ\",\n \"ISO3\": \"GNQ\",\n \"Top Level Domain\": \"gq\",\n \"FIPS\": \"EK\",\n \"ISO Numeric\": 226,\n \"GeoNameID\": 2309096,\n \"E164\": 240,\n \"Phone Code\": 240,\n \"Continent\": \"Africa\",\n \"Capital\": \"Malabo\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"es-GQ,fr\",\n \"Languages\": \"Spanish (official) 67.6%, other (includes French (official), Fang, Bubi) 32.4% (1994 census)\",\n \"Area KM2\": 28051,\n \"Internet Hosts\": 7,\n \"Internet Users\": 14400,\n \"Phones (Mobile)\": 501000,\n \"Phones (Landline)\": 14900,\n \"GDP\": 17080000000\n },\n {\n \"Country Name\": \"Eritrea\",\n \"ISO2\": \"ER\",\n \"ISO3\": \"ERI\",\n \"Top Level Domain\": \"er\",\n \"FIPS\": \"ER\",\n \"ISO Numeric\": 232,\n \"GeoNameID\": 338010,\n \"E164\": 291,\n \"Phone Code\": 291,\n \"Continent\": \"Africa\",\n \"Capital\": \"Asmara\",\n \"Time Zone in Capital\": \"Africa/Asmara\",\n \"Currency\": \"Nakfa\",\n \"Language Codes\": \"aa-ER,ar,tig,kun,ti-ER\",\n \"Languages\": \"Tigrinya (official), Arabic (official), English (official), Tigre, Kunama, Afar, other Cushitic languages\",\n \"Area KM2\": 121320,\n \"Internet Hosts\": 701,\n \"Internet Users\": 200000,\n \"Phones (Mobile)\": 305300,\n \"Phones (Landline)\": 60000,\n \"GDP\": 3438000000\n },\n {\n \"Country Name\": \"Estonia\",\n \"ISO2\": \"EE\",\n \"ISO3\": \"EST\",\n \"Top Level Domain\": \"ee\",\n \"FIPS\": \"EN\",\n \"ISO Numeric\": 233,\n \"GeoNameID\": 453733,\n \"E164\": 372,\n \"Phone Code\": 372,\n \"Continent\": \"Europe\",\n \"Capital\": \"Tallinn\",\n \"Time Zone in Capital\": \"Europe/Tallinn\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"et,ru\",\n \"Languages\": \"Estonian (official) 68.5%, Russian 29.6%, Ukrainian 0.6%, other 1.2%, unspecified 0.1% (2011 est.)\",\n \"Area KM2\": 45226,\n \"Internet Hosts\": 865494,\n \"Internet Users\": 971700,\n \"Phones (Mobile)\": 2070000,\n \"Phones (Landline)\": 448200,\n \"GDP\": 24280000000\n },\n {\n \"Country Name\": \"Ethiopia\",\n \"ISO2\": \"ET\",\n \"ISO3\": \"ETH\",\n \"Top Level Domain\": \"et\",\n \"FIPS\": \"ET\",\n \"ISO Numeric\": 231,\n \"GeoNameID\": 337996,\n \"E164\": 251,\n \"Phone Code\": 251,\n \"Continent\": \"Africa\",\n \"Capital\": \"Addis Ababa\",\n \"Time Zone in Capital\": \"Africa/Addis_Ababa\",\n \"Currency\": \"Birr\",\n \"Language Codes\": \"am,en-ET,om-ET,ti-ET,so-ET,sid\",\n \"Languages\": \"Oromo (official working language in the State of Oromiya) 33.8%, Amharic (official national language) 29.3%, Somali (official working language of the State of Sumale) 6.2%, Tigrigna (Tigrinya) (official working language of the State of Tigray) 5.9%, Sidamo 4%, Wolaytta 2.2%, Gurage 2%, Afar (official working language of the State of Afar) 1.7%, Hadiyya 1.7%, Gamo 1.5%, Gedeo 1.3%, Opuuo 1.2%, Kafa 1.1%, other 8.1%, English (major foreign language taught in schools), Arabic (2007 est.)\",\n \"Area KM2\": 1127127,\n \"Internet Hosts\": 179,\n \"Internet Users\": 447300,\n \"Phones (Mobile)\": 20524000,\n \"Phones (Landline)\": 797500,\n \"GDP\": 47340000000\n },\n {\n \"Country Name\": \"Falkland Islands\",\n \"ISO2\": \"FK\",\n \"ISO3\": \"FLK\",\n \"Top Level Domain\": \"fk\",\n \"FIPS\": \"FK\",\n \"ISO Numeric\": 238,\n \"GeoNameID\": 3474414,\n \"E164\": 500,\n \"Phone Code\": 500,\n \"Continent\": \"South America\",\n \"Capital\": \"Stanley\",\n \"Time Zone in Capital\": \"Atlantic/Stanley\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-FK\",\n \"Languages\": \"English 89%, Spanish 7.7%, other 3.3% (2006 est.)\",\n \"Area KM2\": 12173,\n \"Internet Hosts\": 110,\n \"Internet Users\": 2900,\n \"Phones (Mobile)\": 3450,\n \"Phones (Landline)\": 1980,\n \"GDP\": 164500000\n },\n {\n \"Country Name\": \"Faroe Islands\",\n \"ISO2\": \"FO\",\n \"ISO3\": \"FRO\",\n \"Top Level Domain\": \"fo\",\n \"FIPS\": \"FO\",\n \"ISO Numeric\": 234,\n \"GeoNameID\": 2622320,\n \"E164\": 298,\n \"Phone Code\": 298,\n \"Continent\": \"Europe\",\n \"Capital\": \"Torshavn\",\n \"Time Zone in Capital\": \"Atlantic/Faroe\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"fo,da-FO\",\n \"Languages\": \"Faroese (derived from Old Norse), Danish\",\n \"Area KM2\": 1399,\n \"Internet Hosts\": 7575,\n \"Internet Users\": 37500,\n \"Phones (Mobile)\": 61000,\n \"Phones (Landline)\": 24000,\n \"GDP\": 2320000000\n },\n {\n \"Country Name\": \"Fiji\",\n \"ISO2\": \"FJ\",\n \"ISO3\": \"FJI\",\n \"Top Level Domain\": \"fj\",\n \"FIPS\": \"FJ\",\n \"ISO Numeric\": 242,\n \"GeoNameID\": 2205218,\n \"E164\": 679,\n \"Phone Code\": 679,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Suva\",\n \"Time Zone in Capital\": \"Pacific/Fiji\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-FJ,fj\",\n \"Languages\": \"English (official), Fijian (official), Hindustani\",\n \"Area KM2\": 18270,\n \"Internet Hosts\": 21739,\n \"Internet Users\": 114200,\n \"Phones (Mobile)\": 858800,\n \"Phones (Landline)\": 88400,\n \"GDP\": 4218000000\n },\n {\n \"Country Name\": \"Finland\",\n \"ISO2\": \"FI\",\n \"ISO3\": \"FIN\",\n \"Top Level Domain\": \"fi\",\n \"FIPS\": \"FI\",\n \"ISO Numeric\": 246,\n \"GeoNameID\": 660013,\n \"E164\": 358,\n \"Phone Code\": 358,\n \"Continent\": \"Europe\",\n \"Capital\": \"Helsinki\",\n \"Time Zone in Capital\": \"Europe/Helsinki\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fi-FI,sv-FI,smn\",\n \"Languages\": \"Finnish (official) 94.2%, Swedish (official) 5.5%, other (small Sami- and Russian-speaking minorities) 0.2% (2012 est.)\",\n \"Area KM2\": 337030,\n \"Internet Hosts\": 4763000,\n \"Internet Users\": 4393000,\n \"Phones (Mobile)\": 9320000,\n \"Phones (Landline)\": 890000,\n \"GDP\": 259600000000\n },\n {\n \"Country Name\": \"France\",\n \"ISO2\": \"FR\",\n \"ISO3\": \"FRA\",\n \"Top Level Domain\": \"fr\",\n \"FIPS\": \"FR\",\n \"ISO Numeric\": 250,\n \"GeoNameID\": 3017382,\n \"E164\": 33,\n \"Phone Code\": 33,\n \"Continent\": \"Europe\",\n \"Capital\": \"Paris\",\n \"Time Zone in Capital\": \"Europe/Paris\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-FR,frp,br,co,ca,eu,oc\",\n \"Languages\": \"French (official) 100%, rapidly declining regional dialects and languages (Provencal, Breton, Alsatian, Corsican, Catalan, Basque, Flemish)\",\n \"Area KM2\": 547030,\n \"Internet Hosts\": 17266000,\n \"Internet Users\": 45262000,\n \"Phones (Mobile)\": 62280000,\n \"Phones (Landline)\": 39290000,\n \"GDP\": 2739000000000\n },\n {\n \"Country Name\": \"French Polynesia\",\n \"ISO2\": \"PF\",\n \"ISO3\": \"PYF\",\n \"Top Level Domain\": \"pf\",\n \"FIPS\": \"FP\",\n \"ISO Numeric\": 258,\n \"GeoNameID\": 4030656,\n \"E164\": 689,\n \"Phone Code\": 689,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Papeete\",\n \"Time Zone in Capital\": \"Pacific/Tahiti\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-PF,ty\",\n \"Languages\": \"French (official) 61.1%, Polynesian (official) 31.4%, Asian languages 1.2%, other 0.3%, unspecified 6% (2002 census)\",\n \"Area KM2\": 4167,\n \"Internet Hosts\": 37949,\n \"Internet Users\": 120000,\n \"Phones (Mobile)\": 226000,\n \"Phones (Landline)\": 55000,\n \"GDP\": 5650000000\n },\n {\n \"Country Name\": \"Gabon\",\n \"ISO2\": \"GA\",\n \"ISO3\": \"GAB\",\n \"Top Level Domain\": \"ga\",\n \"FIPS\": \"GB\",\n \"ISO Numeric\": 266,\n \"GeoNameID\": 2400553,\n \"E164\": 241,\n \"Phone Code\": 241,\n \"Continent\": \"Africa\",\n \"Capital\": \"Libreville\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-GA\",\n \"Languages\": \"French (official), Fang, Myene, Nzebi, Bapounou/Eschira, Bandjabi\",\n \"Area KM2\": 267667,\n \"Internet Hosts\": 127,\n \"Internet Users\": 98800,\n \"Phones (Mobile)\": 2930000,\n \"Phones (Landline)\": 17000,\n \"GDP\": 19970000000\n },\n {\n \"Country Name\": \"Gambia\",\n \"ISO2\": \"GM\",\n \"ISO3\": \"GMB\",\n \"Top Level Domain\": \"gm\",\n \"FIPS\": \"GA\",\n \"ISO Numeric\": 270,\n \"GeoNameID\": 2413451,\n \"E164\": 220,\n \"Phone Code\": 220,\n \"Continent\": \"Africa\",\n \"Capital\": \"Banjul\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Dalasi\",\n \"Language Codes\": \"en-GM,mnk,wof,wo,ff\",\n \"Languages\": \"English (official), Mandinka, Wolof, Fula, other indigenous vernaculars\",\n \"Area KM2\": 11300,\n \"Internet Hosts\": 656,\n \"Internet Users\": 130100,\n \"Phones (Mobile)\": 1526000,\n \"Phones (Landline)\": 64200,\n \"GDP\": 896000000\n },\n {\n \"Country Name\": \"Georgia\",\n \"ISO2\": \"GE\",\n \"ISO3\": \"GEO\",\n \"Top Level Domain\": \"ge\",\n \"FIPS\": \"GG\",\n \"ISO Numeric\": 268,\n \"GeoNameID\": 614540,\n \"E164\": 995,\n \"Phone Code\": 995,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tbilisi\",\n \"Time Zone in Capital\": \"Asia/Tbilisi\",\n \"Currency\": \"Lari\",\n \"Language Codes\": \"ka,ru,hy,az\",\n \"Languages\": \"Georgian (official) 71%, Russian 9%, Armenian 7%, Azeri 6%, other 7%\",\n \"Area KM2\": 69700,\n \"Internet Hosts\": 357864,\n \"Internet Users\": 1300000,\n \"Phones (Mobile)\": 4699000,\n \"Phones (Landline)\": 1276000,\n \"GDP\": 15950000000\n },\n {\n \"Country Name\": \"Germany\",\n \"ISO2\": \"DE\",\n \"ISO3\": \"DEU\",\n \"Top Level Domain\": \"de\",\n \"FIPS\": \"GM\",\n \"ISO Numeric\": 276,\n \"GeoNameID\": 2921044,\n \"E164\": 49,\n \"Phone Code\": 49,\n \"Continent\": \"Europe\",\n \"Capital\": \"Berlin\",\n \"Time Zone in Capital\": \"Europe/Berlin\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"de\",\n \"Languages\": \"German (official)\",\n \"Area KM2\": 357021,\n \"Internet Hosts\": 20043000,\n \"Internet Users\": 65125000,\n \"Phones (Mobile)\": 107700000,\n \"Phones (Landline)\": 50700000,\n \"GDP\": 3593000000000\n },\n {\n \"Country Name\": \"Ghana\",\n \"ISO2\": \"GH\",\n \"ISO3\": \"GHA\",\n \"Top Level Domain\": \"gh\",\n \"FIPS\": \"GH\",\n \"ISO Numeric\": 288,\n \"GeoNameID\": 2300660,\n \"E164\": 233,\n \"Phone Code\": 233,\n \"Continent\": \"Africa\",\n \"Capital\": \"Accra\",\n \"Time Zone in Capital\": \"Africa/Accra\",\n \"Currency\": \"Cedi\",\n \"Language Codes\": \"en-GH,ak,ee,tw\",\n \"Languages\": \"Asante 14.8%, Ewe 12.7%, Fante 9.9%, Boron (Brong) 4.6%, Dagomba 4.3%, Dangme 4.3%, Dagarte (Dagaba) 3.7%, Akyem 3.4%, Ga 3.4%, Akuapem 2.9%, other (includes English (official)) 36.1% (2000 census)\",\n \"Area KM2\": 239460,\n \"Internet Hosts\": 59086,\n \"Internet Users\": 1297000,\n \"Phones (Mobile)\": 25618000,\n \"Phones (Landline)\": 285000,\n \"GDP\": 45550000000\n },\n {\n \"Country Name\": \"Gibraltar\",\n \"ISO2\": \"GI\",\n \"ISO3\": \"GIB\",\n \"Top Level Domain\": \"gi\",\n \"FIPS\": \"GI\",\n \"ISO Numeric\": 292,\n \"GeoNameID\": 2411586,\n \"E164\": 350,\n \"Phone Code\": 350,\n \"Continent\": \"Europe\",\n \"Capital\": \"Gibraltar\",\n \"Time Zone in Capital\": \"Europe/Gibraltar\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-GI,es,it,pt\",\n \"Languages\": \"English (used in schools and for official purposes), Spanish, Italian, Portuguese\",\n \"Area KM2\": 7,\n \"Internet Hosts\": 3509,\n \"Internet Users\": 20200,\n \"Phones (Mobile)\": 34750,\n \"Phones (Landline)\": 23100,\n \"GDP\": 1106000000\n },\n {\n \"Country Name\": \"Greece\",\n \"ISO2\": \"GR\",\n \"ISO3\": \"GRC\",\n \"Top Level Domain\": \"gr\",\n \"FIPS\": \"GR\",\n \"ISO Numeric\": 300,\n \"GeoNameID\": 390903,\n \"E164\": 30,\n \"Phone Code\": 30,\n \"Continent\": \"Europe\",\n \"Capital\": \"Athens\",\n \"Time Zone in Capital\": \"Europe/Athens\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"el-GR,en,fr\",\n \"Languages\": \"Greek (official) 99%, other (includes English and French) 1%\",\n \"Area KM2\": 131940,\n \"Internet Hosts\": 3201000,\n \"Internet Users\": 4971000,\n \"Phones (Mobile)\": 13354000,\n \"Phones (Landline)\": 5461000,\n \"GDP\": 243300000000\n },\n {\n \"Country Name\": \"Greenland\",\n \"ISO2\": \"GL\",\n \"ISO3\": \"GRL\",\n \"Top Level Domain\": \"gl\",\n \"FIPS\": \"GL\",\n \"ISO Numeric\": 304,\n \"GeoNameID\": 3425505,\n \"E164\": 299,\n \"Phone Code\": 299,\n \"Continent\": \"North America\",\n \"Capital\": \"Nuuk\",\n \"Time Zone in Capital\": \"America/Godthab\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"kl,da-GL,en\",\n \"Languages\": \"Greenlandic (East Inuit) (official), Danish (official), English\",\n \"Area KM2\": 2166086,\n \"Internet Hosts\": 15645,\n \"Internet Users\": 36000,\n \"Phones (Mobile)\": 59455,\n \"Phones (Landline)\": 18900,\n \"GDP\": 2160000000\n },\n {\n \"Country Name\": \"Grenada\",\n \"ISO2\": \"GD\",\n \"ISO3\": \"GRD\",\n \"Top Level Domain\": \"gd\",\n \"FIPS\": \"GJ\",\n \"ISO Numeric\": 308,\n \"GeoNameID\": 3580239,\n \"E164\": 1,\n \"Phone Code\": \"1-473\",\n \"Continent\": \"North America\",\n \"Capital\": \"St. George's\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-GD\",\n \"Languages\": \"English (official), French patois\",\n \"Area KM2\": 344,\n \"Internet Hosts\": 80,\n \"Internet Users\": 25000,\n \"Phones (Mobile)\": 128000,\n \"Phones (Landline)\": 28500,\n \"GDP\": 811000000\n },\n {\n \"Country Name\": \"Guam\",\n \"ISO2\": \"GU\",\n \"ISO3\": \"GUM\",\n \"Top Level Domain\": \"gu\",\n \"FIPS\": \"GQ\",\n \"ISO Numeric\": 316,\n \"GeoNameID\": 4043988,\n \"E164\": 1,\n \"Phone Code\": \"1-671\",\n \"Continent\": \"Oceania\",\n \"Capital\": \"Hagatna\",\n \"Time Zone in Capital\": \"Pacific/Guam\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-GU,ch-GU\",\n \"Languages\": \"English 43.6%, Filipino 21.2%, Chamorro 17.8%, other Pacific island languages 10%, Asian languages 6.3%, other 1.1% (2010 est.)\",\n \"Area KM2\": 549,\n \"Internet Hosts\": 23,\n \"Internet Users\": 90000,\n \"Phones (Mobile)\": 98000,\n \"Phones (Landline)\": 67000,\n \"GDP\": 4600000000\n },\n {\n \"Country Name\": \"Guatemala\",\n \"ISO2\": \"GT\",\n \"ISO3\": \"GTM\",\n \"Top Level Domain\": \"gt\",\n \"FIPS\": \"GT\",\n \"ISO Numeric\": 320,\n \"GeoNameID\": 3595528,\n \"E164\": 502,\n \"Phone Code\": 502,\n \"Continent\": \"North America\",\n \"Capital\": \"Guatemala City\",\n \"Time Zone in Capital\": \"America/Guatemala\",\n \"Currency\": \"Quetzal\",\n \"Language Codes\": \"es-GT\",\n \"Languages\": \"Spanish (official) 60%, Amerindian languages 40%\",\n \"Area KM2\": 108890,\n \"Internet Hosts\": 357552,\n \"Internet Users\": 2279000,\n \"Phones (Mobile)\": 20787000,\n \"Phones (Landline)\": 1744000,\n \"GDP\": 53900000000\n },\n {\n \"Country Name\": \"Guernsey\",\n \"ISO2\": \"GG\",\n \"ISO3\": \"GGY\",\n \"Top Level Domain\": \"gg\",\n \"FIPS\": \"GK\",\n \"ISO Numeric\": 831,\n \"GeoNameID\": 3042362,\n \"E164\": 44,\n \"Phone Code\": \"44-1481\",\n \"Continent\": \"Europe\",\n \"Capital\": \"St Peter Port\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en,fr\",\n \"Languages\": \"English, French, Norman-French dialect spoken in country districts\",\n \"Area KM2\": 78,\n \"Internet Hosts\": 239,\n \"Internet Users\": 48300,\n \"Phones (Mobile)\": 43800,\n \"Phones (Landline)\": 45100,\n \"GDP\": 2742000000\n },\n {\n \"Country Name\": \"Guinea\",\n \"ISO2\": \"GN\",\n \"ISO3\": \"GIN\",\n \"Top Level Domain\": \"gn\",\n \"FIPS\": \"GV\",\n \"ISO Numeric\": 324,\n \"GeoNameID\": 2420477,\n \"E164\": 224,\n \"Phone Code\": 224,\n \"Continent\": \"Africa\",\n \"Capital\": \"Conakry\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-GN\",\n \"Languages\": \"French (official)\",\n \"Area KM2\": 245857,\n \"Internet Hosts\": 15,\n \"Internet Users\": 95000,\n \"Phones (Mobile)\": 4781000,\n \"Phones (Landline)\": 18000,\n \"GDP\": 6544000000\n },\n {\n \"Country Name\": \"Guinea-Bissau\",\n \"ISO2\": \"GW\",\n \"ISO3\": \"GNB\",\n \"Top Level Domain\": \"gw\",\n \"FIPS\": \"PU\",\n \"ISO Numeric\": 624,\n \"GeoNameID\": 2372248,\n \"E164\": 245,\n \"Phone Code\": 245,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bissau\",\n \"Time Zone in Capital\": \"Africa/Bissau\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"pt-GW,pov\",\n \"Languages\": \"Portuguese (official), Crioulo, African languages\",\n \"Area KM2\": 36120,\n \"Internet Hosts\": 90,\n \"Internet Users\": 37100,\n \"Phones (Mobile)\": 1100000,\n \"Phones (Landline)\": 5000,\n \"GDP\": 880000000\n },\n {\n \"Country Name\": \"Guyana\",\n \"ISO2\": \"GY\",\n \"ISO3\": \"GUY\",\n \"Top Level Domain\": \"gy\",\n \"FIPS\": \"GY\",\n \"ISO Numeric\": 328,\n \"GeoNameID\": 3378535,\n \"E164\": 592,\n \"Phone Code\": 592,\n \"Continent\": \"South America\",\n \"Capital\": \"Georgetown\",\n \"Time Zone in Capital\": \"America/Guyana\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-GY\",\n \"Languages\": \"English, Amerindian dialects, Creole, Caribbean Hindustani (a dialect of Hindi), Urdu\",\n \"Area KM2\": 214970,\n \"Internet Hosts\": 24936,\n \"Internet Users\": 189600,\n \"Phones (Mobile)\": 547000,\n \"Phones (Landline)\": 154200,\n \"GDP\": 3020000000\n },\n {\n \"Country Name\": \"Haiti\",\n \"ISO2\": \"HT\",\n \"ISO3\": \"HTI\",\n \"Top Level Domain\": \"ht\",\n \"FIPS\": \"HA\",\n \"ISO Numeric\": 332,\n \"GeoNameID\": 3723988,\n \"E164\": 509,\n \"Phone Code\": 509,\n \"Continent\": \"North America\",\n \"Capital\": \"Port-au-Prince\",\n \"Time Zone in Capital\": \"America/Port-au-Prince\",\n \"Currency\": \"Gourde\",\n \"Language Codes\": \"ht,fr-HT\",\n \"Languages\": \"French (official), Creole (official)\",\n \"Area KM2\": 27750,\n \"Internet Hosts\": 555,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 6095000,\n \"Phones (Landline)\": 50000,\n \"GDP\": 8287000000\n },\n {\n \"Country Name\": \"Honduras\",\n \"ISO2\": \"HN\",\n \"ISO3\": \"HND\",\n \"Top Level Domain\": \"hn\",\n \"FIPS\": \"HO\",\n \"ISO Numeric\": 340,\n \"GeoNameID\": 3608932,\n \"E164\": 504,\n \"Phone Code\": 504,\n \"Continent\": \"North America\",\n \"Capital\": \"Tegucigalpa\",\n \"Time Zone in Capital\": \"America/Tegucigalpa\",\n \"Currency\": \"Lempira\",\n \"Language Codes\": \"es-HN\",\n \"Languages\": \"Spanish (official), Amerindian dialects\",\n \"Area KM2\": 112090,\n \"Internet Hosts\": 30955,\n \"Internet Users\": 731700,\n \"Phones (Mobile)\": 7370000,\n \"Phones (Landline)\": 610000,\n \"GDP\": 18880000000\n },\n {\n \"Country Name\": \"Hong Kong\",\n \"ISO2\": \"HK\",\n \"ISO3\": \"HKG\",\n \"Top Level Domain\": \"hk\",\n \"FIPS\": \"HK\",\n \"ISO Numeric\": 344,\n \"GeoNameID\": 1819730,\n \"E164\": 852,\n \"Phone Code\": 852,\n \"Continent\": \"Asia\",\n \"Capital\": \"Hong Kong\",\n \"Time Zone in Capital\": \"Asia/Hong_Kong\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"zh-HK,yue,zh,en\",\n \"Languages\": \"Cantonese (official) 89.5%, English (official) 3.5%, Putonghua (Mandarin) 1.4%, other Chinese dialects 4%, other 1.6% (2011 est.)\",\n \"Area KM2\": 1092,\n \"Internet Hosts\": 870041,\n \"Internet Users\": 4873000,\n \"Phones (Mobile)\": 16403000,\n \"Phones (Landline)\": 4362000,\n \"GDP\": 272100000000\n },\n {\n \"Country Name\": \"Hungary\",\n \"ISO2\": \"HU\",\n \"ISO3\": \"HUN\",\n \"Top Level Domain\": \"hu\",\n \"FIPS\": \"HU\",\n \"ISO Numeric\": 348,\n \"GeoNameID\": 719819,\n \"E164\": 36,\n \"Phone Code\": 36,\n \"Continent\": \"Europe\",\n \"Capital\": \"Budapest\",\n \"Time Zone in Capital\": \"Europe/Budapest\",\n \"Currency\": \"Forint\",\n \"Language Codes\": \"hu-HU\",\n \"Languages\": \"Hungarian (official) 99.6%, English 16%, German 11.2%, Russian 1.6%, Romanian 1.3%, French 1.2%, other 4.2%\",\n \"Area KM2\": 93030,\n \"Internet Hosts\": 3145000,\n \"Internet Users\": 6176000,\n \"Phones (Mobile)\": 11580000,\n \"Phones (Landline)\": 2960000,\n \"GDP\": 130600000000\n },\n {\n \"Country Name\": \"Iceland\",\n \"ISO2\": \"IS\",\n \"ISO3\": \"ISL\",\n \"Top Level Domain\": \"is\",\n \"FIPS\": \"IC\",\n \"ISO Numeric\": 352,\n \"GeoNameID\": 2629691,\n \"E164\": 354,\n \"Phone Code\": 354,\n \"Continent\": \"Europe\",\n \"Capital\": \"Reykjavik\",\n \"Time Zone in Capital\": \"Atlantic/Reykjavik\",\n \"Currency\": \"Krona\",\n \"Language Codes\": \"is,en,de,da,sv,no\",\n \"Languages\": \"Icelandic, English, Nordic languages, German widely spoken\",\n \"Area KM2\": 103000,\n \"Internet Hosts\": 369969,\n \"Internet Users\": 301600,\n \"Phones (Mobile)\": 346000,\n \"Phones (Landline)\": 189000,\n \"GDP\": 14590000000\n },\n {\n \"Country Name\": \"India\",\n \"ISO2\": \"IN\",\n \"ISO3\": \"IND\",\n \"Top Level Domain\": \"in\",\n \"FIPS\": \"IN\",\n \"ISO Numeric\": 356,\n \"GeoNameID\": 1269750,\n \"E164\": 91,\n \"Phone Code\": 91,\n \"Continent\": \"Asia\",\n \"Capital\": \"New Delhi\",\n \"Time Zone in Capital\": \"Asia/Kolkata\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc\",\n \"Languages\": \"Hindi 41%, Bengali 8.1%, Telugu 7.2%, Marathi 7%, Tamil 5.9%, Urdu 5%, Gujarati 4.5%, Kannada 3.7%, Malayalam 3.2%, Oriya 3.2%, Punjabi 2.8%, Assamese 1.3%, Maithili 1.2%, other 5.9%\",\n \"Area KM2\": 3287590,\n \"Internet Hosts\": 6746000,\n \"Internet Users\": 61338000,\n \"Phones (Mobile)\": 893862000,\n \"Phones (Landline)\": 31080000,\n \"GDP\": 1670000000000\n },\n {\n \"Country Name\": \"Indonesia\",\n \"ISO2\": \"ID\",\n \"ISO3\": \"IDN\",\n \"Top Level Domain\": \"id\",\n \"FIPS\": \"ID\",\n \"ISO Numeric\": 360,\n \"GeoNameID\": 1643084,\n \"E164\": 62,\n \"Phone Code\": 62,\n \"Continent\": \"Asia\",\n \"Capital\": \"Jakarta\",\n \"Time Zone in Capital\": \"Asia/Jakarta\",\n \"Currency\": \"Rupiah\",\n \"Language Codes\": \"id,en,nl,jv\",\n \"Languages\": \"Bahasa Indonesia (official, modified form of Malay), English, Dutch, local dialects (of which the most widely spoken is Javanese)\",\n \"Area KM2\": 1919440,\n \"Internet Hosts\": 1344000,\n \"Internet Users\": 20000000,\n \"Phones (Mobile)\": 281960000,\n \"Phones (Landline)\": 37983000,\n \"GDP\": 867500000000\n },\n {\n \"Country Name\": \"Iran\",\n \"ISO2\": \"IR\",\n \"ISO3\": \"IRN\",\n \"Top Level Domain\": \"ir\",\n \"FIPS\": \"IR\",\n \"ISO Numeric\": 364,\n \"GeoNameID\": 130758,\n \"E164\": 98,\n \"Phone Code\": 98,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tehran\",\n \"Time Zone in Capital\": \"Asia/Tehran\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"fa-IR,ku\",\n \"Languages\": \"Persian (official) 53%, Azeri Turkic and Turkic dialects 18%, Kurdish 10%, Gilaki and Mazandarani 7%, Luri 6%, Balochi 2%, Arabic 2%, other 2%\",\n \"Area KM2\": 1648000,\n \"Internet Hosts\": 197804,\n \"Internet Users\": 8214000,\n \"Phones (Mobile)\": 58160000,\n \"Phones (Landline)\": 28760000,\n \"GDP\": 411900000000\n },\n {\n \"Country Name\": \"Iraq\",\n \"ISO2\": \"IQ\",\n \"ISO3\": \"IRQ\",\n \"Top Level Domain\": \"iq\",\n \"FIPS\": \"IZ\",\n \"ISO Numeric\": 368,\n \"GeoNameID\": 99237,\n \"E164\": 964,\n \"Phone Code\": 964,\n \"Continent\": \"Asia\",\n \"Capital\": \"Baghdad\",\n \"Time Zone in Capital\": \"Asia/Baghdad\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-IQ,ku,hy\",\n \"Languages\": \"Arabic (official), Kurdish (official), Turkmen (a Turkish dialect) and Assyrian (Neo-Aramaic) are official in areas where they constitute a majority of the population), Armenian\",\n \"Area KM2\": 437072,\n \"Internet Hosts\": 26,\n \"Internet Users\": 325900,\n \"Phones (Mobile)\": 26760000,\n \"Phones (Landline)\": 1870000,\n \"GDP\": 221800000000\n },\n {\n \"Country Name\": \"Ireland\",\n \"ISO2\": \"IE\",\n \"ISO3\": \"IRL\",\n \"Top Level Domain\": \"ie\",\n \"FIPS\": \"EI\",\n \"ISO Numeric\": 372,\n \"GeoNameID\": 2963597,\n \"E164\": 353,\n \"Phone Code\": 353,\n \"Continent\": \"Europe\",\n \"Capital\": \"Dublin\",\n \"Time Zone in Capital\": \"Europe/Dublin\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"en-IE,ga-IE\",\n \"Languages\": \"English (official, the language generally used), Irish (Gaelic or Gaeilge) (official, spoken mainly in areas along the western coast)\",\n \"Area KM2\": 70280,\n \"Internet Hosts\": 1387000,\n \"Internet Users\": 3042000,\n \"Phones (Mobile)\": 4906000,\n \"Phones (Landline)\": 2007000,\n \"GDP\": 220900000000\n },\n {\n \"Country Name\": \"Isle of Man\",\n \"ISO2\": \"IM\",\n \"ISO3\": \"IMN\",\n \"Top Level Domain\": \"im\",\n \"FIPS\": \"IM\",\n \"ISO Numeric\": 833,\n \"GeoNameID\": 3042225,\n \"E164\": 44,\n \"Phone Code\": \"44-1624\",\n \"Continent\": \"Europe\",\n \"Capital\": \"Douglas, Isle of Man\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en,gv\",\n \"Languages\": \"English, Manx Gaelic (about 2% of the population has some knowledge)\",\n \"Area KM2\": 572,\n \"Internet Hosts\": 895,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 4076000000\n },\n {\n \"Country Name\": \"Israel\",\n \"ISO2\": \"IL\",\n \"ISO3\": \"ISR\",\n \"Top Level Domain\": \"il\",\n \"FIPS\": \"IS\",\n \"ISO Numeric\": 376,\n \"GeoNameID\": 294640,\n \"E164\": 972,\n \"Phone Code\": 972,\n \"Continent\": \"Asia\",\n \"Capital\": \"Jerusalem\",\n \"Time Zone in Capital\": \"Asia/Jerusalem\",\n \"Currency\": \"Shekel\",\n \"Language Codes\": \"he,ar-IL,en-IL,\",\n \"Languages\": \"Hebrew (official), Arabic (used officially for Arab minority), English (most commonly used foreign language)\",\n \"Area KM2\": 20770,\n \"Internet Hosts\": 2483000,\n \"Internet Users\": 4525000,\n \"Phones (Mobile)\": 9225000,\n \"Phones (Landline)\": 3594000,\n \"GDP\": 272700000000\n },\n {\n \"Country Name\": \"Italy\",\n \"ISO2\": \"IT\",\n \"ISO3\": \"ITA\",\n \"Top Level Domain\": \"it\",\n \"FIPS\": \"IT\",\n \"ISO Numeric\": 380,\n \"GeoNameID\": 3175395,\n \"E164\": 39,\n \"Phone Code\": 39,\n \"Continent\": \"Europe\",\n \"Capital\": \"Rome\",\n \"Time Zone in Capital\": \"Europe/Rome\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"it-IT,de-IT,fr-IT,sc,ca,co,sl\",\n \"Languages\": \"Italian (official), German (parts of Trentino-Alto Adige region are predominantly German-speaking), French (small French-speaking minority in Valle d'Aosta region), Slovene (Slovene-speaking minority in the Trieste-Gorizia area)\",\n \"Area KM2\": 301230,\n \"Internet Hosts\": 25662000,\n \"Internet Users\": 29235000,\n \"Phones (Mobile)\": 97225000,\n \"Phones (Landline)\": 21656000,\n \"GDP\": 2068000000000\n },\n {\n \"Country Name\": \"Ivory Coast\",\n \"ISO2\": \"CI\",\n \"ISO3\": \"CIV\",\n \"Top Level Domain\": \"ci\",\n \"FIPS\": \"IV\",\n \"ISO Numeric\": 384,\n \"GeoNameID\": 2287781,\n \"E164\": 225,\n \"Phone Code\": 225,\n \"Continent\": \"Africa\",\n \"Capital\": \"Yamoussoukro\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CI\",\n \"Languages\": \"French (official), 60 native dialects of which Dioula is the most widely spoken\",\n \"Area KM2\": 322460,\n \"Internet Hosts\": 9115,\n \"Internet Users\": 967300,\n \"Phones (Mobile)\": 19827000,\n \"Phones (Landline)\": 268000,\n \"GDP\": 28280000000\n },\n {\n \"Country Name\": \"Jamaica\",\n \"ISO2\": \"JM\",\n \"ISO3\": \"JAM\",\n \"Top Level Domain\": \"jm\",\n \"FIPS\": \"JM\",\n \"ISO Numeric\": 388,\n \"GeoNameID\": 3489940,\n \"E164\": 1,\n \"Phone Code\": \"1-876\",\n \"Continent\": \"North America\",\n \"Capital\": \"Kingston\",\n \"Time Zone in Capital\": \"America/Jamaica\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-JM\",\n \"Languages\": \"English, English patois\",\n \"Area KM2\": 10991,\n \"Internet Hosts\": 3906,\n \"Internet Users\": 1581000,\n \"Phones (Mobile)\": 2665000,\n \"Phones (Landline)\": 265000,\n \"GDP\": 14390000000\n },\n {\n \"Country Name\": \"Japan\",\n \"ISO2\": \"JP\",\n \"ISO3\": \"JPN\",\n \"Top Level Domain\": \"jp\",\n \"FIPS\": \"JA\",\n \"ISO Numeric\": 392,\n \"GeoNameID\": 1861060,\n \"E164\": 81,\n \"Phone Code\": 81,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tokyo\",\n \"Time Zone in Capital\": \"Asia/Tokyo\",\n \"Currency\": \"Yen\",\n \"Language Codes\": \"ja\",\n \"Languages\": \"Japanese\",\n \"Area KM2\": 377835,\n \"Internet Hosts\": 64453000,\n \"Internet Users\": 99182000,\n \"Phones (Mobile)\": 138363000,\n \"Phones (Landline)\": 64273000,\n \"GDP\": 5007000000000\n },\n {\n \"Country Name\": \"Jersey\",\n \"ISO2\": \"JE\",\n \"ISO3\": \"JEY\",\n \"Top Level Domain\": \"je\",\n \"FIPS\": \"JE\",\n \"ISO Numeric\": 832,\n \"GeoNameID\": 3042142,\n \"E164\": 44,\n \"Phone Code\": \"44-1534\",\n \"Continent\": \"Europe\",\n \"Capital\": \"Saint Helier\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en,pt\",\n \"Languages\": \"English 94.5% (official), Portuguese 4.6%, other 0.9% (2001 census)\",\n \"Area KM2\": 116,\n \"Internet Hosts\": 264,\n \"Internet Users\": 29500,\n \"Phones (Mobile)\": 108000,\n \"Phones (Landline)\": 73800,\n \"GDP\": 5100000000\n },\n {\n \"Country Name\": \"Jordan\",\n \"ISO2\": \"JO\",\n \"ISO3\": \"JOR\",\n \"Top Level Domain\": \"jo\",\n \"FIPS\": \"JO\",\n \"ISO Numeric\": 400,\n \"GeoNameID\": 248816,\n \"E164\": 962,\n \"Phone Code\": 962,\n \"Continent\": \"Asia\",\n \"Capital\": \"Amman\",\n \"Time Zone in Capital\": \"Asia/Amman\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-JO,en\",\n \"Languages\": \"Arabic (official), English (widely understood among upper and middle classes)\",\n \"Area KM2\": 92300,\n \"Internet Hosts\": 69473,\n \"Internet Users\": 1642000,\n \"Phones (Mobile)\": 8984000,\n \"Phones (Landline)\": 435000,\n \"GDP\": 34080000000\n },\n {\n \"Country Name\": \"Kazakhstan\",\n \"ISO2\": \"KZ\",\n \"ISO3\": \"KAZ\",\n \"Top Level Domain\": \"kz\",\n \"FIPS\": \"KZ\",\n \"ISO Numeric\": 398,\n \"GeoNameID\": 1522867,\n \"E164\": 7,\n \"Phone Code\": 7,\n \"Continent\": \"Asia\",\n \"Capital\": \"Astana\",\n \"Time Zone in Capital\": \"Asia/Almaty\",\n \"Currency\": \"Tenge\",\n \"Language Codes\": \"kk,ru\",\n \"Languages\": \"Kazakh (official, Qazaq) 64.4%, Russian (official, used in everyday business, designated the \\\"language of interethnic communication\\\") 95% (2001 est.)\",\n \"Area KM2\": 2717300,\n \"Internet Hosts\": 67464,\n \"Internet Users\": 5299000,\n \"Phones (Mobile)\": 28731000,\n \"Phones (Landline)\": 4340000,\n \"GDP\": 224900000000\n },\n {\n \"Country Name\": \"Kenya\",\n \"ISO2\": \"KE\",\n \"ISO3\": \"KEN\",\n \"Top Level Domain\": \"ke\",\n \"FIPS\": \"KE\",\n \"ISO Numeric\": 404,\n \"GeoNameID\": 192950,\n \"E164\": 254,\n \"Phone Code\": 254,\n \"Continent\": \"Africa\",\n \"Capital\": \"Nairobi\",\n \"Time Zone in Capital\": \"Africa/Nairobi\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"en-KE,sw-KE\",\n \"Languages\": \"English (official), Kiswahili (official), numerous indigenous languages\",\n \"Area KM2\": 582650,\n \"Internet Hosts\": 71018,\n \"Internet Users\": 3996000,\n \"Phones (Mobile)\": 30732000,\n \"Phones (Landline)\": 251600,\n \"GDP\": 45310000000\n },\n {\n \"Country Name\": \"Kiribati\",\n \"ISO2\": \"KI\",\n \"ISO3\": \"KIR\",\n \"Top Level Domain\": \"ki\",\n \"FIPS\": \"KR\",\n \"ISO Numeric\": 296,\n \"GeoNameID\": 4030945,\n \"E164\": 686,\n \"Phone Code\": 686,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Tarawa\",\n \"Time Zone in Capital\": \"Pacific/Tarawa\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-KI,gil\",\n \"Languages\": \"I-Kiribati, English (official)\",\n \"Area KM2\": 811,\n \"Internet Hosts\": 327,\n \"Internet Users\": 7800,\n \"Phones (Mobile)\": 16000,\n \"Phones (Landline)\": 9000,\n \"GDP\": 173000000\n },\n {\n \"Country Name\": \"Kosovo\",\n \"ISO2\": \"XK\",\n \"ISO3\": \"XKX\",\n \"Top Level Domain\": \"\",\n \"FIPS\": \"KV\",\n \"ISO Numeric\": 0,\n \"GeoNameID\": 831053,\n \"E164\": 383,\n \"Phone Code\": 383,\n \"Continent\": \"Europe\",\n \"Capital\": \"Pristina\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sq,sr\",\n \"Languages\": \"Albanian (official), Serbian (official), Bosnian, Turkish, Roma\",\n \"Area KM2\": 10887,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 562000,\n \"Phones (Landline)\": 106300,\n \"GDP\": 7150000000\n },\n {\n \"Country Name\": \"Kuwait\",\n \"ISO2\": \"KW\",\n \"ISO3\": \"KWT\",\n \"Top Level Domain\": \"kw\",\n \"FIPS\": \"KU\",\n \"ISO Numeric\": 414,\n \"GeoNameID\": 285570,\n \"E164\": 965,\n \"Phone Code\": 965,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kuwait City\",\n \"Time Zone in Capital\": \"Asia/Kuwait\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-KW,en\",\n \"Languages\": \"Arabic (official), English widely spoken\",\n \"Area KM2\": 17820,\n \"Internet Hosts\": 2771,\n \"Internet Users\": 1100000,\n \"Phones (Mobile)\": 5526000,\n \"Phones (Landline)\": 510000,\n \"GDP\": 179500000000\n },\n {\n \"Country Name\": \"Kyrgyzstan\",\n \"ISO2\": \"KG\",\n \"ISO3\": \"KGZ\",\n \"Top Level Domain\": \"kg\",\n \"FIPS\": \"KG\",\n \"ISO Numeric\": 417,\n \"GeoNameID\": 1527747,\n \"E164\": 996,\n \"Phone Code\": 996,\n \"Continent\": \"Asia\",\n \"Capital\": \"Bishkek\",\n \"Time Zone in Capital\": \"Asia/Bishkek\",\n \"Currency\": \"Som\",\n \"Language Codes\": \"ky,uz,ru\",\n \"Languages\": \"Kyrgyz (official) 64.7%, Uzbek 13.6%, Russian (official) 12.5%, Dungun 1%, other 8.2% (1999 census)\",\n \"Area KM2\": 198500,\n \"Internet Hosts\": 115573,\n \"Internet Users\": 2195000,\n \"Phones (Mobile)\": 6800000,\n \"Phones (Landline)\": 489000,\n \"GDP\": 7234000000\n },\n {\n \"Country Name\": \"Laos\",\n \"ISO2\": \"LA\",\n \"ISO3\": \"LAO\",\n \"Top Level Domain\": \"la\",\n \"FIPS\": \"LA\",\n \"ISO Numeric\": 418,\n \"GeoNameID\": 1655842,\n \"E164\": 856,\n \"Phone Code\": 856,\n \"Continent\": \"Asia\",\n \"Capital\": \"Vientiane\",\n \"Time Zone in Capital\": \"Asia/Vientiane\",\n \"Currency\": \"Kip\",\n \"Language Codes\": \"lo,fr,en\",\n \"Languages\": \"Lao (official), French, English, various ethnic languages\",\n \"Area KM2\": 236800,\n \"Internet Hosts\": 1532,\n \"Internet Users\": 300000,\n \"Phones (Mobile)\": 6492000,\n \"Phones (Landline)\": 112000,\n \"GDP\": 10100000000\n },\n {\n \"Country Name\": \"Latvia\",\n \"ISO2\": \"LV\",\n \"ISO3\": \"LVA\",\n \"Top Level Domain\": \"lv\",\n \"FIPS\": \"LG\",\n \"ISO Numeric\": 428,\n \"GeoNameID\": 458258,\n \"E164\": 371,\n \"Phone Code\": 371,\n \"Continent\": \"Europe\",\n \"Capital\": \"Riga\",\n \"Time Zone in Capital\": \"Europe/Riga\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"lv,ru,lt\",\n \"Languages\": \"Latvian (official) 56.3%, Russian 33.8%, other 0.6% (includes Polish, Ukrainian, and Belarusian), unspecified 9.4% (2011 est.)\",\n \"Area KM2\": 64589,\n \"Internet Hosts\": 359604,\n \"Internet Users\": 1504000,\n \"Phones (Mobile)\": 2310000,\n \"Phones (Landline)\": 501000,\n \"GDP\": 30380000000\n },\n {\n \"Country Name\": \"Lebanon\",\n \"ISO2\": \"LB\",\n \"ISO3\": \"LBN\",\n \"Top Level Domain\": \"lb\",\n \"FIPS\": \"LE\",\n \"ISO Numeric\": 422,\n \"GeoNameID\": 272103,\n \"E164\": 961,\n \"Phone Code\": 961,\n \"Continent\": \"Asia\",\n \"Capital\": \"Beirut\",\n \"Time Zone in Capital\": \"Asia/Beirut\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-LB,fr-LB,en,hy\",\n \"Languages\": \"Arabic (official), French, English, Armenian\",\n \"Area KM2\": 10400,\n \"Internet Hosts\": 64926,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 4000000,\n \"Phones (Landline)\": 878000,\n \"GDP\": 43490000000\n },\n {\n \"Country Name\": \"Lesotho\",\n \"ISO2\": \"LS\",\n \"ISO3\": \"LSO\",\n \"Top Level Domain\": \"ls\",\n \"FIPS\": \"LT\",\n \"ISO Numeric\": 426,\n \"GeoNameID\": 932692,\n \"E164\": 266,\n \"Phone Code\": 266,\n \"Continent\": \"Africa\",\n \"Capital\": \"Maseru\",\n \"Time Zone in Capital\": \"Africa/Johannesburg\",\n \"Currency\": \"Loti\",\n \"Language Codes\": \"en-LS,st,zu,xh\",\n \"Languages\": \"Sesotho (official) (southern Sotho), English (official), Zulu, Xhosa\",\n \"Area KM2\": 30355,\n \"Internet Hosts\": 11030,\n \"Internet Users\": 76800,\n \"Phones (Mobile)\": 1312000,\n \"Phones (Landline)\": 43100,\n \"GDP\": 2457000000\n },\n {\n \"Country Name\": \"Liberia\",\n \"ISO2\": \"LR\",\n \"ISO3\": \"LBR\",\n \"Top Level Domain\": \"lr\",\n \"FIPS\": \"LI\",\n \"ISO Numeric\": 430,\n \"GeoNameID\": 2275384,\n \"E164\": 231,\n \"Phone Code\": 231,\n \"Continent\": \"Africa\",\n \"Capital\": \"Monrovia\",\n \"Time Zone in Capital\": \"Africa/Monrovia\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-LR\",\n \"Languages\": \"English 20% (official), some 20 ethnic group languages few of which can be written or used in correspondence\",\n \"Area KM2\": 111370,\n \"Internet Hosts\": 7,\n \"Internet Users\": 20000,\n \"Phones (Mobile)\": 2394000,\n \"Phones (Landline)\": 3200,\n \"GDP\": 1977000000\n },\n {\n \"Country Name\": \"Libya\",\n \"ISO2\": \"LY\",\n \"ISO3\": \"LBY\",\n \"Top Level Domain\": \"ly\",\n \"FIPS\": \"LY\",\n \"ISO Numeric\": 434,\n \"GeoNameID\": 2215636,\n \"E164\": 218,\n \"Phone Code\": 218,\n \"Continent\": \"Africa\",\n \"Capital\": \"Tripolis\",\n \"Time Zone in Capital\": \"Africa/Tripoli\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-LY,it,en\",\n \"Languages\": \"Arabic (official), Italian, English (all widely understood in the major cities); Berber (Nafusi, Ghadamis, Suknah, Awjilah, Tamasheq)\",\n \"Area KM2\": 1759540,\n \"Internet Hosts\": 17926,\n \"Internet Users\": 353900,\n \"Phones (Mobile)\": 9590000,\n \"Phones (Landline)\": 814000,\n \"GDP\": 70920000000\n },\n {\n \"Country Name\": \"Liechtenstein\",\n \"ISO2\": \"LI\",\n \"ISO3\": \"LIE\",\n \"Top Level Domain\": \"li\",\n \"FIPS\": \"LS\",\n \"ISO Numeric\": 438,\n \"GeoNameID\": 3042058,\n \"E164\": 423,\n \"Phone Code\": 423,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vaduz\",\n \"Time Zone in Capital\": \"Europe/Zurich\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"de-LI\",\n \"Languages\": \"German 94.5% (official) (Alemannic is the main dialect), Italian 1.1%, other 4.3% (2010 est.)\",\n \"Area KM2\": 160,\n \"Internet Hosts\": 14278,\n \"Internet Users\": 23000,\n \"Phones (Mobile)\": 38000,\n \"Phones (Landline)\": 20000,\n \"GDP\": 5113000000\n },\n {\n \"Country Name\": \"Lithuania\",\n \"ISO2\": \"LT\",\n \"ISO3\": \"LTU\",\n \"Top Level Domain\": \"lt\",\n \"FIPS\": \"LH\",\n \"ISO Numeric\": 440,\n \"GeoNameID\": 597427,\n \"E164\": 370,\n \"Phone Code\": 370,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vilnius\",\n \"Time Zone in Capital\": \"Europe/Vilnius\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"lt,ru,pl\",\n \"Languages\": \"Lithuanian (official) 82%, Russian 8%, Polish 5.6%, other 0.9%, unspecified 3.5% (2011 est.)\",\n \"Area KM2\": 65200,\n \"Internet Hosts\": 1205000,\n \"Internet Users\": 1964000,\n \"Phones (Mobile)\": 5000000,\n \"Phones (Landline)\": 667300,\n \"GDP\": 46710000000\n },\n {\n \"Country Name\": \"Luxembourg\",\n \"ISO2\": \"LU\",\n \"ISO3\": \"LUX\",\n \"Top Level Domain\": \"lu\",\n \"FIPS\": \"LU\",\n \"ISO Numeric\": 442,\n \"GeoNameID\": 2960313,\n \"E164\": 352,\n \"Phone Code\": 352,\n \"Continent\": \"Europe\",\n \"Capital\": \"Luxembourg\",\n \"Time Zone in Capital\": \"Europe/Luxembourg\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"lb,de-LU,fr-LU\",\n \"Languages\": \"Luxembourgish (official administrative language and national language (spoken vernacular)), French (official administrative language), German (official administrative language)\",\n \"Area KM2\": 2586,\n \"Internet Hosts\": 250900,\n \"Internet Users\": 424500,\n \"Phones (Mobile)\": 761300,\n \"Phones (Landline)\": 266700,\n \"GDP\": 60540000000\n },\n {\n \"Country Name\": \"Macau\",\n \"ISO2\": \"MO\",\n \"ISO3\": \"MAC\",\n \"Top Level Domain\": \"mo\",\n \"FIPS\": \"MC\",\n \"ISO Numeric\": 446,\n \"GeoNameID\": 1821275,\n \"E164\": 853,\n \"Phone Code\": 853,\n \"Continent\": \"Asia\",\n \"Capital\": \"Macao\",\n \"Time Zone in Capital\": \"Asia/Macau\",\n \"Currency\": \"Pataca\",\n \"Language Codes\": \"zh,zh-MO,pt\",\n \"Languages\": \"Cantonese 83.3%, Mandarin 5%, Hokkien 3.7%, English 2.3%, other Chinese dialects 2%, Tagalog 1.7%, Portuguese 0.7%, other 1.3%\",\n \"Area KM2\": 254,\n \"Internet Hosts\": 327,\n \"Internet Users\": 270200,\n \"Phones (Mobile)\": 1613000,\n \"Phones (Landline)\": 162500,\n \"GDP\": 51680000000\n },\n {\n \"Country Name\": \"Macedonia\",\n \"ISO2\": \"MK\",\n \"ISO3\": \"MKD\",\n \"Top Level Domain\": \"mk\",\n \"FIPS\": \"MK\",\n \"ISO Numeric\": 807,\n \"GeoNameID\": 718075,\n \"E164\": 389,\n \"Phone Code\": 389,\n \"Continent\": \"Europe\",\n \"Capital\": \"Skopje\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Denar\",\n \"Language Codes\": \"mk,sq,tr,rmm,sr\",\n \"Languages\": \"Macedonian (official) 66.5%, Albanian (official) 25.1%, Turkish 3.5%, Roma 1.9%, Serbian 1.2%, other 1.8% (2002 census)\",\n \"Area KM2\": 25333,\n \"Internet Hosts\": 62826,\n \"Internet Users\": 1057000,\n \"Phones (Mobile)\": 2235000,\n \"Phones (Landline)\": 407900,\n \"GDP\": 10650000000\n },\n {\n \"Country Name\": \"Madagascar\",\n \"ISO2\": \"MG\",\n \"ISO3\": \"MDG\",\n \"Top Level Domain\": \"mg\",\n \"FIPS\": \"MA\",\n \"ISO Numeric\": 450,\n \"GeoNameID\": 1062947,\n \"E164\": 261,\n \"Phone Code\": 261,\n \"Continent\": \"Africa\",\n \"Capital\": \"Antananarivo\",\n \"Time Zone in Capital\": \"Indian/Antananarivo\",\n \"Currency\": \"Ariary\",\n \"Language Codes\": \"fr-MG,mg\",\n \"Languages\": \"French (official), Malagasy (official), English\",\n \"Area KM2\": 587040,\n \"Internet Hosts\": 38392,\n \"Internet Users\": 319900,\n \"Phones (Mobile)\": 8564000,\n \"Phones (Landline)\": 143700,\n \"GDP\": 10530000000\n },\n {\n \"Country Name\": \"Malawi\",\n \"ISO2\": \"MW\",\n \"ISO3\": \"MWI\",\n \"Top Level Domain\": \"mw\",\n \"FIPS\": \"MI\",\n \"ISO Numeric\": 454,\n \"GeoNameID\": 927384,\n \"E164\": 265,\n \"Phone Code\": 265,\n \"Continent\": \"Africa\",\n \"Capital\": \"Lilongwe\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Kwacha\",\n \"Language Codes\": \"ny,yao,tum,swk\",\n \"Languages\": \"English (official), Chichewa (common), Chinyanja, Chiyao, Chitumbuka, Chilomwe, Chinkhonde, Chingoni, Chisena, Chitonga, Chinyakyusa, Chilambya\",\n \"Area KM2\": 118480,\n \"Internet Hosts\": 1099,\n \"Internet Users\": 716400,\n \"Phones (Mobile)\": 4420000,\n \"Phones (Landline)\": 227300,\n \"GDP\": 3683000000\n },\n {\n \"Country Name\": \"Malaysia\",\n \"ISO2\": \"MY\",\n \"ISO3\": \"MYS\",\n \"Top Level Domain\": \"my\",\n \"FIPS\": \"MY\",\n \"ISO Numeric\": 458,\n \"GeoNameID\": 1733045,\n \"E164\": 60,\n \"Phone Code\": 60,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kuala Lumpur\",\n \"Time Zone in Capital\": \"Asia/Kuala_Lumpur\",\n \"Currency\": \"Ringgit\",\n \"Language Codes\": \"ms-MY,en,zh,ta,te,ml,pa,th\",\n \"Languages\": \"Bahasa Malaysia (official), English, Chinese (Cantonese, Mandarin, Hokkien, Hakka, Hainan, Foochow), Tamil, Telugu, Malayalam, Panjabi, Thai\",\n \"Area KM2\": 329750,\n \"Internet Hosts\": 422470,\n \"Internet Users\": 15355000,\n \"Phones (Mobile)\": 41325000,\n \"Phones (Landline)\": 4589000,\n \"GDP\": 312400000000\n },\n {\n \"Country Name\": \"Maldives\",\n \"ISO2\": \"MV\",\n \"ISO3\": \"MDV\",\n \"Top Level Domain\": \"mv\",\n \"FIPS\": \"MV\",\n \"ISO Numeric\": 462,\n \"GeoNameID\": 1282028,\n \"E164\": 960,\n \"Phone Code\": 960,\n \"Continent\": \"Asia\",\n \"Capital\": \"Male\",\n \"Time Zone in Capital\": \"Indian/Maldives\",\n \"Currency\": \"Rufiyaa\",\n \"Language Codes\": \"dv,en\",\n \"Languages\": \"Dhivehi (official, dialect of Sinhala, script derived from Arabic), English (spoken by most government officials)\",\n \"Area KM2\": 300,\n \"Internet Hosts\": 3296,\n \"Internet Users\": 86400,\n \"Phones (Mobile)\": 560000,\n \"Phones (Landline)\": 23140,\n \"GDP\": 2270000000\n },\n {\n \"Country Name\": \"Mali\",\n \"ISO2\": \"ML\",\n \"ISO3\": \"MLI\",\n \"Top Level Domain\": \"ml\",\n \"FIPS\": \"ML\",\n \"ISO Numeric\": 466,\n \"GeoNameID\": 2453866,\n \"E164\": 223,\n \"Phone Code\": 223,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bamako\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-ML,bm\",\n \"Languages\": \"French (official), Bambara 46.3%, Peul/foulfoulbe 9.4%, Dogon 7.2%, Maraka/soninke 6.4%, Malinke 5.6%, Sonrhai/djerma 5.6%, Minianka 4.3%, Tamacheq 3.5%, Senoufo 2.6%, unspecified 0.6%, other 8.5%\",\n \"Area KM2\": 1240000,\n \"Internet Hosts\": 437,\n \"Internet Users\": 249800,\n \"Phones (Mobile)\": 14613000,\n \"Phones (Landline)\": 112000,\n \"GDP\": 11370000000\n },\n {\n \"Country Name\": \"Malta\",\n \"ISO2\": \"MT\",\n \"ISO3\": \"MLT\",\n \"Top Level Domain\": \"mt\",\n \"FIPS\": \"MT\",\n \"ISO Numeric\": 470,\n \"GeoNameID\": 2562770,\n \"E164\": 356,\n \"Phone Code\": 356,\n \"Continent\": \"Europe\",\n \"Capital\": \"Valletta\",\n \"Time Zone in Capital\": \"Europe/Malta\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"mt,en-MT\",\n \"Languages\": \"Maltese (official) 90.1%, English (official) 6%, multilingual 3%, other 0.9% (2005 est.)\",\n \"Area KM2\": 316,\n \"Internet Hosts\": 14754,\n \"Internet Users\": 240600,\n \"Phones (Mobile)\": 539500,\n \"Phones (Landline)\": 229700,\n \"GDP\": 9541000000\n },\n {\n \"Country Name\": \"Marshall Islands\",\n \"ISO2\": \"MH\",\n \"ISO3\": \"MHL\",\n \"Top Level Domain\": \"mh\",\n \"FIPS\": \"RM\",\n \"ISO Numeric\": 584,\n \"GeoNameID\": 2080185,\n \"E164\": 692,\n \"Phone Code\": 692,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Majuro\",\n \"Time Zone in Capital\": \"Pacific/Majuro\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"mh,en-MH\",\n \"Languages\": \"Marshallese (official) 98.2%, other languages 1.8% (1999 census)\",\n \"Area KM2\": 181,\n \"Internet Hosts\": 3,\n \"Internet Users\": 2200,\n \"Phones (Mobile)\": 3800,\n \"Phones (Landline)\": 4400,\n \"GDP\": 193000000\n },\n {\n \"Country Name\": \"Mauritania\",\n \"ISO2\": \"MR\",\n \"ISO3\": \"MRT\",\n \"Top Level Domain\": \"mr\",\n \"FIPS\": \"MR\",\n \"ISO Numeric\": 478,\n \"GeoNameID\": 2378080,\n \"E164\": 222,\n \"Phone Code\": 222,\n \"Continent\": \"Africa\",\n \"Capital\": \"Nouakchott\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Ouguiya\",\n \"Language Codes\": \"ar-MR,fuc,snk,fr,mey,wo\",\n \"Languages\": \"Arabic (official and national), Pulaar, Soninke, Wolof (all national languages), French, Hassaniya (a variety of Arabic)\",\n \"Area KM2\": 1030700,\n \"Internet Hosts\": 22,\n \"Internet Users\": 75000,\n \"Phones (Mobile)\": 4024000,\n \"Phones (Landline)\": 65100,\n \"GDP\": 4183000000\n },\n {\n \"Country Name\": \"Mauritius\",\n \"ISO2\": \"MU\",\n \"ISO3\": \"MUS\",\n \"Top Level Domain\": \"mu\",\n \"FIPS\": \"MP\",\n \"ISO Numeric\": 480,\n \"GeoNameID\": 934292,\n \"E164\": 230,\n \"Phone Code\": 230,\n \"Continent\": \"Africa\",\n \"Capital\": \"Port Louis\",\n \"Time Zone in Capital\": \"Indian/Mauritius\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"en-MU,bho,fr\",\n \"Languages\": \"Creole 86.5%, Bhojpuri 5.3%, French 4.1%, two languages 1.4%, other 2.6% (includes English, the official language, which is spoken by less than 1% of the population), unspecified 0.1% (2011 est.)\",\n \"Area KM2\": 2040,\n \"Internet Hosts\": 51139,\n \"Internet Users\": 290000,\n \"Phones (Mobile)\": 1485000,\n \"Phones (Landline)\": 349100,\n \"GDP\": 11900000000\n },\n {\n \"Country Name\": \"Mayotte\",\n \"ISO2\": \"YT\",\n \"ISO3\": \"MYT\",\n \"Top Level Domain\": \"yt\",\n \"FIPS\": \"MF\",\n \"ISO Numeric\": 175,\n \"GeoNameID\": 1024031,\n \"E164\": 262,\n \"Phone Code\": 262,\n \"Continent\": \"Africa\",\n \"Capital\": \"Mamoudzou\",\n \"Time Zone in Capital\": \"Indian/Mayotte\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-YT\",\n \"Languages\": \"French\",\n \"Area KM2\": 374,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Mexico\",\n \"ISO2\": \"MX\",\n \"ISO3\": \"MEX\",\n \"Top Level Domain\": \"mx\",\n \"FIPS\": \"MX\",\n \"ISO Numeric\": 484,\n \"GeoNameID\": 3996063,\n \"E164\": 52,\n \"Phone Code\": 52,\n \"Continent\": \"North America\",\n \"Capital\": \"Mexico City\",\n \"Time Zone in Capital\": \"America/Mexico_City\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-MX\",\n \"Languages\": \"Spanish only 92.7%, Spanish and indigenous languages 5.7%, indigenous only 0.8%, unspecified 0.8%\",\n \"Area KM2\": 1972550,\n \"Internet Hosts\": 16233000,\n \"Internet Users\": 31020000,\n \"Phones (Mobile)\": 100786000,\n \"Phones (Landline)\": 20220000,\n \"GDP\": 1327000000000\n },\n {\n \"Country Name\": \"Micronesia\",\n \"ISO2\": \"FM\",\n \"ISO3\": \"FSM\",\n \"Top Level Domain\": \"fm\",\n \"FIPS\": \"FM\",\n \"ISO Numeric\": 583,\n \"GeoNameID\": 2081918,\n \"E164\": 691,\n \"Phone Code\": 691,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Palikir\",\n \"Time Zone in Capital\": \"Pacific/Pohnpei\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg\",\n \"Languages\": \"English (official and common language), Chuukese, Kosrean, Pohnpeian, Yapese, Ulithian, Woleaian, Nukuoro, Kapingamarangi\",\n \"Area KM2\": 702,\n \"Internet Hosts\": 4668,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 27600,\n \"Phones (Landline)\": 8400,\n \"GDP\": 339000000\n },\n {\n \"Country Name\": \"Moldova\",\n \"ISO2\": \"MD\",\n \"ISO3\": \"MDA\",\n \"Top Level Domain\": \"md\",\n \"FIPS\": \"MD\",\n \"ISO Numeric\": 498,\n \"GeoNameID\": 617790,\n \"E164\": 373,\n \"Phone Code\": 373,\n \"Continent\": \"Europe\",\n \"Capital\": \"Chisinau\",\n \"Time Zone in Capital\": \"Europe/Chisinau\",\n \"Currency\": \"Leu\",\n \"Language Codes\": \"ro,ru,gag,tr\",\n \"Languages\": \"Moldovan 58.8% (official; virtually the same as the Romanian language), Romanian 16.4%, Russian 16%, Ukrainian 3.8%, Gagauz 3.1% (a Turkish language), Bulgarian 1.1%, other 0.3%, unspecified 0.4%\",\n \"Area KM2\": 33843,\n \"Internet Hosts\": 711564,\n \"Internet Users\": 1333000,\n \"Phones (Mobile)\": 4080000,\n \"Phones (Landline)\": 1206000,\n \"GDP\": 7932000000\n },\n {\n \"Country Name\": \"Monaco\",\n \"ISO2\": \"MC\",\n \"ISO3\": \"MCO\",\n \"Top Level Domain\": \"mc\",\n \"FIPS\": \"MN\",\n \"ISO Numeric\": 492,\n \"GeoNameID\": 2993457,\n \"E164\": 377,\n \"Phone Code\": 377,\n \"Continent\": \"Europe\",\n \"Capital\": \"Monaco\",\n \"Time Zone in Capital\": \"Europe/Monaco\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-MC,en,it\",\n \"Languages\": \"French (official), English, Italian, Monegasque\",\n \"Area KM2\": 2,\n \"Internet Hosts\": 26009,\n \"Internet Users\": 23000,\n \"Phones (Mobile)\": 33200,\n \"Phones (Landline)\": 44500,\n \"GDP\": 5748000000\n },\n {\n \"Country Name\": \"Mongolia\",\n \"ISO2\": \"MN\",\n \"ISO3\": \"MNG\",\n \"Top Level Domain\": \"mn\",\n \"FIPS\": \"MG\",\n \"ISO Numeric\": 496,\n \"GeoNameID\": 2029969,\n \"E164\": 976,\n \"Phone Code\": 976,\n \"Continent\": \"Asia\",\n \"Capital\": \"Ulan Bator\",\n \"Time Zone in Capital\": \"Asia/Ulaanbaatar\",\n \"Currency\": \"Tugrik\",\n \"Language Codes\": \"mn,ru\",\n \"Languages\": \"Khalkha Mongol 90% (official), Turkic, Russian (1999)\",\n \"Area KM2\": 1565000,\n \"Internet Hosts\": 20084,\n \"Internet Users\": 330000,\n \"Phones (Mobile)\": 3375000,\n \"Phones (Landline)\": 176700,\n \"GDP\": 11140000000\n },\n {\n \"Country Name\": \"Montenegro\",\n \"ISO2\": \"ME\",\n \"ISO3\": \"MNE\",\n \"Top Level Domain\": \"me\",\n \"FIPS\": \"MJ\",\n \"ISO Numeric\": 499,\n \"GeoNameID\": 3194884,\n \"E164\": 382,\n \"Phone Code\": 382,\n \"Continent\": \"Europe\",\n \"Capital\": \"Podgorica\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sr,hu,bs,sq,hr,rom\",\n \"Languages\": \"Serbian 42.9%, Montenegrin (official) 37%, Bosnian 5.3%, Albanian 5.3%, Serbo-Croat 2%, other 3.5%, unspecified 4% (2011 est.)\",\n \"Area KM2\": 14026,\n \"Internet Hosts\": 10088,\n \"Internet Users\": 280000,\n \"Phones (Mobile)\": 1126000,\n \"Phones (Landline)\": 163000,\n \"GDP\": 4518000000\n },\n {\n \"Country Name\": \"Montserrat\",\n \"ISO2\": \"MS\",\n \"ISO3\": \"MSR\",\n \"Top Level Domain\": \"ms\",\n \"FIPS\": \"MH\",\n \"ISO Numeric\": 500,\n \"GeoNameID\": 3578097,\n \"E164\": 1,\n \"Phone Code\": \"1-664\",\n \"Continent\": \"North America\",\n \"Capital\": \"Plymouth\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-MS\",\n \"Languages\": \"English\",\n \"Area KM2\": 102,\n \"Internet Hosts\": 2431,\n \"Internet Users\": 1200,\n \"Phones (Mobile)\": 4000,\n \"Phones (Landline)\": 3000,\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Morocco\",\n \"ISO2\": \"MA\",\n \"ISO3\": \"MAR\",\n \"Top Level Domain\": \"ma\",\n \"FIPS\": \"MO\",\n \"ISO Numeric\": 504,\n \"GeoNameID\": 2542007,\n \"E164\": 212,\n \"Phone Code\": 212,\n \"Continent\": \"Africa\",\n \"Capital\": \"Rabat\",\n \"Time Zone in Capital\": \"Africa/Casablanca\",\n \"Currency\": \"Dirham\",\n \"Language Codes\": \"ar-MA,fr\",\n \"Languages\": \"Arabic (official), Berber languages (Tamazight (official), Tachelhit, Tarifit), French (often the language of business, government, and diplomacy)\",\n \"Area KM2\": 446550,\n \"Internet Hosts\": 277338,\n \"Internet Users\": 13213000,\n \"Phones (Mobile)\": 39016000,\n \"Phones (Landline)\": 3280000,\n \"GDP\": 104800000000\n },\n {\n \"Country Name\": \"Mozambique\",\n \"ISO2\": \"MZ\",\n \"ISO3\": \"MOZ\",\n \"Top Level Domain\": \"mz\",\n \"FIPS\": \"MZ\",\n \"ISO Numeric\": 508,\n \"GeoNameID\": 1036973,\n \"E164\": 258,\n \"Phone Code\": 258,\n \"Continent\": \"Africa\",\n \"Capital\": \"Maputo\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Metical\",\n \"Language Codes\": \"pt-MZ,vmw\",\n \"Languages\": \"Emakhuwa 25.3%, Portuguese (official) 10.7%, Xichangana 10.3%, Cisena 7.5%, Elomwe 7%, Echuwabo 5.1%, other Mozambican languages 30.1%, other 4% (1997 census)\",\n \"Area KM2\": 801590,\n \"Internet Hosts\": 89737,\n \"Internet Users\": 613600,\n \"Phones (Mobile)\": 8108000,\n \"Phones (Landline)\": 88100,\n \"GDP\": 14670000000\n },\n {\n \"Country Name\": \"Myanmar\",\n \"ISO2\": \"MM\",\n \"ISO3\": \"MMR\",\n \"Top Level Domain\": \"mm\",\n \"FIPS\": \"BM\",\n \"ISO Numeric\": 104,\n \"GeoNameID\": 1327865,\n \"E164\": 95,\n \"Phone Code\": 95,\n \"Continent\": \"Asia\",\n \"Capital\": \"Nay Pyi Taw\",\n \"Time Zone in Capital\": \"Asia/Rangoon\",\n \"Currency\": \"Kyat\",\n \"Language Codes\": \"my\",\n \"Languages\": \"Burmese (official)\",\n \"Area KM2\": 678500,\n \"Internet Hosts\": 1055,\n \"Internet Users\": 110000,\n \"Phones (Mobile)\": 5440000,\n \"Phones (Landline)\": 556000,\n \"GDP\": 59430000000\n },\n {\n \"Country Name\": \"Namibia\",\n \"ISO2\": \"NA\",\n \"ISO3\": \"NAM\",\n \"Top Level Domain\": \"na\",\n \"FIPS\": \"WA\",\n \"ISO Numeric\": 516,\n \"GeoNameID\": 3355338,\n \"E164\": 264,\n \"Phone Code\": 264,\n \"Continent\": \"Africa\",\n \"Capital\": \"Windhoek\",\n \"Time Zone in Capital\": \"Africa/Windhoek\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-NA,af,de,hz,naq\",\n \"Languages\": \"Oshiwambo languages 48.9%, Nama/Damara 11.3%, Afrikaans 10.4% (common language of most of the population and about 60% of the white population), Otjiherero languages 8.6%, Kavango languages 8.5%, Caprivi languages 4.8%, English (official) 3.4%, other African languages 2.3%, other 1.7%\",\n \"Area KM2\": 825418,\n \"Internet Hosts\": 78280,\n \"Internet Users\": 127500,\n \"Phones (Mobile)\": 2435000,\n \"Phones (Landline)\": 171000,\n \"GDP\": 12300000000\n },\n {\n \"Country Name\": \"Nauru\",\n \"ISO2\": \"NR\",\n \"ISO3\": \"NRU\",\n \"Top Level Domain\": \"nr\",\n \"FIPS\": \"NR\",\n \"ISO Numeric\": 520,\n \"GeoNameID\": 2110425,\n \"E164\": 674,\n \"Phone Code\": 674,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Yaren\",\n \"Time Zone in Capital\": \"Pacific/Nauru\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"na,en-NR\",\n \"Languages\": \"Nauruan 93% (official, a distinct Pacific Island language), English 2% (widely understood, spoken, and used for most government and commercial purposes), other 5% (includes I-Kiribati 2% and Chinese 2%)\",\n \"Area KM2\": 21,\n \"Internet Hosts\": 8162,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 6800,\n \"Phones (Landline)\": 1900,\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Nepal\",\n \"ISO2\": \"NP\",\n \"ISO3\": \"NPL\",\n \"Top Level Domain\": \"np\",\n \"FIPS\": \"NP\",\n \"ISO Numeric\": 524,\n \"GeoNameID\": 1282988,\n \"E164\": 977,\n \"Phone Code\": 977,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kathmandu\",\n \"Time Zone in Capital\": \"Asia/Kathmandu\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"ne,en\",\n \"Languages\": \"Nepali (official) 44.6%, Maithali 11.7%, Bhojpuri 6%, Tharu 5.8%, Tamang 5.1%, Newar 3.2%, Magar 3%, Bajjika 3%, Urdu 2.6%, Avadhi 1.9%, Limbu 1.3%, Gurung 1.2%, other 10.4%, unspecified 0.2%\",\n \"Area KM2\": 140800,\n \"Internet Hosts\": 41256,\n \"Internet Users\": 577800,\n \"Phones (Mobile)\": 18138000,\n \"Phones (Landline)\": 834000,\n \"GDP\": 19340000000\n },\n {\n \"Country Name\": \"Netherlands\",\n \"ISO2\": \"NL\",\n \"ISO3\": \"NLD\",\n \"Top Level Domain\": \"nl\",\n \"FIPS\": \"NL\",\n \"ISO Numeric\": 528,\n \"GeoNameID\": 2750405,\n \"E164\": 31,\n \"Phone Code\": 31,\n \"Continent\": \"Europe\",\n \"Capital\": \"Amsterdam\",\n \"Time Zone in Capital\": \"Europe/Amsterdam\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"nl-NL,fy-NL\",\n \"Languages\": \"Dutch (official)\",\n \"Area KM2\": 41526,\n \"Internet Hosts\": 13699000,\n \"Internet Users\": 14872000,\n \"Phones (Mobile)\": 19643000,\n \"Phones (Landline)\": 7086000,\n \"GDP\": 722300000000\n },\n {\n \"Country Name\": \"Netherlands Antilles\",\n \"ISO2\": \"AN\",\n \"ISO3\": \"ANT\",\n \"Top Level Domain\": \"an\",\n \"FIPS\": \"NT\",\n \"ISO Numeric\": 530,\n \"GeoNameID\": \"\",\n \"E164\": 599,\n \"Phone Code\": 599,\n \"Continent\": \"North America\",\n \"Capital\": \"Willemstad\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl-AN,en,es\",\n \"Languages\": \"Dutch, English, Spanish\",\n \"Area KM2\": 960,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"New Caledonia\",\n \"ISO2\": \"NC\",\n \"ISO3\": \"NCL\",\n \"Top Level Domain\": \"nc\",\n \"FIPS\": \"NC\",\n \"ISO Numeric\": 540,\n \"GeoNameID\": 2139685,\n \"E164\": 687,\n \"Phone Code\": 687,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Noumea\",\n \"Time Zone in Capital\": \"Pacific/Noumea\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-NC\",\n \"Languages\": \"French (official), 33 Melanesian-Polynesian dialects\",\n \"Area KM2\": 19060,\n \"Internet Hosts\": 34231,\n \"Internet Users\": 85000,\n \"Phones (Mobile)\": 231000,\n \"Phones (Landline)\": 80000,\n \"GDP\": 9280000000\n },\n {\n \"Country Name\": \"New Zealand\",\n \"ISO2\": \"NZ\",\n \"ISO3\": \"NZL\",\n \"Top Level Domain\": \"nz\",\n \"FIPS\": \"NZ\",\n \"ISO Numeric\": 554,\n \"GeoNameID\": 2186224,\n \"E164\": 64,\n \"Phone Code\": 64,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Wellington\",\n \"Time Zone in Capital\": \"Pacific/Auckland\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-NZ,mi\",\n \"Languages\": \"English (de facto official) 89.8%, Maori (de jure official) 3.5%, Samoan 2%, Hindi 1.6%, French 1.2%, Northern Chinese 1.2%, Yue 1%, Other or not stated 20.5%, New Zealand Sign Language (de jure official)\",\n \"Area KM2\": 268680,\n \"Internet Hosts\": 3026000,\n \"Internet Users\": 3400000,\n \"Phones (Mobile)\": 4922000,\n \"Phones (Landline)\": 1880000,\n \"GDP\": 181100000000\n },\n {\n \"Country Name\": \"Nicaragua\",\n \"ISO2\": \"NI\",\n \"ISO3\": \"NIC\",\n \"Top Level Domain\": \"ni\",\n \"FIPS\": \"NU\",\n \"ISO Numeric\": 558,\n \"GeoNameID\": 3617476,\n \"E164\": 505,\n \"Phone Code\": 505,\n \"Continent\": \"North America\",\n \"Capital\": \"Managua\",\n \"Time Zone in Capital\": \"America/Managua\",\n \"Currency\": \"Cordoba\",\n \"Language Codes\": \"es-NI,en\",\n \"Languages\": \"Spanish (official) 95.3%, Miskito 2.2%, Mestizo of the Caribbean coast 2%, other 0.5%\",\n \"Area KM2\": 129494,\n \"Internet Hosts\": 296068,\n \"Internet Users\": 199800,\n \"Phones (Mobile)\": 5346000,\n \"Phones (Landline)\": 320000,\n \"GDP\": 11260000000\n },\n {\n \"Country Name\": \"Niger\",\n \"ISO2\": \"NE\",\n \"ISO3\": \"NER\",\n \"Top Level Domain\": \"ne\",\n \"FIPS\": \"NG\",\n \"ISO Numeric\": 562,\n \"GeoNameID\": 2440476,\n \"E164\": 227,\n \"Phone Code\": 227,\n \"Continent\": \"Africa\",\n \"Capital\": \"Niamey\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-NE,ha,kr,dje\",\n \"Languages\": \"French (official), Hausa, Djerma\",\n \"Area KM2\": 1267000,\n \"Internet Hosts\": 454,\n \"Internet Users\": 115900,\n \"Phones (Mobile)\": 5400000,\n \"Phones (Landline)\": 100500,\n \"GDP\": 7304000000\n },\n {\n \"Country Name\": \"Nigeria\",\n \"ISO2\": \"NG\",\n \"ISO3\": \"NGA\",\n \"Top Level Domain\": \"ng\",\n \"FIPS\": \"NI\",\n \"ISO Numeric\": 566,\n \"GeoNameID\": 2328926,\n \"E164\": 234,\n \"Phone Code\": 234,\n \"Continent\": \"Africa\",\n \"Capital\": \"Abuja\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Naira\",\n \"Language Codes\": \"en-NG,ha,yo,ig,ff\",\n \"Languages\": \"English (official), Hausa, Yoruba, Igbo (Ibo), Fulani, over 500 additional indigenous languages\",\n \"Area KM2\": 923768,\n \"Internet Hosts\": 1234,\n \"Internet Users\": 43989000,\n \"Phones (Mobile)\": 112780000,\n \"Phones (Landline)\": 418200,\n \"GDP\": 502000000000\n },\n {\n \"Country Name\": \"Niue\",\n \"ISO2\": \"NU\",\n \"ISO3\": \"NIU\",\n \"Top Level Domain\": \"nu\",\n \"FIPS\": \"NE\",\n \"ISO Numeric\": 570,\n \"GeoNameID\": 4036232,\n \"E164\": 683,\n \"Phone Code\": 683,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Alofi\",\n \"Time Zone in Capital\": \"Pacific/Niue\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"niu,en-NU\",\n \"Languages\": \"Niuean (official) 46% (a Polynesian language closely related to Tongan and Samoan), Niuean and English 32%, English (official) 11%, Niuean and others 5%, other 6% (2011 est.)\",\n \"Area KM2\": 260,\n \"Internet Hosts\": 79508,\n \"Internet Users\": 1100,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 10010000\n },\n {\n \"Country Name\": \"North Korea\",\n \"ISO2\": \"KP\",\n \"ISO3\": \"PRK\",\n \"Top Level Domain\": \"kp\",\n \"FIPS\": \"KN\",\n \"ISO Numeric\": 408,\n \"GeoNameID\": 1873107,\n \"E164\": 850,\n \"Phone Code\": 850,\n \"Continent\": \"Asia\",\n \"Capital\": \"Pyongyang\",\n \"Time Zone in Capital\": \"Asia/Pyongyang\",\n \"Currency\": \"Won\",\n \"Language Codes\": \"ko-KP\",\n \"Languages\": \"Korean\",\n \"Area KM2\": 120540,\n \"Internet Hosts\": 8,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 1700000,\n \"Phones (Landline)\": 1180000,\n \"GDP\": 28000000000\n },\n {\n \"Country Name\": \"Northern Mariana Islands\",\n \"ISO2\": \"MP\",\n \"ISO3\": \"MNP\",\n \"Top Level Domain\": \"mp\",\n \"FIPS\": \"CQ\",\n \"ISO Numeric\": 580,\n \"GeoNameID\": 4041468,\n \"E164\": 1,\n \"Phone Code\": \"1-670\",\n \"Continent\": \"Oceania\",\n \"Capital\": \"Saipan\",\n \"Time Zone in Capital\": \"Pacific/Saipan\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"fil,tl,zh,ch-MP,en-MP\",\n \"Languages\": \"Philippine languages 32.8%, Chamorro (official) 24.1%, English (official) 17%, other Pacific island languages 10.1%, Chinese 6.8%, other Asian languages 7.3%, other 1.9% (2010 est.)\",\n \"Area KM2\": 477,\n \"Internet Hosts\": 17,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 733000000\n },\n {\n \"Country Name\": \"Norway\",\n \"ISO2\": \"NO\",\n \"ISO3\": \"NOR\",\n \"Top Level Domain\": \"no\",\n \"FIPS\": \"NO\",\n \"ISO Numeric\": 578,\n \"GeoNameID\": 3144096,\n \"E164\": 47,\n \"Phone Code\": 47,\n \"Continent\": \"Europe\",\n \"Capital\": \"Oslo\",\n \"Time Zone in Capital\": \"Europe/Oslo\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"no,nb,nn,se,fi\",\n \"Languages\": \"Bokmal Norwegian (official), Nynorsk Norwegian (official), small Sami- and Finnish-speaking minorities\",\n \"Area KM2\": 324220,\n \"Internet Hosts\": 3588000,\n \"Internet Users\": 4431000,\n \"Phones (Mobile)\": 5732000,\n \"Phones (Landline)\": 1465000,\n \"GDP\": 515800000000\n },\n {\n \"Country Name\": \"Oman\",\n \"ISO2\": \"OM\",\n \"ISO3\": \"OMN\",\n \"Top Level Domain\": \"om\",\n \"FIPS\": \"MU\",\n \"ISO Numeric\": 512,\n \"GeoNameID\": 286963,\n \"E164\": 968,\n \"Phone Code\": 968,\n \"Continent\": \"Asia\",\n \"Capital\": \"Muscat\",\n \"Time Zone in Capital\": \"Asia/Muscat\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-OM,en,bal,ur\",\n \"Languages\": \"Arabic (official), English, Baluchi, Urdu, Indian dialects\",\n \"Area KM2\": 212460,\n \"Internet Hosts\": 14531,\n \"Internet Users\": 1465000,\n \"Phones (Mobile)\": 5278000,\n \"Phones (Landline)\": 305000,\n \"GDP\": 81950000000\n },\n {\n \"Country Name\": \"Pakistan\",\n \"ISO2\": \"PK\",\n \"ISO3\": \"PAK\",\n \"Top Level Domain\": \"pk\",\n \"FIPS\": \"PK\",\n \"ISO Numeric\": 586,\n \"GeoNameID\": 1168579,\n \"E164\": 92,\n \"Phone Code\": 92,\n \"Continent\": \"Asia\",\n \"Capital\": \"Islamabad\",\n \"Time Zone in Capital\": \"Asia/Karachi\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"ur-PK,en-PK,pa,sd,ps,brh\",\n \"Languages\": \"Punjabi 48%, Sindhi 12%, Saraiki (a Punjabi variant) 10%, Pashto (alternate name, Pashtu) 8%, Urdu (official) 8%, Balochi 3%, Hindko 2%, Brahui 1%, English (official; lingua franca of Pakistani elite and most government ministries), Burushaski, and other 8%\",\n \"Area KM2\": 803940,\n \"Internet Hosts\": 365813,\n \"Internet Users\": 20431000,\n \"Phones (Mobile)\": 125000000,\n \"Phones (Landline)\": 5803000,\n \"GDP\": 236500000000\n },\n {\n \"Country Name\": \"Palau\",\n \"ISO2\": \"PW\",\n \"ISO3\": \"PLW\",\n \"Top Level Domain\": \"pw\",\n \"FIPS\": \"PS\",\n \"ISO Numeric\": 585,\n \"GeoNameID\": 1559582,\n \"E164\": 680,\n \"Phone Code\": 680,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Melekeok\",\n \"Time Zone in Capital\": \"Pacific/Palau\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"pau,sov,en-PW,tox,ja,fil,zh\",\n \"Languages\": \"Palauan (official on most islands) 66.6%, Carolinian 0.7%, other Micronesian 0.7%, English (official) 15.5%, Filipino 10.8%, Chinese 1.8%, other Asian 2.6%, other 1.3%\",\n \"Area KM2\": 458,\n \"Internet Hosts\": 4,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 17150,\n \"Phones (Landline)\": 7300,\n \"GDP\": 221000000\n },\n {\n \"Country Name\": \"Palestine\",\n \"ISO2\": \"PS\",\n \"ISO3\": \"PSE\",\n \"Top Level Domain\": \"ps\",\n \"FIPS\": \"WE\",\n \"ISO Numeric\": 275,\n \"GeoNameID\": 6254930,\n \"E164\": 970,\n \"Phone Code\": 970,\n \"Continent\": \"Asia\",\n \"Capital\": \"East Jerusalem\",\n \"Time Zone in Capital\": \"Asia/Hebron\",\n \"Currency\": \"Shekel\",\n \"Language Codes\": \"ar-PS\",\n \"Languages\": \"Arabic, Hebrew, English\",\n \"Area KM2\": 5970,\n \"Internet Hosts\": \"\",\n \"Internet Users\": 1379000,\n \"Phones (Mobile)\": 3041000,\n \"Phones (Landline)\": 406000,\n \"GDP\": 6641000000\n },\n {\n \"Country Name\": \"Panama\",\n \"ISO2\": \"PA\",\n \"ISO3\": \"PAN\",\n \"Top Level Domain\": \"pa\",\n \"FIPS\": \"PM\",\n \"ISO Numeric\": 591,\n \"GeoNameID\": 3703430,\n \"E164\": 507,\n \"Phone Code\": 507,\n \"Continent\": \"North America\",\n \"Capital\": \"Panama City\",\n \"Time Zone in Capital\": \"America/Panama\",\n \"Currency\": \"Balboa\",\n \"Language Codes\": \"es-PA,en\",\n \"Languages\": \"Spanish (official), English 14%\",\n \"Area KM2\": 78200,\n \"Internet Hosts\": 11022,\n \"Internet Users\": 959800,\n \"Phones (Mobile)\": 6770000,\n \"Phones (Landline)\": 640000,\n \"GDP\": 40620000000\n },\n {\n \"Country Name\": \"Papua New Guinea\",\n \"ISO2\": \"PG\",\n \"ISO3\": \"PNG\",\n \"Top Level Domain\": \"pg\",\n \"FIPS\": \"PP\",\n \"ISO Numeric\": 598,\n \"GeoNameID\": 2088628,\n \"E164\": 675,\n \"Phone Code\": 675,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Port Moresby\",\n \"Time Zone in Capital\": \"Pacific/Port_Moresby\",\n \"Currency\": \"Kina\",\n \"Language Codes\": \"en-PG,ho,meu,tpi\",\n \"Languages\": \"Tok Pisin (official), English (official), Hiri Motu (official), some 836 indigenous languages spoken (about 12% of the world's total); most languages have fewer than 1,000 speakers\",\n \"Area KM2\": 462840,\n \"Internet Hosts\": 5006,\n \"Internet Users\": 125000,\n \"Phones (Mobile)\": 2709000,\n \"Phones (Landline)\": 139000,\n \"GDP\": 16100000000\n },\n {\n \"Country Name\": \"Paraguay\",\n \"ISO2\": \"PY\",\n \"ISO3\": \"PRY\",\n \"Top Level Domain\": \"py\",\n \"FIPS\": \"PA\",\n \"ISO Numeric\": 600,\n \"GeoNameID\": 3437598,\n \"E164\": 595,\n \"Phone Code\": 595,\n \"Continent\": \"South America\",\n \"Capital\": \"Asuncion\",\n \"Time Zone in Capital\": \"America/Asuncion\",\n \"Currency\": \"Guarani\",\n \"Language Codes\": \"es-PY,gn\",\n \"Languages\": \"Spanish (official), Guarani (official)\",\n \"Area KM2\": 406750,\n \"Internet Hosts\": 280658,\n \"Internet Users\": 1105000,\n \"Phones (Mobile)\": 6790000,\n \"Phones (Landline)\": 376000,\n \"GDP\": 30560000000\n },\n {\n \"Country Name\": \"Peru\",\n \"ISO2\": \"PE\",\n \"ISO3\": \"PER\",\n \"Top Level Domain\": \"pe\",\n \"FIPS\": \"PE\",\n \"ISO Numeric\": 604,\n \"GeoNameID\": 3932488,\n \"E164\": 51,\n \"Phone Code\": 51,\n \"Continent\": \"South America\",\n \"Capital\": \"Lima\",\n \"Time Zone in Capital\": \"America/Lima\",\n \"Currency\": \"Sol\",\n \"Language Codes\": \"es-PE,qu,ay\",\n \"Languages\": \"Spanish (official) 84.1%, Quechua (official) 13%, Aymara (official) 1.7%, Ashaninka 0.3%, other native languages (includes a large number of minor Amazonian languages) 0.7%, other (includes foreign languages and sign language) 0.2% (2007 est.)\",\n \"Area KM2\": 1285220,\n \"Internet Hosts\": 234102,\n \"Internet Users\": 9158000,\n \"Phones (Mobile)\": 29400000,\n \"Phones (Landline)\": 3420000,\n \"GDP\": 210300000000\n },\n {\n \"Country Name\": \"Philippines\",\n \"ISO2\": \"PH\",\n \"ISO3\": \"PHL\",\n \"Top Level Domain\": \"ph\",\n \"FIPS\": \"RP\",\n \"ISO Numeric\": 608,\n \"GeoNameID\": 1694008,\n \"E164\": 63,\n \"Phone Code\": 63,\n \"Continent\": \"Asia\",\n \"Capital\": \"Manila\",\n \"Time Zone in Capital\": \"Asia/Manila\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"tl,en-PH,fil\",\n \"Languages\": \"Filipino (official; based on Tagalog) and English (official); eight major dialects - Tagalog, Cebuano, Ilocano, Hiligaynon or Ilonggo, Bicol, Waray, Pampango, and Pangasinan\",\n \"Area KM2\": 300000,\n \"Internet Hosts\": 425812,\n \"Internet Users\": 8278000,\n \"Phones (Mobile)\": 103000000,\n \"Phones (Landline)\": 3939000,\n \"GDP\": 272200000000\n },\n {\n \"Country Name\": \"Pitcairn\",\n \"ISO2\": \"PN\",\n \"ISO3\": \"PCN\",\n \"Top Level Domain\": \"pn\",\n \"FIPS\": \"PC\",\n \"ISO Numeric\": 612,\n \"GeoNameID\": 4030699,\n \"E164\": 64,\n \"Phone Code\": 64,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Adamstown\",\n \"Time Zone in Capital\": \"Pacific/Pitcairn\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-PN\",\n \"Languages\": \"English\",\n \"Area KM2\": 47,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Poland\",\n \"ISO2\": \"PL\",\n \"ISO3\": \"POL\",\n \"Top Level Domain\": \"pl\",\n \"FIPS\": \"PL\",\n \"ISO Numeric\": 616,\n \"GeoNameID\": 798544,\n \"E164\": 48,\n \"Phone Code\": 48,\n \"Continent\": \"Europe\",\n \"Capital\": \"Warsaw\",\n \"Time Zone in Capital\": \"Europe/Warsaw\",\n \"Currency\": \"Zloty\",\n \"Language Codes\": \"pl\",\n \"Languages\": \"Polish (official) 96.2%, Polish and non-Polish 2%, non-Polish 0.5%, unspecified 1.3%\",\n \"Area KM2\": 312685,\n \"Internet Hosts\": 13265000,\n \"Internet Users\": 22452000,\n \"Phones (Mobile)\": 50840000,\n \"Phones (Landline)\": 6125000,\n \"GDP\": 513900000000\n },\n {\n \"Country Name\": \"Portugal\",\n \"ISO2\": \"PT\",\n \"ISO3\": \"PRT\",\n \"Top Level Domain\": \"pt\",\n \"FIPS\": \"PO\",\n \"ISO Numeric\": 620,\n \"GeoNameID\": 2264397,\n \"E164\": 351,\n \"Phone Code\": 351,\n \"Continent\": \"Europe\",\n \"Capital\": \"Lisbon\",\n \"Time Zone in Capital\": \"Europe/Lisbon\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"pt-PT,mwl\",\n \"Languages\": \"Portuguese (official), Mirandese (official, but locally used)\",\n \"Area KM2\": 92391,\n \"Internet Hosts\": 3748000,\n \"Internet Users\": 5168000,\n \"Phones (Mobile)\": 12312000,\n \"Phones (Landline)\": 4558000,\n \"GDP\": 219300000000\n },\n {\n \"Country Name\": \"Puerto Rico\",\n \"ISO2\": \"PR\",\n \"ISO3\": \"PRI\",\n \"Top Level Domain\": \"pr\",\n \"FIPS\": \"RQ\",\n \"ISO Numeric\": 630,\n \"GeoNameID\": 4566966,\n \"E164\": 1,\n \"Phone Code\": \"1-787, 1-939\",\n \"Continent\": \"North America\",\n \"Capital\": \"San Juan\",\n \"Time Zone in Capital\": \"America/Puerto_Rico\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-PR,es-PR\",\n \"Languages\": \"Spanish, English\",\n \"Area KM2\": 9104,\n \"Internet Hosts\": 469,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 3060000,\n \"Phones (Landline)\": 780200,\n \"GDP\": 93520000000\n },\n {\n \"Country Name\": \"Qatar\",\n \"ISO2\": \"QA\",\n \"ISO3\": \"QAT\",\n \"Top Level Domain\": \"qa\",\n \"FIPS\": \"QA\",\n \"ISO Numeric\": 634,\n \"GeoNameID\": 289688,\n \"E164\": 974,\n \"Phone Code\": 974,\n \"Continent\": \"Asia\",\n \"Capital\": \"Doha\",\n \"Time Zone in Capital\": \"Asia/Qatar\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-QA,es\",\n \"Languages\": \"Arabic (official), English commonly used as a second language\",\n \"Area KM2\": 11437,\n \"Internet Hosts\": 897,\n \"Internet Users\": 563800,\n \"Phones (Mobile)\": 2600000,\n \"Phones (Landline)\": 327000,\n \"GDP\": 213100000000\n },\n {\n \"Country Name\": \"Republic of the Congo\",\n \"ISO2\": \"CG\",\n \"ISO3\": \"COG\",\n \"Top Level Domain\": \"cg\",\n \"FIPS\": \"CF\",\n \"ISO Numeric\": 178,\n \"GeoNameID\": 2260494,\n \"E164\": 242,\n \"Phone Code\": 242,\n \"Continent\": \"Africa\",\n \"Capital\": \"Brazzaville\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CG,kg,ln-CG\",\n \"Languages\": \"French (official), Lingala and Monokutuba (lingua franca trade languages), many local languages and dialects (of which Kikongo is the most widespread)\",\n \"Area KM2\": 342000,\n \"Internet Hosts\": 45,\n \"Internet Users\": 245200,\n \"Phones (Mobile)\": 4283000,\n \"Phones (Landline)\": 14900,\n \"GDP\": 14250000000\n },\n {\n \"Country Name\": \"Reunion\",\n \"ISO2\": \"RE\",\n \"ISO3\": \"REU\",\n \"Top Level Domain\": \"re\",\n \"FIPS\": \"RE\",\n \"ISO Numeric\": 638,\n \"GeoNameID\": 935317,\n \"E164\": 262,\n \"Phone Code\": 262,\n \"Continent\": \"Africa\",\n \"Capital\": \"Saint-Denis\",\n \"Time Zone in Capital\": \"Indian/Reunion\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-RE\",\n \"Languages\": \"French\",\n \"Area KM2\": 2517,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Romania\",\n \"ISO2\": \"RO\",\n \"ISO3\": \"ROU\",\n \"Top Level Domain\": \"ro\",\n \"FIPS\": \"RO\",\n \"ISO Numeric\": 642,\n \"GeoNameID\": 798549,\n \"E164\": 40,\n \"Phone Code\": 40,\n \"Continent\": \"Europe\",\n \"Capital\": \"Bucharest\",\n \"Time Zone in Capital\": \"Europe/Bucharest\",\n \"Currency\": \"Leu\",\n \"Language Codes\": \"ro,hu,rom\",\n \"Languages\": \"Romanian (official) 85.4%, Hungarian 6.3%, Romany (Gypsy) 1.2%, other 1%, unspecified 6.1% (2011 est.)\",\n \"Area KM2\": 237500,\n \"Internet Hosts\": 2667000,\n \"Internet Users\": 7787000,\n \"Phones (Mobile)\": 22700000,\n \"Phones (Landline)\": 4680000,\n \"GDP\": 188900000000\n },\n {\n \"Country Name\": \"Russia\",\n \"ISO2\": \"RU\",\n \"ISO3\": \"RUS\",\n \"Top Level Domain\": \"ru\",\n \"FIPS\": \"RS\",\n \"ISO Numeric\": 643,\n \"GeoNameID\": 2017370,\n \"E164\": 7,\n \"Phone Code\": 7,\n \"Continent\": \"Europe\",\n \"Capital\": \"Moscow\",\n \"Time Zone in Capital\": \"Europe/Moscow\",\n \"Currency\": \"Ruble\",\n \"Language Codes\": \"ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,tut,kbd,krc,ava,sah,nog\",\n \"Languages\": \"Russian (official) 96.3%, Dolgang 5.3%, German 1.5%, Chechen 1%, Tatar 3%, other 10.3%\",\n \"Area KM2\": 17100000,\n \"Internet Hosts\": 14865000,\n \"Internet Users\": 40853000,\n \"Phones (Mobile)\": 261900000,\n \"Phones (Landline)\": 42900000,\n \"GDP\": 2113000000000\n },\n {\n \"Country Name\": \"Rwanda\",\n \"ISO2\": \"RW\",\n \"ISO3\": \"RWA\",\n \"Top Level Domain\": \"rw\",\n \"FIPS\": \"RW\",\n \"ISO Numeric\": 646,\n \"GeoNameID\": 49518,\n \"E164\": 250,\n \"Phone Code\": 250,\n \"Continent\": \"Africa\",\n \"Capital\": \"Kigali\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"rw,en-RW,fr-RW,sw\",\n \"Languages\": \"Kinyarwanda only (official, universal Bantu vernacular) 93.2%, Kinyarwanda and other language(s) 6.2%, French (official) and other language(s) 0.1%, English (official) and other language(s) 0.1%, Swahili (or Kiswahili, used in commercial centers) 0.02%, other 0.03%, unspecified 0.3% (2002 est.)\",\n \"Area KM2\": 26338,\n \"Internet Hosts\": 1447,\n \"Internet Users\": 450000,\n \"Phones (Mobile)\": 5690000,\n \"Phones (Landline)\": 44400,\n \"GDP\": 7700000000\n },\n {\n \"Country Name\": \"Saint Barthelemy\",\n \"ISO2\": \"BL\",\n \"ISO3\": \"BLM\",\n \"Top Level Domain\": \"gp\",\n \"FIPS\": \"TB\",\n \"ISO Numeric\": 652,\n \"GeoNameID\": 3578476,\n \"E164\": 590,\n \"Phone Code\": 590,\n \"Continent\": \"North America\",\n \"Capital\": \"Gustavia\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr\",\n \"Languages\": \"French (primary), English\",\n \"Area KM2\": 21,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Saint Helena\",\n \"ISO2\": \"SH\",\n \"ISO3\": \"SHN\",\n \"Top Level Domain\": \"sh\",\n \"FIPS\": \"SH\",\n \"ISO Numeric\": 654,\n \"GeoNameID\": 3370751,\n \"E164\": 290,\n \"Phone Code\": 290,\n \"Continent\": \"Africa\",\n \"Capital\": \"Jamestown\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-SH\",\n \"Languages\": \"English\",\n \"Area KM2\": 410,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Saint Kitts and Nevis\",\n \"ISO2\": \"KN\",\n \"ISO3\": \"KNA\",\n \"Top Level Domain\": \"kn\",\n \"FIPS\": \"SC\",\n \"ISO Numeric\": 659,\n \"GeoNameID\": 3575174,\n \"E164\": 1,\n \"Phone Code\": \"1-869\",\n \"Continent\": \"North America\",\n \"Capital\": \"Basseterre\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-KN\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 261,\n \"Internet Hosts\": 54,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 84000,\n \"Phones (Landline)\": 20000,\n \"GDP\": 767000000\n },\n {\n \"Country Name\": \"Saint Lucia\",\n \"ISO2\": \"LC\",\n \"ISO3\": \"LCA\",\n \"Top Level Domain\": \"lc\",\n \"FIPS\": \"ST\",\n \"ISO Numeric\": 662,\n \"GeoNameID\": 3576468,\n \"E164\": 1,\n \"Phone Code\": \"1-758\",\n \"Continent\": \"North America\",\n \"Capital\": \"Castries\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-LC\",\n \"Languages\": \"English (official), French patois\",\n \"Area KM2\": 616,\n \"Internet Hosts\": 100,\n \"Internet Users\": 142900,\n \"Phones (Mobile)\": 227000,\n \"Phones (Landline)\": 36800,\n \"GDP\": 1377000000\n },\n {\n \"Country Name\": \"Saint Martin\",\n \"ISO2\": \"MF\",\n \"ISO3\": \"MAF\",\n \"Top Level Domain\": \"gp\",\n \"FIPS\": \"RN\",\n \"ISO Numeric\": 663,\n \"GeoNameID\": 3578421,\n \"E164\": 1,\n \"Phone Code\": 590,\n \"Continent\": \"North America\",\n \"Capital\": \"Marigot\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr\",\n \"Languages\": \"French (official), English, Dutch, French Patois, Spanish, Papiamento (dialect of Netherlands Antilles)\",\n \"Area KM2\": 53,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 561500000\n },\n {\n \"Country Name\": \"Saint Pierre and Miquelon\",\n \"ISO2\": \"PM\",\n \"ISO3\": \"SPM\",\n \"Top Level Domain\": \"pm\",\n \"FIPS\": \"SB\",\n \"ISO Numeric\": 666,\n \"GeoNameID\": 3424932,\n \"E164\": 508,\n \"Phone Code\": 508,\n \"Continent\": \"North America\",\n \"Capital\": \"Saint-Pierre\",\n \"Time Zone in Capital\": \"America/Miquelon\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-PM\",\n \"Languages\": \"French (official)\",\n \"Area KM2\": 242,\n \"Internet Hosts\": 15,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": 4800,\n \"GDP\": 215300000\n },\n {\n \"Country Name\": \"Saint Vincent and the Grenadines\",\n \"ISO2\": \"VC\",\n \"ISO3\": \"VCT\",\n \"Top Level Domain\": \"vc\",\n \"FIPS\": \"VC\",\n \"ISO Numeric\": 670,\n \"GeoNameID\": 3577815,\n \"E164\": 1,\n \"Phone Code\": \"1-784\",\n \"Continent\": \"North America\",\n \"Capital\": \"Kingstown\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-VC,fr\",\n \"Languages\": \"English, French patois\",\n \"Area KM2\": 389,\n \"Internet Hosts\": 305,\n \"Internet Users\": 76000,\n \"Phones (Mobile)\": 135500,\n \"Phones (Landline)\": 19400,\n \"GDP\": 742000000\n },\n {\n \"Country Name\": \"Samoa\",\n \"ISO2\": \"WS\",\n \"ISO3\": \"WSM\",\n \"Top Level Domain\": \"ws\",\n \"FIPS\": \"WS\",\n \"ISO Numeric\": 882,\n \"GeoNameID\": 4034894,\n \"E164\": 685,\n \"Phone Code\": 685,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Apia\",\n \"Time Zone in Capital\": \"Pacific/Apia\",\n \"Currency\": \"Tala\",\n \"Language Codes\": \"sm,en-WS\",\n \"Languages\": \"Samoan (Polynesian) (official), English\",\n \"Area KM2\": 2944,\n \"Internet Hosts\": 18013,\n \"Internet Users\": 9000,\n \"Phones (Mobile)\": 167400,\n \"Phones (Landline)\": 35300,\n \"GDP\": 705000000\n },\n {\n \"Country Name\": \"San Marino\",\n \"ISO2\": \"SM\",\n \"ISO3\": \"SMR\",\n \"Top Level Domain\": \"sm\",\n \"FIPS\": \"SM\",\n \"ISO Numeric\": 674,\n \"GeoNameID\": 3168068,\n \"E164\": 378,\n \"Phone Code\": 378,\n \"Continent\": \"Europe\",\n \"Capital\": \"San Marino\",\n \"Time Zone in Capital\": \"Europe/Rome\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"it-SM\",\n \"Languages\": \"Italian\",\n \"Area KM2\": 61,\n \"Internet Hosts\": 11015,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 36000,\n \"Phones (Landline)\": 18700,\n \"GDP\": 1866000000\n },\n {\n \"Country Name\": \"Sao Tome and Principe\",\n \"ISO2\": \"ST\",\n \"ISO3\": \"STP\",\n \"Top Level Domain\": \"st\",\n \"FIPS\": \"TP\",\n \"ISO Numeric\": 678,\n \"GeoNameID\": 2410758,\n \"E164\": 239,\n \"Phone Code\": 239,\n \"Continent\": \"Africa\",\n \"Capital\": \"Sao Tome\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Dobra\",\n \"Language Codes\": \"pt-ST\",\n \"Languages\": \"Portuguese 98.4% (official), Forro 36.2%, Cabo Verdian 8.5%, French 6.8%, Angolar 6.6%, English 4.9%, Lunguie 1%, other (including sign language) 2.4%\",\n \"Area KM2\": 1001,\n \"Internet Hosts\": 1678,\n \"Internet Users\": 26700,\n \"Phones (Mobile)\": 122000,\n \"Phones (Landline)\": 8000,\n \"GDP\": 311000000\n },\n {\n \"Country Name\": \"Saudi Arabia\",\n \"ISO2\": \"SA\",\n \"ISO3\": \"SAU\",\n \"Top Level Domain\": \"sa\",\n \"FIPS\": \"SA\",\n \"ISO Numeric\": 682,\n \"GeoNameID\": 102358,\n \"E164\": 966,\n \"Phone Code\": 966,\n \"Continent\": \"Asia\",\n \"Capital\": \"Riyadh\",\n \"Time Zone in Capital\": \"Asia/Riyadh\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-SA\",\n \"Languages\": \"Arabic (official)\",\n \"Area KM2\": 1960582,\n \"Internet Hosts\": 145941,\n \"Internet Users\": 9774000,\n \"Phones (Mobile)\": 53000000,\n \"Phones (Landline)\": 4800000,\n \"GDP\": 718500000000\n },\n {\n \"Country Name\": \"Senegal\",\n \"ISO2\": \"SN\",\n \"ISO3\": \"SEN\",\n \"Top Level Domain\": \"sn\",\n \"FIPS\": \"SG\",\n \"ISO Numeric\": 686,\n \"GeoNameID\": 2245662,\n \"E164\": 221,\n \"Phone Code\": 221,\n \"Continent\": \"Africa\",\n \"Capital\": \"Dakar\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-SN,wo,fuc,mnk\",\n \"Languages\": \"French (official), Wolof, Pulaar, Jola, Mandinka\",\n \"Area KM2\": 196190,\n \"Internet Hosts\": 237,\n \"Internet Users\": 1818000,\n \"Phones (Mobile)\": 11470000,\n \"Phones (Landline)\": 338200,\n \"GDP\": 15360000000\n },\n {\n \"Country Name\": \"Serbia\",\n \"ISO2\": \"RS\",\n \"ISO3\": \"SRB\",\n \"Top Level Domain\": \"rs\",\n \"FIPS\": \"RI\",\n \"ISO Numeric\": 688,\n \"GeoNameID\": 6290252,\n \"E164\": 381,\n \"Phone Code\": 381,\n \"Continent\": \"Europe\",\n \"Capital\": \"Belgrade\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"sr,hu,bs,rom\",\n \"Languages\": \"Serbian (official) 88.1%, Hungarian 3.4%, Bosnian 1.9%, Romany 1.4%, other 3.4%, undeclared or unknown 1.8%\",\n \"Area KM2\": 88361,\n \"Internet Hosts\": 1102000,\n \"Internet Users\": 4107000,\n \"Phones (Mobile)\": 9138000,\n \"Phones (Landline)\": 2977000,\n \"GDP\": 43680000000\n },\n {\n \"Country Name\": \"Seychelles\",\n \"ISO2\": \"SC\",\n \"ISO3\": \"SYC\",\n \"Top Level Domain\": \"sc\",\n \"FIPS\": \"SE\",\n \"ISO Numeric\": 690,\n \"GeoNameID\": 241170,\n \"E164\": 248,\n \"Phone Code\": 248,\n \"Continent\": \"Africa\",\n \"Capital\": \"Victoria\",\n \"Time Zone in Capital\": \"Indian/Mahe\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"en-SC,fr-SC\",\n \"Languages\": \"Seychellois Creole (official) 89.1%, English (official) 5.1%, French (official) 0.7%, other 3.8%, unspecified 1.4% (2010 est.)\",\n \"Area KM2\": 455,\n \"Internet Hosts\": 247,\n \"Internet Users\": 32000,\n \"Phones (Mobile)\": 138300,\n \"Phones (Landline)\": 28900,\n \"GDP\": 1271000000\n },\n {\n \"Country Name\": \"Sierra Leone\",\n \"ISO2\": \"SL\",\n \"ISO3\": \"SLE\",\n \"Top Level Domain\": \"sl\",\n \"FIPS\": \"SL\",\n \"ISO Numeric\": 694,\n \"GeoNameID\": 2403846,\n \"E164\": 232,\n \"Phone Code\": 232,\n \"Continent\": \"Africa\",\n \"Capital\": \"Freetown\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Leone\",\n \"Language Codes\": \"en-SL,men,tem\",\n \"Languages\": \"English (official, regular use limited to literate minority), Mende (principal vernacular in the south), Temne (principal vernacular in the north), Krio (English-based Creole, spoken by the descendants of freed Jamaican slaves who were settled in the Freetown area, a lingua franca and a first language for 10% of the population but understood by 95%)\",\n \"Area KM2\": 71740,\n \"Internet Hosts\": 282,\n \"Internet Users\": 14900,\n \"Phones (Mobile)\": 2210000,\n \"Phones (Landline)\": 18000,\n \"GDP\": 4607000000\n },\n {\n \"Country Name\": \"Singapore\",\n \"ISO2\": \"SG\",\n \"ISO3\": \"SGP\",\n \"Top Level Domain\": \"sg\",\n \"FIPS\": \"SN\",\n \"ISO Numeric\": 702,\n \"GeoNameID\": 1880251,\n \"E164\": 65,\n \"Phone Code\": 65,\n \"Continent\": \"Asia\",\n \"Capital\": \"Singapore\",\n \"Time Zone in Capital\": \"Asia/Singapore\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"cmn,en-SG,ms-SG,ta-SG,zh-SG\",\n \"Languages\": \"Mandarin (official) 36.3%, English (official) 29.8%, Malay (official) 11.9%, Hokkien 8.1%, Tamil (official) 4.4%, Cantonese 4.1%, Teochew 3.2%, other Indian languages 1.2%, other Chinese dialects 1.1%, other 1.1% (2010 est.)\",\n \"Area KM2\": 693,\n \"Internet Hosts\": 1960000,\n \"Internet Users\": 3235000,\n \"Phones (Mobile)\": 8063000,\n \"Phones (Landline)\": 1990000,\n \"GDP\": 295700000000\n },\n {\n \"Country Name\": \"Sint Maarten\",\n \"ISO2\": \"SX\",\n \"ISO3\": \"SXM\",\n \"Top Level Domain\": \"sx\",\n \"FIPS\": \"NN\",\n \"ISO Numeric\": 534,\n \"GeoNameID\": 7609695,\n \"E164\": 1,\n \"Phone Code\": \"1-721\",\n \"Continent\": \"North America\",\n \"Capital\": \"Philipsburg\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl,en\",\n \"Languages\": \"English (official) 67.5%, Spanish 12.9%, Creole 8.2%, Dutch (official) 4.2%, Papiamento (a Spanish-Portuguese-Dutch-English dialect) 2.2%, French 1.5%, other 3.5% (2001 census)\",\n \"Area KM2\": 34,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 794700000\n },\n {\n \"Country Name\": \"Slovakia\",\n \"ISO2\": \"SK\",\n \"ISO3\": \"SVK\",\n \"Top Level Domain\": \"sk\",\n \"FIPS\": \"LO\",\n \"ISO Numeric\": 703,\n \"GeoNameID\": 3057568,\n \"E164\": 421,\n \"Phone Code\": 421,\n \"Continent\": \"Europe\",\n \"Capital\": \"Bratislava\",\n \"Time Zone in Capital\": \"Europe/Prague\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sk,hu\",\n \"Languages\": \"Slovak (official) 78.6%, Hungarian 9.4%, Roma 2.3%, Ruthenian 1%, other or unspecified 8.8% (2011 est.)\",\n \"Area KM2\": 48845,\n \"Internet Hosts\": 1384000,\n \"Internet Users\": 4063000,\n \"Phones (Mobile)\": 6095000,\n \"Phones (Landline)\": 975000,\n \"GDP\": 96960000000\n },\n {\n \"Country Name\": \"Slovenia\",\n \"ISO2\": \"SI\",\n \"ISO3\": \"SVN\",\n \"Top Level Domain\": \"si\",\n \"FIPS\": \"SI\",\n \"ISO Numeric\": 705,\n \"GeoNameID\": 3190538,\n \"E164\": 386,\n \"Phone Code\": 386,\n \"Continent\": \"Europe\",\n \"Capital\": \"Ljubljana\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sl,sh\",\n \"Languages\": \"Slovenian (official) 91.1%, Serbo-Croatian 4.5%, other or unspecified 4.4%, Italian (official, only in municipalities where Italian national communities reside), Hungarian (official, only in municipalities where Hungarian national communities reside) (2002 census)\",\n \"Area KM2\": 20273,\n \"Internet Hosts\": 415581,\n \"Internet Users\": 1298000,\n \"Phones (Mobile)\": 2246000,\n \"Phones (Landline)\": 825000,\n \"GDP\": 46820000000\n },\n {\n \"Country Name\": \"Solomon Islands\",\n \"ISO2\": \"SB\",\n \"ISO3\": \"SLB\",\n \"Top Level Domain\": \"sb\",\n \"FIPS\": \"BP\",\n \"ISO Numeric\": \"090\",\n \"GeoNameID\": 2103350,\n \"E164\": 677,\n \"Phone Code\": 677,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Honiara\",\n \"Time Zone in Capital\": \"Pacific/Guadalcanal\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-SB,tpi\",\n \"Languages\": \"Melanesian pidgin (in much of the country is lingua franca), English (official but spoken by only 1%-2% of the population), 120 indigenous languages\",\n \"Area KM2\": 28450,\n \"Internet Hosts\": 4370,\n \"Internet Users\": 10000,\n \"Phones (Mobile)\": 302100,\n \"Phones (Landline)\": 8060,\n \"GDP\": 1099000000\n },\n {\n \"Country Name\": \"Somalia\",\n \"ISO2\": \"SO\",\n \"ISO3\": \"SOM\",\n \"Top Level Domain\": \"so\",\n \"FIPS\": \"SO\",\n \"ISO Numeric\": 706,\n \"GeoNameID\": 51537,\n \"E164\": 252,\n \"Phone Code\": 252,\n \"Continent\": \"Africa\",\n \"Capital\": \"Mogadishu\",\n \"Time Zone in Capital\": \"Africa/Mogadishu\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"so-SO,ar-SO,it,en-SO\",\n \"Languages\": \"Somali (official), Arabic (official, according to the Transitional Federal Charter), Italian, English\",\n \"Area KM2\": 637657,\n \"Internet Hosts\": 186,\n \"Internet Users\": 106000,\n \"Phones (Mobile)\": 658000,\n \"Phones (Landline)\": 100000,\n \"GDP\": 2372000000\n },\n {\n \"Country Name\": \"South Africa\",\n \"ISO2\": \"ZA\",\n \"ISO3\": \"ZAF\",\n \"Top Level Domain\": \"za\",\n \"FIPS\": \"SF\",\n \"ISO Numeric\": 710,\n \"GeoNameID\": 953987,\n \"E164\": 27,\n \"Phone Code\": 27,\n \"Continent\": \"Africa\",\n \"Capital\": \"Pretoria\",\n \"Time Zone in Capital\": \"Africa/Johannesburg\",\n \"Currency\": \"Rand\",\n \"Language Codes\": \"zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr\",\n \"Languages\": \"IsiZulu (official) 22.7%, IsiXhosa (official) 16%, Afrikaans (official) 13.5%, English (official) 9.6%, Sepedi (official) 9.1%, Setswana (official) 8%, Sesotho (official) 7.6%, Xitsonga (official) 4.5%, siSwati (official) 2.5%, Tshivenda (official) 2.4%, isiNdebele (official) 2.1%, sign language 0.5%, other 1.6% (2011 est.)\",\n \"Area KM2\": 1219912,\n \"Internet Hosts\": 4761000,\n \"Internet Users\": 4420000,\n \"Phones (Mobile)\": 68400000,\n \"Phones (Landline)\": 4030000,\n \"GDP\": 353900000000\n },\n {\n \"Country Name\": \"South Korea\",\n \"ISO2\": \"KR\",\n \"ISO3\": \"KOR\",\n \"Top Level Domain\": \"kr\",\n \"FIPS\": \"KS\",\n \"ISO Numeric\": 410,\n \"GeoNameID\": 1835841,\n \"E164\": 82,\n \"Phone Code\": 82,\n \"Continent\": \"Asia\",\n \"Capital\": \"Seoul\",\n \"Time Zone in Capital\": \"Asia/Seoul\",\n \"Currency\": \"Won\",\n \"Language Codes\": \"ko-KR,en\",\n \"Languages\": \"Korean, English (widely taught in junior high and high school)\",\n \"Area KM2\": 98480,\n \"Internet Hosts\": 315697,\n \"Internet Users\": 39400000,\n \"Phones (Mobile)\": 53625000,\n \"Phones (Landline)\": 30100000,\n \"GDP\": 1198000000000\n },\n {\n \"Country Name\": \"South Sudan\",\n \"ISO2\": \"SS\",\n \"ISO3\": \"SSD\",\n \"Top Level Domain\": \"ss\",\n \"FIPS\": \"OD\",\n \"ISO Numeric\": 728,\n \"GeoNameID\": 7909807,\n \"E164\": 211,\n \"Phone Code\": 211,\n \"Continent\": \"Africa\",\n \"Capital\": \"Juba\",\n \"Time Zone in Capital\": \"Africa/Khartoum\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en\",\n \"Languages\": \"English (official), Arabic (includes Juba and Sudanese variants), regional languages include Dinka, Nuer, Bari, Zande, Shilluk\",\n \"Area KM2\": 644329,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 2000000,\n \"Phones (Landline)\": 2200,\n \"GDP\": 11770000000\n },\n {\n \"Country Name\": \"Spain\",\n \"ISO2\": \"ES\",\n \"ISO3\": \"ESP\",\n \"Top Level Domain\": \"es\",\n \"FIPS\": \"SP\",\n \"ISO Numeric\": 724,\n \"GeoNameID\": 2510769,\n \"E164\": 34,\n \"Phone Code\": 34,\n \"Continent\": \"Europe\",\n \"Capital\": \"Madrid\",\n \"Time Zone in Capital\": \"Europe/Madrid\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"es-ES,ca,gl,eu,oc\",\n \"Languages\": \"Castilian Spanish (official) 74%, Catalan 17%, Galician 7%, and Basque 2%\",\n \"Area KM2\": 504782,\n \"Internet Hosts\": 4228000,\n \"Internet Users\": 28119000,\n \"Phones (Mobile)\": 50663000,\n \"Phones (Landline)\": 19220000,\n \"GDP\": 1356000000000\n },\n {\n \"Country Name\": \"Sri Lanka\",\n \"ISO2\": \"LK\",\n \"ISO3\": \"LKA\",\n \"Top Level Domain\": \"lk\",\n \"FIPS\": \"CE\",\n \"ISO Numeric\": 144,\n \"GeoNameID\": 1227603,\n \"E164\": 94,\n \"Phone Code\": 94,\n \"Continent\": \"Asia\",\n \"Capital\": \"Colombo\",\n \"Time Zone in Capital\": \"Asia/Colombo\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"si,ta,en\",\n \"Languages\": \"Sinhala (official and national language) 74%, Tamil (national language) 18%, other 8%\",\n \"Area KM2\": 65610,\n \"Internet Hosts\": 9552,\n \"Internet Users\": 1777000,\n \"Phones (Mobile)\": 19533000,\n \"Phones (Landline)\": 2796000,\n \"GDP\": 65120000000\n },\n {\n \"Country Name\": \"Sudan\",\n \"ISO2\": \"SD\",\n \"ISO3\": \"SDN\",\n \"Top Level Domain\": \"sd\",\n \"FIPS\": \"SU\",\n \"ISO Numeric\": 729,\n \"GeoNameID\": 366755,\n \"E164\": 249,\n \"Phone Code\": 249,\n \"Continent\": \"Africa\",\n \"Capital\": \"Khartoum\",\n \"Time Zone in Capital\": \"Africa/Khartoum\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-SD,en,fia\",\n \"Languages\": \"Arabic (official), English (official), Nubian, Ta Bedawie, Fur\",\n \"Area KM2\": 1861484,\n \"Internet Hosts\": 99,\n \"Internet Users\": 4200000,\n \"Phones (Mobile)\": 27659000,\n \"Phones (Landline)\": 425000,\n \"GDP\": 52500000000\n },\n {\n \"Country Name\": \"Suriname\",\n \"ISO2\": \"SR\",\n \"ISO3\": \"SUR\",\n \"Top Level Domain\": \"sr\",\n \"FIPS\": \"NS\",\n \"ISO Numeric\": 740,\n \"GeoNameID\": 3382998,\n \"E164\": 597,\n \"Phone Code\": 597,\n \"Continent\": \"South America\",\n \"Capital\": \"Paramaribo\",\n \"Time Zone in Capital\": \"America/Paramaribo\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"nl-SR,en,srn,hns,jv\",\n \"Languages\": \"Dutch (official), English (widely spoken), Sranang Tongo (Surinamese, sometimes called Taki-Taki, is native language of Creoles and much of the younger population and is lingua franca among others), Caribbean Hindustani (a dialect of Hindi), Javanese\",\n \"Area KM2\": 163270,\n \"Internet Hosts\": 188,\n \"Internet Users\": 163000,\n \"Phones (Mobile)\": 977000,\n \"Phones (Landline)\": 83000,\n \"GDP\": 5009000000\n },\n {\n \"Country Name\": \"Svalbard and Jan Mayen\",\n \"ISO2\": \"SJ\",\n \"ISO3\": \"SJM\",\n \"Top Level Domain\": \"sj\",\n \"FIPS\": \"SV\",\n \"ISO Numeric\": 744,\n \"GeoNameID\": 607072,\n \"E164\": 47,\n \"Phone Code\": 47,\n \"Continent\": \"Europe\",\n \"Capital\": \"Longyearbyen\",\n \"Time Zone in Capital\": \"Europe/Oslo\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"no,ru\",\n \"Languages\": \"Norwegian, Russian\",\n \"Area KM2\": 62049,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Swaziland\",\n \"ISO2\": \"SZ\",\n \"ISO3\": \"SWZ\",\n \"Top Level Domain\": \"sz\",\n \"FIPS\": \"WZ\",\n \"ISO Numeric\": 748,\n \"GeoNameID\": 934841,\n \"E164\": 268,\n \"Phone Code\": 268,\n \"Continent\": \"Africa\",\n \"Capital\": \"Mbabane\",\n \"Time Zone in Capital\": \"Africa/Johannesburg\",\n \"Currency\": \"Lilangeni\",\n \"Language Codes\": \"en-SZ,ss-SZ\",\n \"Languages\": \"English (official, used for government business), siSwati (official)\",\n \"Area KM2\": 17363,\n \"Internet Hosts\": 2744,\n \"Internet Users\": 90100,\n \"Phones (Mobile)\": 805000,\n \"Phones (Landline)\": 48600,\n \"GDP\": 3807000000\n },\n {\n \"Country Name\": \"Sweden\",\n \"ISO2\": \"SE\",\n \"ISO3\": \"SWE\",\n \"Top Level Domain\": \"se\",\n \"FIPS\": \"SW\",\n \"ISO Numeric\": 752,\n \"GeoNameID\": 2661886,\n \"E164\": 46,\n \"Phone Code\": 46,\n \"Continent\": \"Europe\",\n \"Capital\": \"Stockholm\",\n \"Time Zone in Capital\": \"Europe/Stockholm\",\n \"Currency\": \"Krona\",\n \"Language Codes\": \"sv-SE,se,sma,fi-SE\",\n \"Languages\": \"Swedish (official), small Sami- and Finnish-speaking minorities\",\n \"Area KM2\": 449964,\n \"Internet Hosts\": 5978000,\n \"Internet Users\": 8398000,\n \"Phones (Mobile)\": 11643000,\n \"Phones (Landline)\": 4321000,\n \"GDP\": 552000000000\n },\n {\n \"Country Name\": \"Switzerland\",\n \"ISO2\": \"CH\",\n \"ISO3\": \"CHE\",\n \"Top Level Domain\": \"ch\",\n \"FIPS\": \"SZ\",\n \"ISO Numeric\": 756,\n \"GeoNameID\": 2658434,\n \"E164\": 41,\n \"Phone Code\": 41,\n \"Continent\": \"Europe\",\n \"Capital\": \"Berne\",\n \"Time Zone in Capital\": \"Europe/Zurich\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"de-CH,fr-CH,it-CH,rm\",\n \"Languages\": \"German (official) 64.9%, French (official) 22.6%, Italian (official) 8.3%, Serbo-Croatian 2.5%, Albanian 2.6%, Portuguese 3.4%, Spanish 2.2%, English 4.6%, Romansch (official) 0.5%, other 5.1%\",\n \"Area KM2\": 41290,\n \"Internet Hosts\": 5301000,\n \"Internet Users\": 6152000,\n \"Phones (Mobile)\": 10460000,\n \"Phones (Landline)\": 4382000,\n \"GDP\": 646200000000\n },\n {\n \"Country Name\": \"Syria\",\n \"ISO2\": \"SY\",\n \"ISO3\": \"SYR\",\n \"Top Level Domain\": \"sy\",\n \"FIPS\": \"SY\",\n \"ISO Numeric\": 760,\n \"GeoNameID\": 163843,\n \"E164\": 963,\n \"Phone Code\": 963,\n \"Continent\": \"Asia\",\n \"Capital\": \"Damascus\",\n \"Time Zone in Capital\": \"Asia/Damascus\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-SY,ku,hy,arc,fr,en\",\n \"Languages\": \"Arabic (official), Kurdish, Armenian, Aramaic, Circassian (widely understood); French, English (somewhat understood)\",\n \"Area KM2\": 185180,\n \"Internet Hosts\": 416,\n \"Internet Users\": 4469000,\n \"Phones (Mobile)\": 12928000,\n \"Phones (Landline)\": 4425000,\n \"GDP\": 64700000000\n },\n {\n \"Country Name\": \"Taiwan\",\n \"ISO2\": \"TW\",\n \"ISO3\": \"TWN\",\n \"Top Level Domain\": \"tw\",\n \"FIPS\": \"TW\",\n \"ISO Numeric\": 158,\n \"GeoNameID\": 1668284,\n \"E164\": 886,\n \"Phone Code\": 886,\n \"Continent\": \"Asia\",\n \"Capital\": \"Taipei\",\n \"Time Zone in Capital\": \"Asia/Taipei\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"zh-TW,zh,nan,hak\",\n \"Languages\": \"Mandarin Chinese (official), Taiwanese (Min), Hakka dialects\",\n \"Area KM2\": 35980,\n \"Internet Hosts\": 6272000,\n \"Internet Users\": 16147000,\n \"Phones (Mobile)\": 29455000,\n \"Phones (Landline)\": 15998000,\n \"GDP\": 484700000000\n },\n {\n \"Country Name\": \"Tajikistan\",\n \"ISO2\": \"TJ\",\n \"ISO3\": \"TJK\",\n \"Top Level Domain\": \"tj\",\n \"FIPS\": \"TI\",\n \"ISO Numeric\": 762,\n \"GeoNameID\": 1220409,\n \"E164\": 992,\n \"Phone Code\": 992,\n \"Continent\": \"Asia\",\n \"Capital\": \"Dushanbe\",\n \"Time Zone in Capital\": \"Asia/Dushanbe\",\n \"Currency\": \"Somoni\",\n \"Language Codes\": \"tg,ru\",\n \"Languages\": \"Tajik (official), Russian widely used in government and business\",\n \"Area KM2\": 143100,\n \"Internet Hosts\": 6258,\n \"Internet Users\": 700000,\n \"Phones (Mobile)\": 6528000,\n \"Phones (Landline)\": 393000,\n \"GDP\": 8513000000\n },\n {\n \"Country Name\": \"Tanzania\",\n \"ISO2\": \"TZ\",\n \"ISO3\": \"TZA\",\n \"Top Level Domain\": \"tz\",\n \"FIPS\": \"TZ\",\n \"ISO Numeric\": 834,\n \"GeoNameID\": 149590,\n \"E164\": 255,\n \"Phone Code\": 255,\n \"Continent\": \"Africa\",\n \"Capital\": \"Dodoma\",\n \"Time Zone in Capital\": \"Africa/Dar_es_Salaam\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"sw-TZ,en,ar\",\n \"Languages\": \"Kiswahili or Swahili (official), Kiunguja (name for Swahili in Zanzibar), English (official, primary language of commerce, administration, and higher education), Arabic (widely spoken in Zanzibar), many local languages\",\n \"Area KM2\": 945087,\n \"Internet Hosts\": 26074,\n \"Internet Users\": 678000,\n \"Phones (Mobile)\": 27220000,\n \"Phones (Landline)\": 161100,\n \"GDP\": 31940000000\n },\n {\n \"Country Name\": \"Thailand\",\n \"ISO2\": \"TH\",\n \"ISO3\": \"THA\",\n \"Top Level Domain\": \"th\",\n \"FIPS\": \"TH\",\n \"ISO Numeric\": 764,\n \"GeoNameID\": 1605651,\n \"E164\": 66,\n \"Phone Code\": 66,\n \"Continent\": \"Asia\",\n \"Capital\": \"Bangkok\",\n \"Time Zone in Capital\": \"Asia/Bangkok\",\n \"Currency\": \"Baht\",\n \"Language Codes\": \"th,en\",\n \"Languages\": \"Thai (official) 90.7%, Burmese 1.3%, other 8%\",\n \"Area KM2\": 514000,\n \"Internet Hosts\": 3399000,\n \"Internet Users\": 17483000,\n \"Phones (Mobile)\": 84075000,\n \"Phones (Landline)\": 6391000,\n \"GDP\": 400900000000\n },\n {\n \"Country Name\": \"Togo\",\n \"ISO2\": \"TG\",\n \"ISO3\": \"TGO\",\n \"Top Level Domain\": \"tg\",\n \"FIPS\": \"TO\",\n \"ISO Numeric\": 768,\n \"GeoNameID\": 2363686,\n \"E164\": 228,\n \"Phone Code\": 228,\n \"Continent\": \"Africa\",\n \"Capital\": \"Lome\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-TG,ee,hna,kbp,dag,ha\",\n \"Languages\": \"French (official, the language of commerce), Ewe and Mina (the two major African languages in the south), Kabye (sometimes spelled Kabiye) and Dagomba (the two major African languages in the north)\",\n \"Area KM2\": 56785,\n \"Internet Hosts\": 1168,\n \"Internet Users\": 356300,\n \"Phones (Mobile)\": 3518000,\n \"Phones (Landline)\": 225000,\n \"GDP\": 4299000000\n },\n {\n \"Country Name\": \"Tokelau\",\n \"ISO2\": \"TK\",\n \"ISO3\": \"TKL\",\n \"Top Level Domain\": \"tk\",\n \"FIPS\": \"TL\",\n \"ISO Numeric\": 772,\n \"GeoNameID\": 4031074,\n \"E164\": 690,\n \"Phone Code\": 690,\n \"Continent\": \"Oceania\",\n \"Capital\": \"\",\n \"Time Zone in Capital\": \"Pacific/Fakaofo\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"tkl,en-TK\",\n \"Languages\": \"Tokelauan 93.5% (a Polynesian language), English 58.9%, Samoan 45.5%, Tuvaluan 11.6%, Kiribati 2.7%, other 2.5%, none 4.1%, unspecified 0.6%\",\n \"Area KM2\": 10,\n \"Internet Hosts\": 2069,\n \"Internet Users\": 800,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Tonga\",\n \"ISO2\": \"TO\",\n \"ISO3\": \"TON\",\n \"Top Level Domain\": \"to\",\n \"FIPS\": \"TN\",\n \"ISO Numeric\": 776,\n \"GeoNameID\": 4032283,\n \"E164\": 676,\n \"Phone Code\": 676,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Nuku'alofa\",\n \"Time Zone in Capital\": \"Pacific/Tongatapu\",\n \"Currency\": \"Pa'anga\",\n \"Language Codes\": \"to,en-TO\",\n \"Languages\": \"English and Tongan 87%, Tongan (official) 10.7%, English (official) 1.2%, other 1.1%, uspecified 0.03% (2006 est.)\",\n \"Area KM2\": 748,\n \"Internet Hosts\": 5367,\n \"Internet Users\": 8400,\n \"Phones (Mobile)\": 56000,\n \"Phones (Landline)\": 30000,\n \"GDP\": 477000000\n },\n {\n \"Country Name\": \"Trinidad and Tobago\",\n \"ISO2\": \"TT\",\n \"ISO3\": \"TTO\",\n \"Top Level Domain\": \"tt\",\n \"FIPS\": \"TD\",\n \"ISO Numeric\": 780,\n \"GeoNameID\": 3573591,\n \"E164\": 1,\n \"Phone Code\": \"1-868\",\n \"Continent\": \"North America\",\n \"Capital\": \"Port of Spain\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-TT,hns,fr,es,zh\",\n \"Languages\": \"English (official), Caribbean Hindustani (a dialect of Hindi), French, Spanish, Chinese\",\n \"Area KM2\": 5128,\n \"Internet Hosts\": 241690,\n \"Internet Users\": 593000,\n \"Phones (Mobile)\": 1884000,\n \"Phones (Landline)\": 287000,\n \"GDP\": 27130000000\n },\n {\n \"Country Name\": \"Tunisia\",\n \"ISO2\": \"TN\",\n \"ISO3\": \"TUN\",\n \"Top Level Domain\": \"tn\",\n \"FIPS\": \"TS\",\n \"ISO Numeric\": 788,\n \"GeoNameID\": 2464461,\n \"E164\": 216,\n \"Phone Code\": 216,\n \"Continent\": \"Africa\",\n \"Capital\": \"Tunis\",\n \"Time Zone in Capital\": \"Africa/Tunis\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-TN,fr\",\n \"Languages\": \"Arabic (official, one of the languages of commerce), French (commerce), Berber (Tamazight)\",\n \"Area KM2\": 163610,\n \"Internet Hosts\": 576,\n \"Internet Users\": 3500000,\n \"Phones (Mobile)\": 12840000,\n \"Phones (Landline)\": 1105000,\n \"GDP\": 48380000000\n },\n {\n \"Country Name\": \"Turkey\",\n \"ISO2\": \"TR\",\n \"ISO3\": \"TUR\",\n \"Top Level Domain\": \"tr\",\n \"FIPS\": \"TU\",\n \"ISO Numeric\": 792,\n \"GeoNameID\": 298795,\n \"E164\": 90,\n \"Phone Code\": 90,\n \"Continent\": \"Asia\",\n \"Capital\": \"Ankara\",\n \"Time Zone in Capital\": \"Europe/Istanbul\",\n \"Currency\": \"Lira\",\n \"Language Codes\": \"tr-TR,ku,diq,az,av\",\n \"Languages\": \"Turkish (official), Kurdish, other minority languages\",\n \"Area KM2\": 780580,\n \"Internet Hosts\": 7093000,\n \"Internet Users\": 27233000,\n \"Phones (Mobile)\": 67680000,\n \"Phones (Landline)\": 13860000,\n \"GDP\": 821800000000\n },\n {\n \"Country Name\": \"Turkmenistan\",\n \"ISO2\": \"TM\",\n \"ISO3\": \"TKM\",\n \"Top Level Domain\": \"tm\",\n \"FIPS\": \"TX\",\n \"ISO Numeric\": 795,\n \"GeoNameID\": 1218197,\n \"E164\": 993,\n \"Phone Code\": 993,\n \"Continent\": \"Asia\",\n \"Capital\": \"Ashgabat\",\n \"Time Zone in Capital\": \"Asia/Ashgabat\",\n \"Currency\": \"Manat\",\n \"Language Codes\": \"tk,ru,uz\",\n \"Languages\": \"Turkmen (official) 72%, Russian 12%, Uzbek 9%, other 7%\",\n \"Area KM2\": 488100,\n \"Internet Hosts\": 714,\n \"Internet Users\": 80400,\n \"Phones (Mobile)\": 3953000,\n \"Phones (Landline)\": 575000,\n \"GDP\": 40560000000\n },\n {\n \"Country Name\": \"Turks and Caicos Islands\",\n \"ISO2\": \"TC\",\n \"ISO3\": \"TCA\",\n \"Top Level Domain\": \"tc\",\n \"FIPS\": \"TK\",\n \"ISO Numeric\": 796,\n \"GeoNameID\": 3576916,\n \"E164\": 1,\n \"Phone Code\": \"1-649\",\n \"Continent\": \"North America\",\n \"Capital\": \"Cockburn Town\",\n \"Time Zone in Capital\": \"America/Grand_Turk\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-TC\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 430,\n \"Internet Hosts\": 73217,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Tuvalu\",\n \"ISO2\": \"TV\",\n \"ISO3\": \"TUV\",\n \"Top Level Domain\": \"tv\",\n \"FIPS\": \"TV\",\n \"ISO Numeric\": 798,\n \"GeoNameID\": 2110297,\n \"E164\": 688,\n \"Phone Code\": 688,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Funafuti\",\n \"Time Zone in Capital\": \"Pacific/Funafuti\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"tvl,en,sm,gil\",\n \"Languages\": \"Tuvaluan (official), English (official), Samoan, Kiribati (on the island of Nui)\",\n \"Area KM2\": 26,\n \"Internet Hosts\": 145158,\n \"Internet Users\": 4200,\n \"Phones (Mobile)\": 2800,\n \"Phones (Landline)\": 1450,\n \"GDP\": 38000000\n },\n {\n \"Country Name\": \"U.S. Virgin Islands\",\n \"ISO2\": \"VI\",\n \"ISO3\": \"VIR\",\n \"Top Level Domain\": \"vi\",\n \"FIPS\": \"VQ\",\n \"ISO Numeric\": 850,\n \"GeoNameID\": 4796775,\n \"E164\": 1,\n \"Phone Code\": \"1-340\",\n \"Continent\": \"North America\",\n \"Capital\": \"Charlotte Amalie\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-VI\",\n \"Languages\": \"English 74.7%, Spanish or Spanish Creole 16.8%, French or French Creole 6.6%, other 1.9% (2000 census)\",\n \"Area KM2\": 352,\n \"Internet Hosts\": 4790,\n \"Internet Users\": 30000,\n \"Phones (Mobile)\": 80300,\n \"Phones (Landline)\": 75800,\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Uganda\",\n \"ISO2\": \"UG\",\n \"ISO3\": \"UGA\",\n \"Top Level Domain\": \"ug\",\n \"FIPS\": \"UG\",\n \"ISO Numeric\": 800,\n \"GeoNameID\": 226074,\n \"E164\": 256,\n \"Phone Code\": 256,\n \"Continent\": \"Africa\",\n \"Capital\": \"Kampala\",\n \"Time Zone in Capital\": \"Africa/Kampala\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"en-UG,lg,sw,ar\",\n \"Languages\": \"English (official national language, taught in grade schools, used in courts of law and by most newspapers and some radio broadcasts), Ganda or Luganda (most widely used of the Niger-Congo languages, preferred for native language publications in the capital and may be taught in school), other Niger-Congo languages, Nilo-Saharan languages, Swahili, Arabic\",\n \"Area KM2\": 236040,\n \"Internet Hosts\": 32683,\n \"Internet Users\": 3200000,\n \"Phones (Mobile)\": 16355000,\n \"Phones (Landline)\": 315000,\n \"GDP\": 22600000000\n },\n {\n \"Country Name\": \"Ukraine\",\n \"ISO2\": \"UA\",\n \"ISO3\": \"UKR\",\n \"Top Level Domain\": \"ua\",\n \"FIPS\": \"UP\",\n \"ISO Numeric\": 804,\n \"GeoNameID\": 690791,\n \"E164\": 380,\n \"Phone Code\": 380,\n \"Continent\": \"Europe\",\n \"Capital\": \"Kiev\",\n \"Time Zone in Capital\": \"Europe/Kiev\",\n \"Currency\": \"Hryvnia\",\n \"Language Codes\": \"uk,ru-UA,rom,pl,hu\",\n \"Languages\": \"Ukrainian (official) 67%, Russian (regional language) 24%, other (includes small Romanian-, Polish-, and Hungarian-speaking minorities) 9%\",\n \"Area KM2\": 603700,\n \"Internet Hosts\": 2173000,\n \"Internet Users\": 7770000,\n \"Phones (Mobile)\": 59344000,\n \"Phones (Landline)\": 12182000,\n \"GDP\": 175500000000\n },\n {\n \"Country Name\": \"United Arab Emirates\",\n \"ISO2\": \"AE\",\n \"ISO3\": \"ARE\",\n \"Top Level Domain\": \"ae\",\n \"FIPS\": \"AE\",\n \"ISO Numeric\": 784,\n \"GeoNameID\": 290557,\n \"E164\": 971,\n \"Phone Code\": 971,\n \"Continent\": \"Asia\",\n \"Capital\": \"Abu Dhabi\",\n \"Time Zone in Capital\": \"Asia/Dubai\",\n \"Currency\": \"Dirham\",\n \"Language Codes\": \"ar-AE,fa,en,hi,ur\",\n \"Languages\": \"Arabic (official), Persian, English, Hindi, Urdu\",\n \"Area KM2\": 82880,\n \"Internet Hosts\": 337804,\n \"Internet Users\": 3449000,\n \"Phones (Mobile)\": 13775000,\n \"Phones (Landline)\": 1967000,\n \"GDP\": 390000000000\n },\n {\n \"Country Name\": \"United Kingdom\",\n \"ISO2\": \"GB\",\n \"ISO3\": \"GBR\",\n \"Top Level Domain\": \"uk\",\n \"FIPS\": \"UK\",\n \"ISO Numeric\": 826,\n \"GeoNameID\": 2635167,\n \"E164\": 44,\n \"Phone Code\": 44,\n \"Continent\": \"Europe\",\n \"Capital\": \"London\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-GB,cy-GB,gd\",\n \"Languages\": \"English\",\n \"Area KM2\": 244820,\n \"Internet Hosts\": 8107000,\n \"Internet Users\": 51444000,\n \"Phones (Mobile)\": 82109000,\n \"Phones (Landline)\": 33010000,\n \"GDP\": 2490000000000\n },\n {\n \"Country Name\": \"United States\",\n \"ISO2\": \"US\",\n \"ISO3\": \"USA\",\n \"Top Level Domain\": \"us\",\n \"FIPS\": \"US\",\n \"ISO Numeric\": 840,\n \"GeoNameID\": 6252001,\n \"E164\": 1,\n \"Phone Code\": 1,\n \"Continent\": \"North America\",\n \"Capital\": \"Washington\",\n \"Time Zone in Capital\": \"America/New_York\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-US,es-US,haw,fr\",\n \"Languages\": \"English 82.1%, Spanish 10.7%, other Indo-European 3.8%, Asian and Pacific island 2.7%, other 0.7% (2000 census)\",\n \"Area KM2\": 9629091,\n \"Internet Hosts\": 505000000,\n \"Internet Users\": 245000000,\n \"Phones (Mobile)\": 310000000,\n \"Phones (Landline)\": 139000000,\n \"GDP\": 16720000000000\n },\n {\n \"Country Name\": \"Uruguay\",\n \"ISO2\": \"UY\",\n \"ISO3\": \"URY\",\n \"Top Level Domain\": \"uy\",\n \"FIPS\": \"UY\",\n \"ISO Numeric\": 858,\n \"GeoNameID\": 3439705,\n \"E164\": 598,\n \"Phone Code\": 598,\n \"Continent\": \"South America\",\n \"Capital\": \"Montevideo\",\n \"Time Zone in Capital\": \"America/Montevideo\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-UY\",\n \"Languages\": \"Spanish (official), Portunol, Brazilero (Portuguese-Spanish mix on the Brazilian frontier)\",\n \"Area KM2\": 176220,\n \"Internet Hosts\": 1036000,\n \"Internet Users\": 1405000,\n \"Phones (Mobile)\": 5000000,\n \"Phones (Landline)\": 1010000,\n \"GDP\": 57110000000\n },\n {\n \"Country Name\": \"Uzbekistan\",\n \"ISO2\": \"UZ\",\n \"ISO3\": \"UZB\",\n \"Top Level Domain\": \"uz\",\n \"FIPS\": \"UZ\",\n \"ISO Numeric\": 860,\n \"GeoNameID\": 1512440,\n \"E164\": 998,\n \"Phone Code\": 998,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tashkent\",\n \"Time Zone in Capital\": \"Asia/Tashkent\",\n \"Currency\": \"Som\",\n \"Language Codes\": \"uz,ru,tg\",\n \"Languages\": \"Uzbek (official) 74.3%, Russian 14.2%, Tajik 4.4%, other 7.1%\",\n \"Area KM2\": 447400,\n \"Internet Hosts\": 56075,\n \"Internet Users\": 4689000,\n \"Phones (Mobile)\": 20274000,\n \"Phones (Landline)\": 1963000,\n \"GDP\": 55180000000\n },\n {\n \"Country Name\": \"Vanuatu\",\n \"ISO2\": \"VU\",\n \"ISO3\": \"VUT\",\n \"Top Level Domain\": \"vu\",\n \"FIPS\": \"NH\",\n \"ISO Numeric\": 548,\n \"GeoNameID\": 2134431,\n \"E164\": 678,\n \"Phone Code\": 678,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Port Vila\",\n \"Time Zone in Capital\": \"Pacific/Efate\",\n \"Currency\": \"Vatu\",\n \"Language Codes\": \"bi,en-VU,fr-VU\",\n \"Languages\": \"local languages (more than 100) 63.2%, Bislama (official; creole) 33.7%, English (official) 2%, French (official) 0.6%, other 0.5% (2009 est.)\",\n \"Area KM2\": 12200,\n \"Internet Hosts\": 5655,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 137000,\n \"Phones (Landline)\": 5800,\n \"GDP\": 828000000\n },\n {\n \"Country Name\": \"Vatican\",\n \"ISO2\": \"VA\",\n \"ISO3\": \"VAT\",\n \"Top Level Domain\": \"va\",\n \"FIPS\": \"VT\",\n \"ISO Numeric\": 336,\n \"GeoNameID\": 3164670,\n \"E164\": 39,\n \"Phone Code\": 379,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vatican City\",\n \"Time Zone in Capital\": \"Europe/Rome\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"la,it,fr\",\n \"Languages\": \"Latin, Italian, French\",\n \"Area KM2\": 0,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Venezuela\",\n \"ISO2\": \"VE\",\n \"ISO3\": \"VEN\",\n \"Top Level Domain\": \"ve\",\n \"FIPS\": \"VE\",\n \"ISO Numeric\": 862,\n \"GeoNameID\": 3625428,\n \"E164\": 58,\n \"Phone Code\": 58,\n \"Continent\": \"South America\",\n \"Capital\": \"Caracas\",\n \"Time Zone in Capital\": \"America/Caracas\",\n \"Currency\": \"Bolivar\",\n \"Language Codes\": \"es-VE\",\n \"Languages\": \"Spanish (official), numerous indigenous dialects\",\n \"Area KM2\": 912050,\n \"Internet Hosts\": 1016000,\n \"Internet Users\": 8918000,\n \"Phones (Mobile)\": 30520000,\n \"Phones (Landline)\": 7650000,\n \"GDP\": 367500000000\n },\n {\n \"Country Name\": \"Vietnam\",\n \"ISO2\": \"VN\",\n \"ISO3\": \"VNM\",\n \"Top Level Domain\": \"vn\",\n \"FIPS\": \"VM\",\n \"ISO Numeric\": 704,\n \"GeoNameID\": 1562822,\n \"E164\": 84,\n \"Phone Code\": 84,\n \"Continent\": \"Asia\",\n \"Capital\": \"Hanoi\",\n \"Time Zone in Capital\": \"Asia/Ho_Chi_Minh\",\n \"Currency\": \"Dong\",\n \"Language Codes\": \"vi,en,fr,zh,km\",\n \"Languages\": \"Vietnamese (official), English (increasingly favored as a second language), some French, Chinese, and Khmer, mountain area languages (Mon-Khmer and Malayo-Polynesian)\",\n \"Area KM2\": 329560,\n \"Internet Hosts\": 189553,\n \"Internet Users\": 23382000,\n \"Phones (Mobile)\": 134066000,\n \"Phones (Landline)\": 10191000,\n \"GDP\": 170000000000\n },\n {\n \"Country Name\": \"Wallis and Futuna\",\n \"ISO2\": \"WF\",\n \"ISO3\": \"WLF\",\n \"Top Level Domain\": \"wf\",\n \"FIPS\": \"WF\",\n \"ISO Numeric\": 876,\n \"GeoNameID\": 4034749,\n \"E164\": 681,\n \"Phone Code\": 681,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Mata Utu\",\n \"Time Zone in Capital\": \"Pacific/Wallis\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"wls,fud,fr-WF\",\n \"Languages\": \"Wallisian (indigenous Polynesian language) 58.9%, Futunian 30.1%, French (official) 10.8%, other 0.2% (2003 census)\",\n \"Area KM2\": 274,\n \"Internet Hosts\": 2760,\n \"Internet Users\": 1300,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Western Sahara\",\n \"ISO2\": \"EH\",\n \"ISO3\": \"ESH\",\n \"Top Level Domain\": \"eh\",\n \"FIPS\": \"WI\",\n \"ISO Numeric\": 732,\n \"GeoNameID\": 2461445,\n \"E164\": 212,\n \"Phone Code\": 212,\n \"Continent\": \"Africa\",\n \"Capital\": \"El-Aaiun\",\n \"Time Zone in Capital\": \"Africa/El_Aaiun\",\n \"Currency\": \"Dirham\",\n \"Language Codes\": \"ar,mey\",\n \"Languages\": \"Standard Arabic (national), Hassaniya Arabic, Moroccan Arabic\",\n \"Area KM2\": 266000,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Yemen\",\n \"ISO2\": \"YE\",\n \"ISO3\": \"YEM\",\n \"Top Level Domain\": \"ye\",\n \"FIPS\": \"YM\",\n \"ISO Numeric\": 887,\n \"GeoNameID\": 69543,\n \"E164\": 967,\n \"Phone Code\": 967,\n \"Continent\": \"Asia\",\n \"Capital\": \"Sanaa\",\n \"Time Zone in Capital\": \"Asia/Aden\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-YE\",\n \"Languages\": \"Arabic (official)\",\n \"Area KM2\": 527970,\n \"Internet Hosts\": 33206,\n \"Internet Users\": 2349000,\n \"Phones (Mobile)\": 13900000,\n \"Phones (Landline)\": 1100000,\n \"GDP\": 43890000000\n },\n {\n \"Country Name\": \"Zambia\",\n \"ISO2\": \"ZM\",\n \"ISO3\": \"ZMB\",\n \"Top Level Domain\": \"zm\",\n \"FIPS\": \"ZA\",\n \"ISO Numeric\": 894,\n \"GeoNameID\": 895949,\n \"E164\": 260,\n \"Phone Code\": 260,\n \"Continent\": \"Africa\",\n \"Capital\": \"Lusaka\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Kwacha\",\n \"Language Codes\": \"en-ZM,bem,loz,lun,lue,ny,toi\",\n \"Languages\": \"Bembe 33.4%, Nyanja 14.7%, Tonga 11.4%, Lozi 5.5%, Chewa 4.5%, Nsenga 2.9%, Tumbuka 2.5%, Lunda (North Western) 1.9%, Kaonde 1.8%, Lala 1.8%, Lamba 1.8%, English (official) 1.7%, Luvale 1.5%, Mambwe 1.3%, Namwanga 1.2%, Lenje 1.1%, Bisa 1%, other 9.2%, unspecified 0.4%\",\n \"Area KM2\": 752614,\n \"Internet Hosts\": 16571,\n \"Internet Users\": 816200,\n \"Phones (Mobile)\": 10525000,\n \"Phones (Landline)\": 82500,\n \"GDP\": 22240000000\n },\n {\n \"Country Name\": \"Zimbabwe\",\n \"ISO2\": \"ZW\",\n \"ISO3\": \"ZWE\",\n \"Top Level Domain\": \"zw\",\n \"FIPS\": \"ZI\",\n \"ISO Numeric\": 716,\n \"GeoNameID\": 878675,\n \"E164\": 263,\n \"Phone Code\": 263,\n \"Continent\": \"Africa\",\n \"Capital\": \"Harare\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-ZW,sn,nr,nd\",\n \"Languages\": \"English (official), Shona, Sindebele (the language of the Ndebele, sometimes called Ndebele), numerous but minor tribal dialects\",\n \"Area KM2\": 390580,\n \"Internet Hosts\": 30615,\n \"Internet Users\": 1423000,\n \"Phones (Mobile)\": 12614000,\n \"Phones (Landline)\": 301600,\n \"GDP\": 10480000000\n }\n]\n},{}],44:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar countries_json_1 = __importDefault(require(\"./countries.json\"));\nvar axios_1 = __importDefault(require(\"axios\"));\nvar phoneButtons = document.querySelectorAll(\".modal--phone-button\");\nvar phoneModals = document.querySelectorAll(\".modal--phone\");\nvar phoneLabels = document.querySelectorAll(\".values--phone\");\nvar readOnlyPhoneInput = document.querySelector(\".phone-input.readonly\");\nvar amanacardNumber = document.getElementById(\"cardNumber\");\nvar phoneNumberHiddenInput = document.querySelector('input[name=\"newPhoneNumber\"]');\nvar getCountryCode = function (countryName) {\n var country = countries_json_1.default.find(function (country) { return country[\"Country Name\"].toLowerCase() === countryName.toLowerCase(); });\n return country ? country[\"ISO2\"] : \"\";\n};\nvar updatePhoneNumber = function (payload) { return __awaiter(void 0, void 0, void 0, function () {\n var response, exception_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 5]);\n if (!(phoneNumberHiddenInput && payload.newNumber !== null && payload.newNumber !== undefined)) return [3, 1];\n phoneNumberHiddenInput.value = payload.newNumber;\n return [2, {\n success: true,\n message: \"Phone number updated successfully.\"\n }];\n case 1: return [4, axios_1.default.post(\"/api/recipients/updateRecipientPhoneNumber\", payload)];\n case 2:\n response = _a.sent();\n return [2, response.data];\n case 3: return [3, 5];\n case 4:\n exception_1 = _a.sent();\n console.error(exception_1);\n return [2, {\n success: false,\n message: \"An error occurred while updating the phone number.\"\n }];\n case 5: return [2];\n }\n });\n}); };\nif (phoneButtons.length > 0 && phoneModals.length > 0 && phoneButtons.length === phoneModals.length) {\n phoneButtons.forEach(function (button, index) {\n button.addEventListener(\"click\", function (e) {\n phoneModals[index].classList.add(\"active\");\n readOnlyPhoneInput.dispatchEvent(new Event('input'));\n });\n });\n phoneModals.forEach(function (modal) {\n var _a = modal.dataset, allowedCountry = _a.allowedCountry, currentNumber = _a.currentNumber, successMessage = _a.successMessage, errorMessage = _a.errorMessage, loadingMessage = _a.loadingMessage, uid = _a.uid;\n var modalButton = modal.querySelector(\".modal-button\");\n var oldButtonHtml = modalButton.innerHTML;\n var closeButton = modal.querySelector(\".close\");\n var isLoading = false;\n var newNumber = null;\n var resetButton = function () {\n modalButton.innerHTML = oldButtonHtml;\n modalButton.disabled = false;\n };\n modal.addEventListener(\"click\", function (event) {\n if (event.target === modal) {\n modal.classList.remove(\"active\");\n }\n });\n if (closeButton) {\n closeButton.addEventListener(\"click\", function () {\n modal.classList.remove(\"active\");\n });\n }\n var phoneInputs = modal.querySelectorAll(\".phone-input\");\n phoneInputs.forEach(function (input) {\n var iti = window.intlTelInput(input, {\n utilsScript: \"https://cdn.jsdelivr.net/npm/intl-tel-input@23.0.4/build/js/utils.js\",\n autoHideDialCode: false,\n nationalMode: false\n });\n iti.setCountry(getCountryCode(allowedCountry));\n if (input.classList.contains('readonly')) {\n input.disabled = true;\n input.value = currentNumber;\n input.dispatchEvent(new Event('input'));\n }\n input.addEventListener('input', function () {\n newNumber = iti.getNumber();\n modalButton.disabled = !iti.isValidNumber();\n });\n var updateUI = function (success) {\n if (success === void 0) { success = null; }\n input.disabled = isLoading;\n if (isLoading) {\n modalButton.disabled = true;\n modalButton.textContent = loadingMessage;\n input.classList.add(\"readonly\");\n }\n else if (success === true) {\n modalButton.textContent = successMessage;\n input.disabled = true;\n input.classList.add(\"readonly\");\n phoneLabels.forEach(function (label) {\n label.textContent = newNumber;\n });\n setTimeout(function () {\n modal.classList.remove(\"active\");\n phoneInputs.forEach(function (input) {\n input.value = newNumber;\n });\n resetButton();\n }, 2500);\n }\n else if (success === false) {\n modalButton.textContent = errorMessage;\n input.disabled = true;\n input.classList.add(\"readonly\");\n setTimeout(function () {\n modal.classList.remove(\"active\");\n resetButton();\n }, 2500);\n }\n };\n modalButton.addEventListener(\"click\", function () { return __awaiter(void 0, void 0, void 0, function () {\n var payload, response;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (isLoading)\n return [2];\n isLoading = true;\n updateUI();\n payload = {\n uid: parseInt(uid),\n newNumber: newNumber,\n amanacardNumber: (_a = amanacardNumber === null || amanacardNumber === void 0 ? void 0 : amanacardNumber.textContent.trim()) !== null && _a !== void 0 ? _a : \"\"\n };\n return [4, updatePhoneNumber(payload)];\n case 1:\n response = _b.sent();\n isLoading = false;\n updateUI(response.success);\n return [2];\n }\n });\n }); });\n });\n });\n}\n\n},{\"./countries.json\":43,\"axios\":52}],45:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],46:[function(require,module,exports){\nvar video = document.querySelector(\".quote__video\");\nvar alreadyActive = false;\nif (video) {\n var observer = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting && !alreadyActive) {\n video.play();\n alreadyActive = true;\n }\n });\n }, { threshold: 0.5 });\n observer.observe(video);\n}\n\n},{}],47:[function(require,module,exports){\nvar registerAccountType = document.querySelector(\".register__wrapper\");\nvar registerAccountTypeLink = document.querySelector(\".register__link\");\nif (registerAccountType) {\n var registerAccountTypeCards_1 = document.querySelectorAll(\".register__card\");\n var resetRegisterCards_1 = function () {\n registerAccountTypeCards_1.forEach(function (card) {\n card.classList.remove(\"register__card--active\");\n });\n };\n var setActiveCard_1 = function (item) {\n resetRegisterCards_1();\n item.classList.add(\"register__card--active\");\n registerAccountTypeLink.href = item.getAttribute(\"data-link\");\n };\n if (registerAccountTypeCards_1.length > 0) {\n var firstCardLink = registerAccountTypeCards_1[0].getAttribute(\"data-link\");\n registerAccountTypeCards_1[0].classList.add(\"register__card--active\");\n registerAccountTypeLink.href = firstCardLink;\n registerAccountTypeCards_1.forEach(function (card) {\n card.addEventListener(\"click\", function () {\n setActiveCard_1(card);\n });\n card.addEventListener(\"keydown\", function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === \"Enter\") {\n setActiveCard_1(card);\n }\n });\n });\n }\n}\n\n},{}],48:[function(require,module,exports){\nvar sendFundsOverlay = document.querySelector(\".send-funds__overlay\");\nif (sendFundsOverlay) {\n var sendFundsCards = document.querySelectorAll(\".send-funds__card\");\n var sendFundsNested_1 = document.querySelectorAll(\".send-funds__nested\");\n var sendFundsMain_1 = document.querySelector(\".send-funds__main\");\n var sendFundsBack = document.querySelector(\".send-funds__back\");\n var sendFundsCloseButton = document.querySelector(\".send-funds__close\");\n var sendFundsCloseButtonMobile = document.querySelector(\".send-funds__close-mobile\");\n var sendFundsShareButton_1 = document.querySelector(\".send-funds__share\");\n var sendFundsBackButton_1 = document.querySelector(\".send-funds__back\");\n var sendFundsButtons_1 = document.querySelector(\".send-funds__buttons\");\n var mobileMenu_1 = document.querySelector(\".menu-mobile__overlay\");\n var menuMobileIcon_1 = document.querySelector(\".menu-mobile__icon\");\n var htmlEl_1 = document.documentElement;\n var closeSendFunds_1 = function () {\n sendFundsOverlay.classList.remove(\"send-funds__overlay--active\");\n htmlEl_1.style.overflow = \"auto\";\n setTimeout(function () {\n sendFundsNested_1.forEach(function (item) {\n item.classList.remove(\"send-funds__nested--active\");\n });\n sendFundsMain_1.classList.remove(\"send-funds__main--hidden\");\n sendFundsButtons_1.classList.remove(\"send-funds__buttons--border\");\n sendFundsBackButton_1.classList.remove(\"send-funds__back--active\");\n sendFundsShareButton_1.classList.remove(\"send-funds__share--active\");\n }, 500);\n };\n var openSendFunds_1 = function (index) {\n if (mobileMenu_1 === null || mobileMenu_1 === void 0 ? void 0 : mobileMenu_1.classList.contains(\"menu-mobile__overlay--active\")) {\n mobileMenu_1.classList.remove(\"menu-mobile__overlay--active\");\n menuMobileIcon_1.classList.remove(\"menu-mobile__icon--open\");\n }\n sendFundsMain_1.classList.add(\"send-funds__main--hidden\");\n sendFundsNested_1[index].classList.add(\"send-funds__nested--active\");\n sendFundsButtons_1.classList.add(\"send-funds__buttons--border\");\n sendFundsBackButton_1.classList.add(\"send-funds__back--active\");\n sendFundsShareButton_1.classList.add(\"send-funds__share--active\");\n };\n var goBackFunds_1 = function () {\n sendFundsNested_1.forEach(function (item) {\n item.classList.remove(\"send-funds__nested--active\");\n });\n sendFundsMain_1.classList.remove(\"send-funds__main--hidden\");\n sendFundsButtons_1.classList.remove(\"send-funds__buttons--border\");\n sendFundsBackButton_1.classList.remove(\"send-funds__back--active\");\n sendFundsShareButton_1.classList.remove(\"send-funds__share--active\");\n };\n if (sendFundsCards.length > 0) {\n sendFundsCards.forEach(function (card, i) {\n card.addEventListener(\"click\", function () { return openSendFunds_1(i); });\n });\n sendFundsCards.forEach(function (card, i) {\n card.addEventListener(\"keydown\", function (e) {\n var keyboardEvent = e;\n if (keyboardEvent.key === \"Enter\") {\n openSendFunds_1(i);\n }\n });\n });\n }\n if (sendFundsBack) {\n sendFundsBack.addEventListener(\"click\", function () { return goBackFunds_1(); });\n }\n if (sendFundsCloseButton) {\n sendFundsCloseButton.addEventListener(\"click\", closeSendFunds_1);\n }\n if (sendFundsCloseButtonMobile) {\n sendFundsCloseButtonMobile.addEventListener(\"click\", closeSendFunds_1);\n }\n if (sendFundsOverlay) {\n sendFundsOverlay.addEventListener(\"keydown\", function (e) {\n if (e.key === \"Escape\") {\n closeSendFunds_1();\n }\n });\n sendFundsOverlay.addEventListener(\"click\", function (e) {\n var targetElement = e.target;\n if (targetElement.classList.contains(\"send-funds__overlay--active\")) {\n closeSendFunds_1();\n }\n });\n }\n}\n\n},{}],49:[function(require,module,exports){\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\nvar teamGridCarousels = document.querySelectorAll(\".team-grid__carousel-inner\");\nvar teamGridComponents;\nif (window.innerWidth > 480) {\n teamGridComponents = document.querySelectorAll(\".team-grid__grid\");\n}\nelse {\n teamGridComponents = document.querySelectorAll(\".team-grid__carousel\");\n}\nif (teamGridCarousels.length > 0) {\n var setRangeMax_1 = function (arr, input) {\n var slidesLength = arr.length;\n var rangeMax = (slidesLength - 2).toString();\n input.max = rangeMax;\n setRangeThumbWidth_1(rangeMax, input);\n };\n var setRangeThumbWidth_1 = function (max, input) {\n var width = 200 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"100px\");\n }\n };\n teamGridCarousels.forEach(function (item) {\n var glide = new glide_1.default(item, {\n type: 'slider',\n perView: 1.7,\n gap: 10,\n rewind: true,\n bound: true,\n breakpoints: {\n 480: {\n perView: 2.065,\n },\n }\n });\n glide.mount();\n var carouselRange = item.querySelector(\".team-grid__carousel-range\");\n var slides = item.querySelectorAll(\".team-grid__card\");\n carouselRange.addEventListener(\"input\", function (e) {\n setTimeout(function () {\n glide.go(\"=\" + carouselRange.value);\n }, 500);\n });\n glide.on('move.after', function () {\n var currentIndex = glide.index;\n carouselRange.value = currentIndex.toString();\n });\n setRangeMax_1(slides, carouselRange);\n });\n}\nif (teamGridComponents.length > 0) {\n teamGridComponents.forEach(function (item) {\n var teamGridCards = item.querySelectorAll(\".team-grid__card\");\n var teamGridModals = item.querySelectorAll(\".team-grid__modal\");\n teamGridCards.forEach(function (card, i) {\n card.addEventListener(\"click\", function () {\n modalIndex = i;\n var modal = teamGridModals[modalIndex];\n modal.showModal();\n setActiveModal(modal);\n attachModalEventListeners();\n });\n var activeModal = null;\n var modalIndex = 0;\n var handlePrev = function (modals, index) {\n closeAllModals();\n if (index === 0) {\n modalIndex = modals.length - 1;\n }\n else {\n modalIndex--;\n }\n var newModal = modals[modalIndex];\n setActiveModal(newModal);\n newModal === null || newModal === void 0 ? void 0 : newModal.showModal();\n };\n var handleNext = function (modals, index) {\n closeAllModals();\n if (index === modals.length - 1) {\n modalIndex = 0;\n }\n else {\n modalIndex++;\n }\n var newModal = modals[modalIndex];\n setActiveModal(newModal);\n newModal === null || newModal === void 0 ? void 0 : newModal.showModal();\n };\n var attachModalEventListeners = function () {\n var modalPrevButton = activeModal === null || activeModal === void 0 ? void 0 : activeModal.querySelector(\".team-grid__modal-prev\");\n var modalNextButton = activeModal === null || activeModal === void 0 ? void 0 : activeModal.querySelector(\".team-grid__modal-next\");\n var modalCloseButton = activeModal === null || activeModal === void 0 ? void 0 : activeModal.querySelector(\".team-grid__modal-close\");\n modalCloseButton.blur();\n activeModal.focus();\n modalCloseButton.addEventListener(\"click\", function () { return activeModal === null || activeModal === void 0 ? void 0 : activeModal.close(); });\n activeModal.addEventListener(\"click\", function (e) {\n var target = e.target;\n if (target.classList.contains(\"team-grid__modal\")) {\n activeModal.close();\n }\n });\n modalPrevButton === null || modalPrevButton === void 0 ? void 0 : modalPrevButton.removeEventListener(\"click\", handlePrevEvent);\n modalNextButton === null || modalNextButton === void 0 ? void 0 : modalNextButton.removeEventListener(\"click\", handleNextEvent);\n modalPrevButton === null || modalPrevButton === void 0 ? void 0 : modalPrevButton.addEventListener(\"click\", handlePrevEvent);\n modalNextButton === null || modalNextButton === void 0 ? void 0 : modalNextButton.addEventListener(\"click\", handleNextEvent);\n };\n var handlePrevEvent = function () {\n handlePrev(teamGridModals, modalIndex);\n var prevButton = activeModal === null || activeModal === void 0 ? void 0 : activeModal.querySelector(\".team-grid__modal-prev\");\n prevButton.focus();\n };\n var handleNextEvent = function () {\n handleNext(teamGridModals, modalIndex);\n var nextButton = activeModal === null || activeModal === void 0 ? void 0 : activeModal.querySelector(\".team-grid__modal-next\");\n nextButton.focus();\n };\n var onActiveModalChange = function () {\n attachModalEventListeners();\n };\n var setActiveModal = function (modal) {\n activeModal = modal;\n onActiveModalChange();\n };\n var closeAllModals = function () {\n teamGridModals.forEach(function (modal) {\n modal.close();\n });\n };\n });\n });\n}\n\n},{\"@glidejs/glide\":51}],50:[function(require,module,exports){\nvar transferSummaryComponent = document.querySelector(\".transfer-summary__wrapper\");\nif (transferSummaryComponent) {\n var transferSummaryLeft_1 = transferSummaryComponent.querySelector(\".transfer-summary__left\");\n var transferSummaryNextButton = transferSummaryComponent.querySelector(\".transfer-summary__button\");\n var showTransferSummary_1 = function () {\n var _a;\n transferSummaryLeft_1.classList.remove(\"transfer-summary__left--active\");\n var currentPayoutMethod = document.querySelector(\"input[name='payment-method']:checked\").value;\n (_a = document.querySelector(\".transfer-summary__right[data-type='\" + currentPayoutMethod + \"']\")) === null || _a === void 0 ? void 0 : _a.classList.add(\"transfer-summary__right--active\");\n document.querySelector;\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n };\n transferSummaryNextButton.addEventListener(\"click\", function () {\n showTransferSummary_1();\n });\n}\n\n},{}],51:[function(require,module,exports){\n/*!\n * Glide.js v3.6.0\n * (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Glide = factory());\n})(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n };\n\n /**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\n function warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n }\n\n /**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\n function toInt(value) {\n return parseInt(value);\n }\n /**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\n function toFloat(value) {\n return parseFloat(value);\n }\n /**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isString(value) {\n return typeof value === 'string';\n }\n /**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n function isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n }\n /**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n /**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n /**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isArray(value) {\n return value.constructor === Array;\n }\n\n /**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\n function mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n }\n\n /**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\n function define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n }\n /**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\n function sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n }\n /**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\n function mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n }\n\n var EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n }();\n\n var Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n }();\n\n function Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n }\n\n /**\n * Returns a current time.\n *\n * @return {Number}\n */\n function now() {\n return new Date().getTime();\n }\n\n /**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n var MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n };\n function Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n }\n\n /**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n function siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n }\n /**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\n function exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n }\n /**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\n function toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n }\n\n var TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n function Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n }\n\n function Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n }\n\n function Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n }\n\n function Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n }\n\n function Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n }\n\n function Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n }\n\n var EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n }();\n\n function Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n }\n\n var VALID_DIRECTIONS = ['ltr', 'rtl'];\n var FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n };\n function Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n }\n\n /**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n }\n\n /**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n }\n\n /**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n }\n\n /**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n }\n\n function Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n }\n\n function Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n }\n\n /**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n var supportsPassive$1 = supportsPassive;\n\n var START_EVENTS = ['touchstart', 'mousedown'];\n var MOVE_EVENTS = ['touchmove', 'mousemove'];\n var END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\n var MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n function Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n }\n\n function Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n }\n\n function Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n }\n\n var NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\n var CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n var PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\n var NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\n function Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n }\n\n function Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n }\n\n function Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n }\n\n /**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\n function sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n }\n\n function Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n }\n\n var COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n };\n\n var Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n }(Glide$1);\n\n return Glide;\n\n}));\n\n},{}],52:[function(require,module,exports){\nmodule.exports = require('./lib/axios');\n},{\"./lib/axios\":54}],53:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\n},{\"../core/buildFullPath\":60,\"../core/createError\":61,\"./../core/settle\":65,\"./../helpers/buildURL\":69,\"./../helpers/cookies\":71,\"./../helpers/isURLSameOrigin\":74,\"./../helpers/parseHeaders\":76,\"./../utils\":79}],54:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n},{\"./cancel/Cancel\":55,\"./cancel/CancelToken\":56,\"./cancel/isCancel\":57,\"./core/Axios\":58,\"./core/mergeConfig\":64,\"./defaults\":67,\"./helpers/bind\":68,\"./helpers/isAxiosError\":73,\"./helpers/spread\":77,\"./utils\":79}],55:[function(require,module,exports){\n'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n},{}],56:[function(require,module,exports){\n'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n\n},{\"./Cancel\":55}],57:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n},{}],58:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n\n},{\"../helpers/buildURL\":69,\"../helpers/validator\":78,\"./../utils\":79,\"./InterceptorManager\":59,\"./dispatchRequest\":62,\"./mergeConfig\":64}],59:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n},{\"./../utils\":79}],60:[function(require,module,exports){\n'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n\n},{\"../helpers/combineURLs\":70,\"../helpers/isAbsoluteURL\":72}],61:[function(require,module,exports){\n'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n},{\"./enhanceError\":63}],62:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n},{\"../cancel/isCancel\":57,\"../defaults\":67,\"./../utils\":79,\"./transformData\":66}],63:[function(require,module,exports){\n'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n\n},{}],64:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n\n},{\"../utils\":79}],65:[function(require,module,exports){\n'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\n},{\"./createError\":61}],66:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n\n},{\"./../defaults\":67,\"./../utils\":79}],67:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n}).call(this)}).call(this,require('_process'))\n\n},{\"./adapters/http\":53,\"./adapters/xhr\":53,\"./core/enhanceError\":63,\"./helpers/normalizeHeaderName\":75,\"./utils\":79,\"_process\":81}],68:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n},{}],69:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n},{\"./../utils\":79}],70:[function(require,module,exports){\n'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n},{}],71:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n},{\"./../utils\":79}],72:[function(require,module,exports){\n'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n},{}],73:[function(require,module,exports){\n'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n\n},{}],74:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n},{\"./../utils\":79}],75:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n},{\"../utils\":79}],76:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\n},{\"./../utils\":79}],77:[function(require,module,exports){\n'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n},{}],78:[function(require,module,exports){\n'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n\n},{\"./../../package.json\":80}],79:[function(require,module,exports){\n'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n\n},{\"./helpers/bind\":68}],80:[function(require,module,exports){\nmodule.exports={\n \"_args\": [\n [\n \"axios@0.21.4\",\n \"/home/vsts/work/1/s/src/Amanacard.Frontend\"\n ]\n ],\n \"_from\": \"axios@0.21.4\",\n \"_id\": \"axios@0.21.4\",\n \"_inBundle\": false,\n \"_integrity\": \"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==\",\n \"_location\": \"/axios\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"version\",\n \"registry\": true,\n \"raw\": \"axios@0.21.4\",\n \"name\": \"axios\",\n \"escapedName\": \"axios\",\n \"rawSpec\": \"0.21.4\",\n \"saveSpec\": null,\n \"fetchSpec\": \"0.21.4\"\n },\n \"_requiredBy\": [\n \"/\",\n \"/localtunnel\",\n \"/paged-request\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz\",\n \"_spec\": \"0.21.4\",\n \"_where\": \"/home/vsts/work/1/s/src/Amanacard.Frontend\",\n \"author\": {\n \"name\": \"Matt Zabriskie\"\n },\n \"browser\": {\n \"./lib/adapters/http.js\": \"./lib/adapters/xhr.js\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/axios/axios/issues\"\n },\n \"bundlesize\": [\n {\n \"path\": \"./dist/axios.min.js\",\n \"threshold\": \"5kB\"\n }\n ],\n \"dependencies\": {\n \"follow-redirects\": \"^1.14.0\"\n },\n \"description\": \"Promise based HTTP client for the browser and node.js\",\n \"devDependencies\": {\n \"coveralls\": \"^3.0.0\",\n \"es6-promise\": \"^4.2.4\",\n \"grunt\": \"^1.3.0\",\n \"grunt-banner\": \"^0.6.0\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-contrib-clean\": \"^1.1.0\",\n \"grunt-contrib-watch\": \"^1.0.0\",\n \"grunt-eslint\": \"^23.0.0\",\n \"grunt-karma\": \"^4.0.0\",\n \"grunt-mocha-test\": \"^0.13.3\",\n \"grunt-ts\": \"^6.0.0-beta.19\",\n \"grunt-webpack\": \"^4.0.2\",\n \"istanbul-instrumenter-loader\": \"^1.0.0\",\n \"jasmine-core\": \"^2.4.1\",\n \"karma\": \"^6.3.2\",\n \"karma-chrome-launcher\": \"^3.1.0\",\n \"karma-firefox-launcher\": \"^2.1.0\",\n \"karma-jasmine\": \"^1.1.1\",\n \"karma-jasmine-ajax\": \"^0.1.13\",\n \"karma-safari-launcher\": \"^1.0.0\",\n \"karma-sauce-launcher\": \"^4.3.6\",\n \"karma-sinon\": \"^1.0.5\",\n \"karma-sourcemap-loader\": \"^0.3.8\",\n \"karma-webpack\": \"^4.0.2\",\n \"load-grunt-tasks\": \"^3.5.2\",\n \"minimist\": \"^1.2.0\",\n \"mocha\": \"^8.2.1\",\n \"sinon\": \"^4.5.0\",\n \"terser-webpack-plugin\": \"^4.2.3\",\n \"typescript\": \"^4.0.5\",\n \"url-search-params\": \"^0.10.0\",\n \"webpack\": \"^4.44.2\",\n \"webpack-dev-server\": \"^3.11.0\"\n },\n \"homepage\": \"https://axios-http.com\",\n \"jsdelivr\": \"dist/axios.min.js\",\n \"keywords\": [\n \"xhr\",\n \"http\",\n \"ajax\",\n \"promise\",\n \"node\"\n ],\n \"license\": \"MIT\",\n \"main\": \"index.js\",\n \"name\": \"axios\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/axios/axios.git\"\n },\n \"scripts\": {\n \"build\": \"NODE_ENV=production grunt build\",\n \"coveralls\": \"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\n \"examples\": \"node ./examples/server.js\",\n \"fix\": \"eslint --fix lib/**/*.js\",\n \"postversion\": \"git push && git push --tags\",\n \"preversion\": \"npm test\",\n \"start\": \"node ./sandbox/server.js\",\n \"test\": \"grunt test\",\n \"version\": \"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\"\n },\n \"typings\": \"./index.d.ts\",\n \"unpkg\": \"dist/axios.min.js\",\n \"version\": \"0.21.4\"\n}\n\n},{}],81:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}]},{},[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,45,46,47,48,49,50])(50)\n});\n\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","const individualResetPassword = document.querySelector(\".individual-reset-pass__form\") as HTMLFormElement;\n\nif (individualResetPassword) {\n const passwordInput = document.querySelector(\".individual-reset-pass__password\") as HTMLInputElement;\n const passwordAgainInput = document.querySelector(\".individual-reset-pass__password-again\") as HTMLInputElement;\n const passwordAgainValidation = document.querySelector(\".individual-reset-pass__validation-password-again\") as HTMLSpanElement;\n const criteriaItems = individualResetPassword.querySelectorAll(\".individual-reset-pass__item\") as NodeListOf;\n const showPasswordButtons = individualResetPassword.querySelectorAll(\".zmdi-eye\") as NodeListOf;\n const hidePasswordButtons = individualResetPassword.querySelectorAll(\".zmdi-eye-off\") as NodeListOf;\n\n // validations are: \n // 0: six characters or more\n // 1: one lowercase letter\n // 2: one uppercase letter \n // 3: one number\n // 4: one symbol (!@#$&*)\n // full regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$&*])[A-Za-z\\d!@#$&*]{6,}$/\n let validations = [false, false, false, false, false];\n\n let formValidation = {\n password: false\n }\n\n let isSubmitClickedFirstTime = false\n\n const showValidationMessage = () => {\n if (isSubmitClickedFirstTime) {\n passwordAgainValidation.classList.add(\"individual-reset-pass__validation--active\")\n }\n }\n\n const removeValidationMessage = () => {\n passwordAgainValidation.classList.remove(\"individual-reset-pass__validation--active\")\n }\n\n const validatePassword = (password: string): string | boolean[] => {\n validations = [false, false, false, false, false];\n\n if (password.length > 5) {\n validations[0] = true;\n }\n\n if (/(?=.*[a-z])/.test(password)) {\n validations[1] = true;\n }\n\n if (/(?=.*[A-Z])/.test(password)) {\n validations[2] = true;\n }\n\n if (/(?=.*\\d)/.test(password)) {\n validations[3] = true;\n }\n\n if (/(?=.*[!@#$&*])/.test(password)) {\n validations[4] = true;\n }\n\n let isPasswordValid = false;\n\n if (passwordInput.value === passwordAgainInput.value && validations.every(val => val === true)) {\n isPasswordValid = true\n removeValidationMessage()\n } else {\n showValidationMessage()\n }\n\n if (!isPasswordValid) {\n formValidation.password = false\n } else {\n formValidation.password = true\n }\n\n return isPasswordValid ? \"Password is valid.\" : validations;\n }\n\n const resetCriteriaItems = () => {\n criteriaItems.forEach(item => {\n item.classList.remove(\"individual-reset-pass__item--active\")\n })\n }\n\n showPasswordButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n button.previousElementSibling.setAttribute(\"type\", \"text\");\n button.classList.remove(\"zmdi-eye--active\")\n button.nextElementSibling.classList.add(\"zmdi-eye-off--active\")\n })\n })\n\n hidePasswordButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n button.previousElementSibling.previousElementSibling.setAttribute(\"type\", \"password\");\n button.classList.remove(\"zmdi-eye-off--active\")\n button.previousElementSibling.classList.add(\"zmdi-eye--active\")\n })\n })\n\n passwordInput.addEventListener(\"input\", () => {\n validatePassword(passwordInput.value)\n\n for (let i = 0; i < criteriaItems.length; i++) {\n if (validations[i] === true) {\n criteriaItems[i].classList.add(\"individual-reset-pass__item--active\")\n } else {\n criteriaItems[i].classList.remove(\"individual-reset-pass__item--active\")\n }\n }\n })\n\n passwordAgainInput.addEventListener(\"input\", () => {\n validatePassword(passwordAgainInput.value)\n })\n\n individualResetPassword.addEventListener(\"submit\", async e => {\n\n isSubmitClickedFirstTime = true\n\n if (passwordInput.value !== passwordAgainInput.value) {\n showValidationMessage()\n }\n\n const formValues = {\n password: passwordInput.value,\n };\n\n if (formValidation.password === true) {\n console.log(formValues);\n\n validations = [false, false, false, false, false]\n formValidation = {\n password: false\n }\n\n resetCriteriaItems()\n\n } else {\n console.log(\"Form is NOT valid\");\n e.preventDefault();\n }\n });\n}","const signUpIndividual = document.querySelector('.sign-in-details__form') as HTMLFormElement;\n\nif (signUpIndividual) {\n const emailInput = document.querySelector('.sign-in-details__email') as HTMLInputElement;\n const passwordInput = document.querySelector('.sign-in-details__password') as HTMLInputElement;\n const passwordAgainInput = document.querySelector('.sign-in-details__password-again') as HTMLInputElement;\n const passwordAgainValidation = document.querySelector(\n '.sign-in-details__validation-password-again',\n ) as HTMLSpanElement;\n const signUpIndividualEmailValidation = document.querySelector('.sign-in-details__validation-email') as HTMLElement;\n const criteriaItems = signUpIndividual.querySelectorAll('.sign-in-details__item') as NodeListOf;\n const showPasswordButtons = signUpIndividual.querySelectorAll('.zmdi-eye') as NodeListOf;\n const hidePasswordButtons = signUpIndividual.querySelectorAll('.zmdi-eye-off') as NodeListOf;\n\n const regexPattern = signUpIndividual.getAttribute(\"pattern\") as string || null;\n\n // validations are: \n // 0: six characters or more\n // 1: one lowercase letter\n // 2: one uppercase letter \n // 3: one number\n // 4: one symbol (!@#$&*)\n // full regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$&*])[A-Za-z\\d!@#$&*]{6,}$/\n\n let conditions = []\n let validations = [false]\n\n let formValidation = {\n email: false,\n password: false,\n }\n\n var recaptcha = false;\n window.recaptcha = false;\n\n let isSubmitClickedFirstTime = false;\n\n // extract individual conditions from the regex pattern\n const extractConditions = (regexPattern: string) => {\n validations = [false];\n conditions = []\n\n conditions = regexPattern.match(new RegExp(\"\\\\(\\\\?=(.*?)\\\\)|\\\\(\\\\?!(.*?)\\\\)|\\\\(\\\\?<=(.*?)\\\\)|\\\\(\\\\?<(.*?)\\\\)\", \"g\"));\n\n conditions = conditions.filter(condition => condition !== null);\n\n // map each condition to a validation array\n conditions.map(condition => validations.push(false));\n };\n\n const showValidationMessage = () => {\n if (isSubmitClickedFirstTime) {\n passwordAgainValidation.classList.add(\"sign-in-details__validation--active\")\n }\n }\n\n const removeValidationMessage = () => {\n passwordAgainValidation.classList.remove(\"sign-in-details__validation--active\")\n }\n\n const validateEmail = (email: string) => {\n if (String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z0-9\\-]*[a-zA-Z][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}))$/\n )) {\n signUpIndividualEmailValidation.classList.remove(\"sign-in-details__validation--active\")\n formValidation.email = true\n } else {\n signUpIndividualEmailValidation.classList.add(\"sign-in-details__validation--active\")\n formValidation.email = false\n }\n };\n\n function validateRecaptcha () {\n window.recaptcha = true;\n }\n\n window.validateRecaptcha = validateRecaptcha;\n\n const validatePassword = (password: string): string | boolean[] => {\n extractConditions(regexPattern)\n\n if (password.length > 5) {\n validations[0] = true;\n }\n\n conditions.forEach((cond, index) => {\n if (new RegExp(cond).test(password)) {\n validations[index + 1] = true\n }\n })\n\n let isPasswordValid = false;\n\n if (passwordInput.value && validations.every(val => val === true)) {\n isPasswordValid = true\n removeValidationMessage()\n resetCriteriaItems()\n } else {\n showValidationMessage()\n }\n\n if (isPasswordValid) {\n formValidation.password = true\n } else {\n formValidation.password = false\n }\n\n return isPasswordValid ? \"Password is valid.\" : validations;\n }\n\n const resetCriteriaItems = () => {\n criteriaItems.forEach(item => {\n item.classList.remove(\"sign-in-details__item--active\")\n })\n }\n\n showPasswordButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n button.previousElementSibling.setAttribute(\"type\", \"text\");\n button.classList.remove(\"zmdi-eye--active\")\n button.nextElementSibling.classList.add(\"zmdi-eye-off--active\")\n })\n })\n\n hidePasswordButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n button.previousElementSibling.previousElementSibling.setAttribute(\"type\", \"password\");\n button.classList.remove(\"zmdi-eye-off--active\")\n button.previousElementSibling.classList.add(\"zmdi-eye--active\")\n })\n })\n\n emailInput.addEventListener(\"input\", () => {\n if (isSubmitClickedFirstTime) {\n validateEmail(emailInput.value)\n }\n })\n\n passwordInput.addEventListener(\"input\", () => {\n validatePassword(passwordInput.value)\n\n for (let i = 0; i < criteriaItems.length; i++) {\n if (validations[i] === true) {\n criteriaItems[i].classList.add(\"sign-in-details__item--active\")\n } else {\n criteriaItems[i].classList.remove(\"sign-in-details__item--active\")\n }\n }\n })\n\n passwordAgainInput.addEventListener(\"input\", () => {\n removeValidationMessage()\n })\n\n signUpIndividual.addEventListener(\"submit\", async e => {\n isSubmitClickedFirstTime = true\n\n if (passwordInput.value !== passwordAgainInput.value) {\n showValidationMessage()\n }\n\n validateEmail(emailInput.value)\n\n const formValues = {\n email: emailInput.value,\n password: passwordInput.value,\n };\n\n if (formValidation.email === true \n && formValidation.password === true \n && passwordInput.value === passwordAgainInput.value\n && window.recaptcha === true) {\n formValidation = {\n email: false,\n password: false\n }\n\n resetCriteriaItems()\n } else {\n e.preventDefault();\n }\n });\n\n if (regexPattern) {\n extractConditions(regexPattern)\n }\n}\n","const keyFactCardTitles = document.querySelectorAll('.key-facts__card-title') as NodeListOf;\nconst numberRegex = /\\d+\\.?\\d*/;\n\nkeyFactCardTitles.forEach((title) => {\n const match = title.innerText.match(numberRegex);\n\n if (!match) return;\n\n let targetCount = parseFloat(match[0]);\n let currentCount = 0;\n let increment = targetCount < 10 ? 0.1 : 10;\n let isCountUpComplete = false;\n let isCountUpRunning = false;\n\n const observer = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && !isCountUpComplete && !isCountUpRunning) {\n isCountUpRunning = true;\n const interval = setInterval(() => {\n if (targetCount === 0) {\n currentCount = targetCount;\n }else {\n currentCount = +(currentCount + increment).toFixed(1);\n }\n title.innerText = title.innerText.replace(numberRegex, currentCount.toString());\n if (currentCount >= targetCount) {\n clearInterval(interval);\n isCountUpComplete = true;\n isCountUpRunning = false;\n }\n }, 100);\n }\n });\n\n observer.observe(title);\n});","const loginForm = document.querySelector(\".login__form\") as HTMLFormElement;\n\nif (loginForm) {\n const resetLoginValidation = () => {\n loginForm.querySelectorAll(\".login__validation--active\").forEach((node) => {\n node.classList.remove(\"login__validation--active\");\n })\n }\n\n const usernameInput = document.querySelector(\".login__username\") as HTMLInputElement;\n const passwordInput = document.querySelector(\".login__password\") as HTMLInputElement;\n const loginUsernameValidation = document.querySelector(\".login__validation-username\") as HTMLElement;\n const loginPasswordValidation = document.querySelector(\".login__validation-password\") as HTMLElement;\n\n usernameInput.addEventListener(\"input\", () => {\n loginUsernameValidation.classList.remove(\"login__validation--active\")\n })\n\n passwordInput.addEventListener(\"input\", () => {\n loginPasswordValidation.classList.remove(\"login__validation--active\")\n })\n\n loginForm.addEventListener(\"submit\", async e => {\n resetLoginValidation();\n\n if(!usernameInput.value) { \n loginUsernameValidation.classList.add(\"login__validation--active\")\n }\n\n if(!passwordInput.value) { \n loginPasswordValidation.classList.add(\"login__validation--active\")\n }\n\n if (!(usernameInput.value && passwordInput.value)) {\n e.preventDefault();\n }\n });\n\n // TODO:\n // 1. Create a function that allows to enter a validation message for each validation element\n // based on the type of errors after submit\n // 2. Setup a POST request once API is ready\n}\n\n(() => {\n let rotatingElementLogin: HTMLElement | null = document.querySelector('.login__image');\n let lastScrollTop = 0;\n\n if (rotatingElementLogin) {\n rotatingElementLogin.addEventListener('mouseover', function () {\n window.addEventListener('scroll', handleLoginScroll);\n })\n }\n\n function handleLoginScroll() {\n let scrollPos = window.scrollY;\n let rotation = (scrollPos - lastScrollTop) / 2; \n let translateZ = Math.max(0, scrollPos / 30); \n\n rotation = Math.min(Math.max(rotation, -20), 10);\n\n rotatingElementLogin!.style.transform = `rotateY(${rotation}deg) rotateX(${rotation}deg) translateZ(${translateZ}px)`;\n lastScrollTop = scrollPos;\n }\n})();","import Glide from '@glidejs/glide'\n\nconst mediaCarousels: NodeListOf = document.querySelectorAll(\".media-carousel__carousel-inner\");\n\nif(mediaCarousels.length > 0){\n\n const mediaCarouselsArray = Array.from(mediaCarousels) || []\n\n mediaCarouselsArray.forEach((item: HTMLElement) => {\n const glide = new Glide(item, {\n type: 'carousel',\n perView: 1.779,\n gap: 20,\n rewind: true,\n bound: true,\n focusAt: \"center\",\n breakpoints: {\n 480: {\n perView: 1.357,\n },\n }\n })\n \n glide.mount()\n })\n}","const mobileMenuIcon = document.querySelector(\".menu-mobile__icon\") as HTMLElement\nconst mobileMenuIconContainer = document.querySelector(\".menu-mobile__icon-container\") as HTMLElement\nconst mobileMenuButton = document.querySelector(\".menu-mobile__icon-container\") as HTMLElement\nconst mobileMenuBackButton = document.querySelector(\".menu-mobile__back\") as HTMLElement\nconst getInTouchButton = document.querySelector(\".menu-mobile__button\") as HTMLElement\nconst mobileMenuOverlay = document.querySelector(\".menu-mobile__overlay\") as HTMLElement\nconst mobileMenuNested = document.querySelector(\".menu-mobile__nested\") as HTMLElement\nconst html = document.querySelector(\"html\") as HTMLElement\n\nif(mobileMenuIconContainer){\n mobileMenuIconContainer.addEventListener(\"click\", e => {\n\n if(mobileMenuIcon.classList.contains(\"menu-mobile__icon--open\")){\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\")\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\")\n setTimeout(() => {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\")\n },500)\n html.style.overflow=\"auto\"\n } else {\n mobileMenuIcon.classList.add(\"menu-mobile__icon--open\")\n mobileMenuOverlay.classList.add(\"menu-mobile__overlay--active\")\n html.style.overflow=\"hidden\"\n }\n })\n}\n\nif(mobileMenuButton){\n mobileMenuButton.addEventListener(\"keydown\", e => {\n if(e.key === \"Enter\"){\n if(mobileMenuIcon.classList.contains(\"menu-mobile__icon--open\")){\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\")\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\")\n setTimeout(() => {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\")\n },500)\n html.style.overflow=\"auto\"\n } else {\n mobileMenuIcon.classList.add(\"menu-mobile__icon--open\")\n mobileMenuOverlay.classList.add(\"menu-mobile__overlay--active\")\n html.style.overflow=\"hidden\"\n }\n }\n })\n}\n\nif(mobileMenuOverlay){\n mobileMenuOverlay.addEventListener(\"keydown\", e => {\n if(e.key === \"Escape\"){\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\")\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\")\n setTimeout(() => {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\")\n },500)\n html.style.overflow=\"auto\"\n }\n })\n \n mobileMenuOverlay.addEventListener(\"click\", e => {\n const targetElement = e.target as HTMLElement;\n \n if (targetElement.className === \"menu-mobile__overlay menu-mobile__overlay--active\") {\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\")\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\")\n setTimeout(() => {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\")\n },500)\n html.style.overflow=\"auto\"\n }\n })\n}\n\nif(getInTouchButton){\n getInTouchButton.addEventListener(\"click\", e => {\n mobileMenuNested.classList.add(\"menu-mobile__nested--active\")\n })\n}\n\nif(mobileMenuBackButton){\n mobileMenuBackButton.addEventListener(\"click\", e => {\n mobileMenuNested.classList.remove(\"menu-mobile__nested--active\")\n })\n}","import Glide from '@glidejs/glide';\n\nconst mobileMenuPlatform = document.querySelector('.menu-mobile-platform__container') as HTMLElement;\n\nif (mobileMenuPlatform) {\n const mobileMenuOverlayPlatform = document.querySelector('.menu-mobile-platform__overlay') as HTMLElement;\n const mobileMenuIconPlatform = document.querySelector('.menu-mobile-platform__icon') as HTMLElement;\n const mobileMenuIconContainerPlatform = document.querySelector(\n '.menu-mobile-platform__icon-container',\n ) as HTMLElement;\n const mobileMenuButtonPlatform = document.querySelector('.menu-mobile-platform__icon-container') as HTMLElement;\n const htmlPlatform = document.querySelector('html') as HTMLElement;\n const carousel = mobileMenuPlatform.querySelector('.menu-mobile-platform__carousel') as HTMLDivElement;\n const cards: NodeListOf = carousel.querySelectorAll('.dashboard-contact');\n const recipientDetailsOverlays: NodeListOf =\n mobileMenuPlatform.querySelectorAll('.recipient-detail__overlay');\n const closeButtons: NodeListOf = mobileMenuPlatform.querySelectorAll('.recipient-detail__close');\n\n const handleOverlay = (card: Element, index: number, overlays) => {\n let activeIndex = index;\n\n card.addEventListener('click', () => {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n });\n\n card.addEventListener('keydown', (e) => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', (e) => {\n const targetElement = e.target as HTMLElement;\n\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n }\n });\n }\n };\n\n const handleMenuClose = () => {\n mobileMenuIconPlatform.classList.remove('menu-mobile-platform__icon--open');\n mobileMenuOverlayPlatform.classList.remove('menu-mobile-platform__overlay--active');\n htmlPlatform.style.overflow = 'auto';\n };\n\n const handleShowMenu = () => {\n mobileMenuIconPlatform.classList.add('menu-mobile-platform__icon--open');\n mobileMenuOverlayPlatform.classList.add('menu-mobile-platform__overlay--active');\n htmlPlatform.style.overflow = 'hidden';\n };\n\n mobileMenuOverlayPlatform.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n handleMenuClose();\n }\n });\n\n mobileMenuOverlayPlatform.addEventListener('click', (e) => {\n const targetElement = e.target as HTMLElement;\n\n if (targetElement.className === 'menu-mobile-platform__overlay menu-mobile-platform__overlay--active') {\n handleMenuClose();\n }\n });\n\n if (carousel) {\n var glide = new Glide(carousel, {\n type: 'slider',\n perView: 1.3,\n gap: 10,\n rewind: false,\n bound: false,\n });\n\n glide.mount();\n\n cards.forEach((card, index: number) => {\n handleOverlay(card, index, recipientDetailsOverlays);\n });\n\n closeButtons.forEach((button) => {\n button.addEventListener('click', () => {\n button.parentElement.parentElement.parentElement.parentElement.classList.remove(\n 'recipient-detail__overlay--active',\n );\n });\n });\n }\n\n if (mobileMenuIconContainerPlatform) {\n mobileMenuIconContainerPlatform.addEventListener('click', (e) => {\n if (mobileMenuIconPlatform.classList.contains('menu-mobile-platform__icon--open')) {\n handleMenuClose();\n } else {\n handleShowMenu();\n }\n });\n }\n\n if (mobileMenuButtonPlatform) {\n mobileMenuButtonPlatform.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n if (mobileMenuIconPlatform.classList.contains('menu-mobile-platform__icon--open')) {\n handleMenuClose();\n } else {\n handleShowMenu();\n }\n }\n });\n }\n}\n"," /* eslint-disable */\n\nimport axios from \"axios\";\nimport { UpdateCountryPayload, UpdateCountryResponse, UpdateCurrencyPayload, UpdateCurrencyResponse, UpdatePasswordPayload, UpdatePasswordResponse } from \"./myAccount.types\";\n\nconst account = document.querySelector(\".account__wrapper\") as HTMLDivElement;\n\nif (account) {\n let type = null;\n let conditions = []\n let validations = [false]\n\n const validationMessages = [\n \"Must be at least 6 characters long. \",\n \"Must have at least one lowercase letter. \",\n \"Must have at least one uppercase letter. \",\n \"Must include a number. \",\n \"Must include any of the following symbols: !@#$&*.\"\n ]\n\n const changeButtons: NodeListOf = account.querySelectorAll(\".account__button\");\n const closeButtons: NodeListOf = account.querySelectorAll(\".account-slider__close\");\n const overlays: NodeListOf = account.querySelectorAll(\".account-slider__overlay\");\n\n const passwordInputs: NodeListOf = account.querySelectorAll(\".account-slider__password\");\n const passwordOldInput = document.querySelector('.account-slider__password-old') as HTMLInputElement;\n const passwordOldValidation = document.querySelector(\n '.account-slider__validation-password-old',\n ) as HTMLSpanElement;\n const passwordNewInput = document.querySelector('.account-slider__password-new') as HTMLInputElement;\n const passwordNewValidation = document.querySelector(\n '.account-slider__validation-password-new',\n ) as HTMLSpanElement;\n const passwordAgainInput = document.querySelector('.account-slider__password-again') as HTMLInputElement;\n const passwordAgainValidation = document.querySelector(\n '.account-slider__validation-password-again',\n ) as HTMLSpanElement;\n const photoValidation = document.querySelector(\n '.account-slider__validation-photo',\n ) as HTMLSpanElement;\n const showPasswordButtons = account.querySelectorAll('.zmdi-eye') as NodeListOf;\n const hidePasswordButtons = account.querySelectorAll('.zmdi-eye-off') as NodeListOf;\n const countryDropdown = document.querySelector('#account-slider__country') as HTMLSelectElement;\n const countryOptions = countryDropdown?.querySelectorAll('option') as NodeListOf;\n const currencyDropdown = document.querySelector('.account-slider__currency') as HTMLSelectElement;\n const currencyOptions = currencyDropdown?.querySelectorAll('option') as NodeListOf;\n const uploadInput = document.querySelector('.account__upload-input') as HTMLInputElement;\n\n const forms: NodeListOf = account.querySelectorAll(\".account-slider__form\");\n const passwordForm = account.querySelector(\".account-slider__password-form\") as HTMLFormElement;\n const regexPattern = passwordForm.getAttribute(\"pattern\") as string || null;\n const notification = account.querySelector(\".account__notify\") as HTMLParagraphElement;\n const submitButtons = account.querySelectorAll(\".button__label\") as NodeListOf;\n const accountImages = document.querySelectorAll(\".account__image\") as NodeListOf;\n\n //API Variables & components\n let isLoading = false;\n const successElm = account.querySelector(\".account__notify--success\") as HTMLParagraphElement;\n const failElm = account.querySelector(\".account__notify--fail\") as HTMLParagraphElement;\n const currentCountryElm = account.querySelector(\"#currentResidenceCountry\") as HTMLParagraphElement;\n const currentCurrencyElm = account.querySelector(\"#currentCurrency\") as HTMLParagraphElement;\n\n const closeOverlays = () => {\n overlays.forEach(item => item.classList.remove(\"account-slider__overlay--active\"))\n setTimeout(() => {\n clearForm()\n resetValidations()\n }, 500);\n }\n\n const resetValidations = () => {\n passwordOldValidation.classList.remove(\"account-slider__validation--active\")\n passwordNewValidation.classList.remove(\"account-slider__validation--active\")\n passwordAgainValidation.classList.remove(\"account-slider__validation--active\")\n photoValidation.classList.remove(\"account-slider__validation--active\")\n }\n\n const validatePasswords = () => {\n if (!passwordOldInput.value) {\n passwordOldValidation.classList.add(\"account-slider__validation--active\")\n passwordOldValidation.textContent = \"This field cannot be empty\"\n\n return false\n }\n\n if (!passwordNewInput.value) {\n passwordNewValidation.classList.add(\"account-slider__validation--active\")\n passwordNewValidation.textContent = \"This field cannot be empty\"\n\n return false\n }\n\n if (!passwordAgainInput.value) {\n passwordAgainValidation.classList.add(\"account-slider__validation--active\")\n passwordAgainValidation.textContent = \"This field cannot be empty\"\n\n return false\n }\n\n if (passwordNewInput.value !== passwordAgainInput.value) {\n passwordNewValidation.classList.add(\"account-slider__validation--active\")\n passwordNewValidation.textContent = \"The passwords do not match.\"\n passwordAgainValidation.classList.add(\"account-slider__validation--active\")\n passwordAgainValidation.textContent = \"The passwords do not match.\"\n\n return false\n }\n\n return true\n }\n\n const showPhotoValidations = () => {\n photoValidation.classList.add(\"account-slider__validation--active\")\n }\n\n const validatePhoto = (file: File) => {\n if (file && file.size <= 5000000) {\n return true\n }\n\n showPhotoValidations()\n\n return false\n }\n\n const clearForm = () => {\n passwordInputs.forEach(input => input.value = \"\")\n }\n\n const updateButtons = () => {\n submitButtons.forEach(button => button.disabled = isLoading)\n }\n\n const updateMessages = (success?: boolean) => {\n if (success) {\n failElm.classList.remove(\"active\");\n successElm.classList.add(\"active\");\n } else if (success === false) {\n failElm.classList.add(\"active\");\n successElm.classList.remove(\"active\");\n } else if (isLoading) {\n failElm.classList.remove(\"active\");\n successElm.classList.remove(\"active\");\n }\n }\n\n const updateUI = (success?: boolean) => {\n updateButtons();\n updateMessages(success);\n\n if (success) {\n clearForm();\n closeOverlays();\n }\n else if (success === false) {\n closeOverlays();\n }\n }\n\n const enableOptions = (options: NodeListOf, currentOptionIdx: number) => {\n options.forEach(option => {\n option.disabled = false\n option.style.color = \"#000\";\n });\n\n options[currentOptionIdx].disabled = true;\n options[currentOptionIdx].style.color = \"rgba(0, 0, 0, 0.5)\";\n }\n\n const updateCurrency = async () => {\n isLoading = true;\n updateUI();\n let payload: UpdateCurrencyPayload = {\n currencyName: currencyDropdown.value\n }\n\n try {\n //For development:\n // const response = await axios.post(\"https://localhost:44323/api/member/updatePreferredCurrency\", payload);\n \n const response = await axios.post(\"/api/member/updatePreferredCurrency\", payload);\n const { data } = response;\n \n isLoading = false;\n updateUI(data.success);\n \n if (data.success) {\n enableOptions(currencyOptions, currencyDropdown.selectedIndex);\n currentCurrencyElm.textContent = currencyDropdown.options[currencyDropdown.selectedIndex].text;\n }\n } catch (exception: any) {\n updateUI(false);\n console.log(exception);\n }\n }\n\n const updateCountry = async () => {\n isLoading = true;\n updateUI();\n let payload: UpdateCountryPayload = {\n country: countryDropdown.value\n }\n\n try {\n //For development:\n // const response = await axios.post(\"https://localhost:44323/api/member/updateResidenceCountry\", payload);\n \n const response = await axios.post(\"/api/member/updateResidenceCountry\", payload);\n const { data } = response;\n \n isLoading = false;\n updateUI(data.success);\n\n if (data.success) {\n enableOptions(countryOptions, countryDropdown.selectedIndex);\n currentCountryElm.textContent = countryDropdown.options[countryDropdown.selectedIndex].text;\n }\n } catch (exception: any) {\n updateUI(false);\n console.log(exception);\n }\n }\n\n const updatePassword = async () => {\n isLoading = true;\n updateUI();\n let payload: UpdatePasswordPayload = {\n currentPassword: passwordOldInput.value,\n newPassword: passwordNewInput.value\n }\n\n try {\n //For development:\n // const response = await axios.post(\"https://localhost:44323/api/member/updatePassword\", payload);\n \n const response = await axios.post(\"/api/member/updatePassword\", payload);\n const { data } = response;\n \n isLoading = false;\n if (!data.success) {\n passwordOldValidation.classList.add(\"account-slider__validation--active\");\n passwordOldValidation.textContent = data.message;\n updateUI();\n } else {\n updateUI(true);\n }\n } catch (exception: any) {\n updateUI(false);\n console.log(exception);\n }\n }\n\n const updateProfilePicture = async (file: File) => {\n isLoading = true;\n updateUI();\n let payload = new FormData();\n payload.append(\"profilePicture\", file);\n\n try {\n //For development:\n // const response = await axios.post(\"https://localhost:44323/api/member/updateProfilePicture\", payload);\n \n const response = await axios.post(\"/api/member/updateProfilePicture\", payload);\n const { data } = response;\n \n isLoading = false;\n updateUI(data.success);\n\n if (data.success) {\n accountImages.forEach(img => {\n img.src = URL.createObjectURL(file)\n img.classList.remove(\"navbar-platform__avatar--default\")\n img.classList.remove(\"account__image--default\")\n });\n }\n } catch (exception: any) {\n updateUI(false);\n console.log(exception);\n }\n }\n\n const handlePasswordSubmit = (e: Event) => {\n e.preventDefault();\n\n resetValidations()\n\n if (validatePasswords() && validateRegexPassword(passwordNewInput.value)) {\n updatePassword();\n }\n }\n\n const handleCountrySubmit = (e: Event) => {\n e.preventDefault();\n\n updateCountry();\n }\n\n const handleCurrencySubmit = (e: Event) => {\n e.preventDefault();\n\n updateCurrency();\n }\n\n const handlePhotoSubmit = (e: Event, file: File) => {\n e.preventDefault();\n resetValidations()\n\n if (validatePhoto(file)) {\n updateProfilePicture(file);\n }\n }\n\n const validateRegexPassword = (password: string) => {\n if (password && password?.length > 5) {\n validations[0] = true;\n }\n\n conditions.forEach((cond, index) => {\n if (new RegExp(cond).test(password)) {\n validations[index + 1] = true\n }\n })\n\n let isPasswordValid = false;\n\n if (validations.every((val) => val === true)) {\n isPasswordValid = true;\n } else {\n isPasswordValid = false\n showRegexPasswordValidationMessage();\n }\n\n return isPasswordValid;\n };\n\n const showRegexPasswordValidationMessage = () => {\n const validationMessage = validations\n .map((isValid, index) => !isValid ? validationMessages[index] : \"\")\n .filter(msg => msg)\n .join(\" \");\n\n if (validations.every((val) => val === true)) {\n return\n } else {\n passwordNewValidation.classList.add(\"account-slider__validation--active\");\n passwordNewValidation.textContent = validationMessage;\n\n return\n }\n }\n\n // extract individual conditions from the regex pattern\n const extractConditions = (regexPattern: string) => {\n conditions = regexPattern.match(/\\(\\?=(.*?)\\)|\\(\\?!(.*?)\\)|\\(\\?<=(.*?)\\)|\\(\\?<(.*?)\\)/g);\n\n conditions = conditions.filter(condition => condition !== null);\n\n // map each condition to a validation array\n conditions.map(condition => validations.push(false));\n };\n\n const hideNotification = () => {\n const time = notification.getAttribute(\"data-timeout\") as string;\n\n if (time) {\n setTimeout(() => {\n notification.classList.remove(\"account__notify--fail\")\n notification.classList.remove(\"account__notify--success\")\n }, +time);\n }\n }\n\n uploadInput.addEventListener('change', (e: Event) => {\n const target = e.target as HTMLInputElement;\n const file = target.files[0] as File;\n\n handlePhotoSubmit(e, file)\n });\n\n overlays.forEach(item => {\n item.addEventListener(\"click\", (e: Event) => {\n const target = e.target as HTMLDivElement;\n\n if (target.classList.contains(\"account-slider__overlay--active\"))\n closeOverlays()\n })\n })\n\n closeButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n closeOverlays()\n })\n })\n\n changeButtons.forEach((button, index: number) => {\n button.addEventListener(\"click\", () => {\n button.nextElementSibling.classList.add(\"account-slider__overlay--active\");\n\n if (button.classList.contains(\"account__button-password\")) {\n type = \"password\";\n } else if (button.classList.contains(\"account__button-country\")) {\n type = \"country\";\n } else if (button.classList.contains(\"account__button-currency\")) {\n type = \"currency\";\n }\n })\n })\n\n document.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeOverlays()\n }\n });\n\n showPasswordButtons.forEach((button) => {\n button.addEventListener('click', () => {\n button.previousElementSibling.setAttribute('type', 'text');\n button.classList.remove('zmdi-eye--active');\n button.nextElementSibling.classList.add('zmdi-eye-off--active');\n });\n });\n\n hidePasswordButtons.forEach((button) => {\n button.addEventListener('click', () => {\n button.previousElementSibling.previousElementSibling.setAttribute('type', 'password');\n button.classList.remove('zmdi-eye-off--active');\n button.previousElementSibling.classList.add('zmdi-eye--active');\n });\n });\n\n passwordOldInput.addEventListener(\"input\", () => {\n resetValidations()\n })\n\n passwordNewInput.addEventListener(\"input\", () => {\n resetValidations()\n })\n\n passwordAgainInput.addEventListener(\"input\", () => {\n resetValidations()\n })\n\n forms.forEach(form => {\n form.addEventListener(\"submit\", (e) => {\n switch (type) {\n case \"password\":\n handlePasswordSubmit(e)\n break;\n case \"country\":\n handleCountrySubmit(e)\n break;\n case \"currency\":\n handleCurrencySubmit(e)\n break;\n default:\n null\n }\n })\n })\n\n if (regexPattern) {\n extractConditions(regexPattern)\n }\n\n if (notification.classList.contains(\"account__notify--fail\") || notification.classList.contains(\"account__notify--success\")) {\n hideNotification()\n }\n}","const sendFundsButton = document.querySelector(\".navbar__button-funds\") as HTMLElement\nconst sendFunds = document.querySelector(\".send-funds__overlay\") as HTMLElement\nconst sendFundsMobileButton = document.querySelector(\".navbar__sticky-button\") as HTMLElement\nconst htmlElement: HTMLElement | null = document.documentElement;\nconst navbar = document.querySelector(\".navbar\") as HTMLElement;\n\nconst pageLinkCurrent = (link: string) => {\n let currentUrl = window.location.pathname.split(\"/\")[1];\n\n if (currentUrl) {\n return link.includes(currentUrl);\n }\n\n return false\n}\n\nif(sendFundsButton){\n sendFundsButton.addEventListener(\"click\", e => {\n if(sendFunds.classList.contains(\"send-funds__overlay--open\")){\n sendFunds.classList.remove(\"send-funds__overlay--active\")\n htmlElement.style.overflow=\"auto\"\n }else {\n sendFunds.classList.add(\"send-funds__overlay--active\")\n htmlElement.style.overflow=\"hidden\"\n }\n })\n}\n\nif(sendFundsMobileButton){\n sendFundsMobileButton.addEventListener(\"click\", e => {\n if(sendFunds.classList.contains(\"send-funds__overlay--open\")){\n sendFunds.classList.remove(\"send-funds__overlay--active\")\n htmlElement.style.overflow=\"auto\"\n }else {\n sendFunds.classList.add(\"send-funds__overlay--active\")\n htmlElement.style.overflow=\"hidden\"\n }\n })\n}\n\nif(navbar) {\n const links: NodeListOf = navbar.querySelectorAll(\".navbar__links-item .link\");\n\n links.forEach(link => {\n const href: string = link.href\n\n if(pageLinkCurrent(href)) {\n link.classList.add(\"link--active\")\n }\n })\n}","import Glide from '@glidejs/glide'\nimport { NewPaymentsContactsPayload, NewPaymentsContactsResponse } from './newPayments.types';\nimport axios from 'axios';\n\nconst newPaymentComponent = document.querySelector(\".new-pay__wrapper\") as HTMLDivElement;\n\nif (newPaymentComponent) {\n const searchInput = newPaymentComponent.querySelector(\".new-pay__form-desktop .new-pay__search\") as HTMLInputElement;\n const searchInputMobile = newPaymentComponent.querySelector(\".new-pay__form-mobile .new-pay__search\") as HTMLInputElement;\n let newPaymentContacts = newPaymentComponent.querySelector(\".new-pay__contacts-list\") as HTMLUListElement;\n const newPaymentRecipients = newPaymentComponent.querySelector(\".new-pay__recipients-list\") as HTMLUListElement;\n const newPaymentCarousel = newPaymentComponent.querySelector(\".new-pay__recipients-carousel\") as HTMLDivElement;\n const newPayAmountText = newPaymentComponent.querySelector(\".new-pay__number\") as HTMLParagraphElement;\n const recipientCards: NodeListOf = newPaymentRecipients.querySelectorAll(\".dashboard-contact\");\n const carouselCards: NodeListOf = newPaymentCarousel.querySelectorAll(\".dashboard-contact\");\n const loadMoreButton = newPaymentComponent.querySelector(\".new-pay__load\") as HTMLButtonElement;\n const loader = newPaymentComponent.querySelector(\".payments__loader\") as HTMLLIElement;\n let contactDetails: NodeListOf = newPaymentComponent.querySelectorAll(\".recipient-detail__overlay\");\n\n //API Variables\n let db: NewPaymentsContactsResponse = {\n html: \"\",\n hasReachedEnd: false,\n lastId: 0\n };\n let isLoading = false;\n let payload: NewPaymentsContactsPayload = {\n keyword: \"\",\n lastId: 0,\n pageIncrement: 10\n };\n\n const handleOverlay = (card: Element, index: number, overlays) => {\n let activeIndex = index;\n\n card.addEventListener('click', () => {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n });\n\n card.addEventListener('keydown', (e) => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === 'Enter') {\n overlays[activeIndex].classList.add('recipient-detail__overlay--active');\n }\n });\n\n if (overlays[activeIndex]) {\n overlays[activeIndex].addEventListener('click', (e) => {\n const targetElement = e.target as HTMLElement;\n\n if (targetElement.classList.contains('recipient-detail__overlay')) {\n overlays[activeIndex].classList.remove('recipient-detail__overlay--active');\n }\n });\n }\n};\n\n const initGlide = (carousel, carouselRange, slides) => {\n carouselRange.addEventListener(\"input\", () => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`)\n }, 500);\n })\n\n const setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = arr.length as number;\n let rangeMax = '0' as string;\n\n rangeMax = (slidesLength - 1).toString();\n\n input.max = rangeMax;\n\n setRangeThumbWidth(rangeMax, input);\n }\n\n const setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 94 / +max\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n\n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"47px\");\n }\n }\n\n const glide = new Glide(carousel, {\n type: 'slider',\n perView: 1.37,\n gap: 11,\n rewind: false,\n bound: true,\n })\n\n glide.mount()\n\n glide.on('move.after', () => {\n const currentIndex = glide.index as string;\n carouselRange.value = currentIndex;\n })\n\n setRangeMax(slides, carouselRange)\n\n const carouselOverlays: NodeListOf =\n carousel.querySelectorAll('.recipient-detail__overlay');\n\n carouselCards.forEach((card, i: number) => {\n handleOverlay(card, i, carouselOverlays)\n })\n }\n\n const init = () => {\n const hookApiListeners = () => {\n let timeoutId: ReturnType;\n\n const handleSearch = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const str = target.value;\n\n payload.keyword = str;\n payload.lastId = 0;\n db.html = \"\";\n\n clearTimeout(timeoutId);\n\n timeoutId = setTimeout(() => {\n fetchContacts();\n }, 1000);\n }\n\n loadMoreButton.addEventListener(\"click\", () => {\n payload.lastId = db.lastId;\n fetchContacts();\n })\n\n searchInput.addEventListener(\"input\", handleSearch);\n searchInputMobile.addEventListener(\"input\", handleSearch);\n }\n\n // init recipients carousel only\n const carousel = newPaymentComponent.querySelector(\".new-pay__recipients-carousel\") as HTMLUListElement;\n const carouselRange = newPaymentComponent.querySelector(\".new-pay__range\") as HTMLInputElement;\n const slides: NodeListOf = carousel.querySelectorAll(\".dashboard-contact\");\n\n hookApiListeners();\n initGlide(carousel, carouselRange, slides);\n }\n\n const hookOverlays = () => {\n const contactsCards: NodeListOf = newPaymentContacts.querySelectorAll(\".dashboard-contact\");\n const closeButtons: NodeListOf = newPaymentComponent.querySelectorAll(\".recipient-detail__close\");\n\n const contactsOverlays: NodeListOf =\n newPaymentContacts.querySelectorAll('.recipient-detail__overlay');\n\n const recipientOverlays: NodeListOf =\n newPaymentRecipients.querySelectorAll('.recipient-detail__overlay');\n\n contactsCards.forEach((card, i: number) => {\n handleOverlay(card, i, contactsOverlays)\n })\n\n recipientCards.forEach((card, i: number) => {\n handleOverlay(card, i, recipientOverlays)\n })\n\n closeButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n contactDetails.forEach(item => item.classList.remove(\"recipient-detail__overlay--active\"))\n contactsCards.forEach(item => item.classList.remove(\"recipient-detail__overlay--active\"))\n })\n })\n\n contactDetails.forEach(item => {\n item.addEventListener(\"keydown\", e => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === \"Escape\") {\n item.classList.remove(\"recipient-detail__overlay--active\");\n }\n })\n })\n }\n\n const clearData = () => {\n const paymentsChildren = Array.from(newPaymentContacts.children) as HTMLElement[];\n const itemsToKeep = [loadMoreButton.className, loader.className]\n\n paymentsChildren.forEach(child => {\n if (!itemsToKeep.includes(child.className)) {\n child.remove();\n }\n })\n }\n\n const refreshVariables = () => {\n newPaymentContacts = newPaymentComponent.querySelector(\".new-pay__contacts-list\") as HTMLUListElement;\n contactDetails = newPaymentComponent.querySelectorAll(\".recipient-detail__overlay\") as NodeListOf;\n }\n\n const updateUI = () => {\n refreshVariables();\n\n if (isLoading) {\n clearData();\n\n refreshVariables();\n loadMoreButton.classList.add(\"hidden\");\n loader.classList.add(\"payments__loader--active\");\n newPaymentContacts.querySelector(\".payments__item-caption\")?.remove();\n newPayAmountText.textContent = \"(0)\";\n } else {\n loader.classList.remove(\"payments__loader--active\");\n\n if (!db.hasReachedEnd) {\n loadMoreButton.classList.remove(\"hidden\");\n }\n\n if (db.html) {\n newPaymentContacts.insertAdjacentHTML(\"afterbegin\", db.html);\n }\n\n if (db.hasReachedEnd) {\n newPaymentContacts.insertAdjacentHTML(\"beforeend\",\n '
  • End of results
  • ');\n } else {\n loadMoreButton.classList.remove(\"hidden\");\n }\n\n refreshVariables();\n newPayAmountText.textContent = `(${newPaymentContacts.querySelectorAll(\".dashboard-contact\").length.toString()})`;\n }\n\n hookOverlays();\n }\n\n const fetchContacts = async () => {\n if (isLoading) return;\n\n isLoading = true;\n updateUI();\n\n try {\n // For development:\n // const response = (await axios.get(\"https://localhost:44323/api/contacts/getAllContacts\", {\n // params: {\n // ...payload\n // },\n // })).data;\n\n const response = (await axios.get(\"/api/contacts/getAllContacts\", {\n params: {\n ...payload\n },\n })).data;\n\n isLoading = false;\n\n db.html += response.html;\n db.hasReachedEnd = response.hasReachedEnd;\n db.lastId = response.lastId;\n } catch (error: any) {\n console.error(error);\n } finally {\n updateUI();\n hookOverlays();\n \n // init contacts carousel with new data\n const listElement = newPaymentComponent.querySelector(\".new-pay__contacts-list\")\n const cardDetails: NodeListOf = listElement.querySelectorAll(\".recipient-detail\")\n \n cardDetails.forEach(item => {\n const carousel = item.querySelector(\".recipient-detail__carousel\");\n const carouselRange = item.querySelector(\".recipient-detail__carousel-range\")\n const slides: NodeListOf = item.querySelectorAll(\".recipient-detail__item\");\n\n initGlide(carousel, carouselRange, slides);\n }) \n }\n }\n\n hookOverlays();\n init();\n fetchContacts();\n}","import axios from \"axios\";\nimport { NewRecipientPayload, NewRecipientResponse } from \"./newRecipient.types\";\n\nconst newRecipientComponent = document.querySelector('.new-recipient__wrapper') as HTMLDivElement;\n\nif (newRecipientComponent) {\n const forms: NodeListOf = newRecipientComponent.querySelectorAll('.new-recipient__form');\n const inputs: NodeListOf = newRecipientComponent.querySelectorAll('.new-recipient__input');\n const button = newRecipientComponent.querySelector('.new-recipient__button') as HTMLButtonElement;\n const loader = newRecipientComponent.querySelector('.loader') as HTMLDivElement;\n const validStatus = newRecipientComponent.querySelector('.new-recipient__status--valid') as HTMLParagraphElement;\n const invalidStatus = newRecipientComponent.querySelector(\n '.new-recipient__status--invalid',\n ) as HTMLParagraphElement;\n\n //API variables\n let isLoading = false;\n let payload: NewRecipientPayload = {\n CardNumber: \"\",\n Cvv: \"\"\n };\n let response: NewRecipientResponse;\n\n const reset = () => {\n inputs.forEach((input) => {\n input.classList.remove('new-recipient__input--active');\n input.classList.remove('new-recipient__input--error');\n });\n validStatus.classList.remove('new-recipient__status--active');\n invalidStatus.classList.remove('new-recipient__status--active');\n button.disabled = true;\n };\n\n const handleValid = () => {\n inputs.forEach((input) => input.classList.add('new-recipient__input--active'));\n validStatus.classList.add('new-recipient__status--active');\n button.disabled = false;\n return true;\n };\n\n const handleInvalid = () => {\n inputs.forEach((input) => input.classList.add('new-recipient__input--error'));\n invalidStatus.classList.add('new-recipient__status--active');\n button.disabled = true;\n return false;\n };\n\n const showLoader = () => {\n inputs.forEach((input) => (input.disabled = true));\n loader.classList.add('loader--active');\n };\n\n const removeLoader = () => {\n inputs.forEach((input) => (input.disabled = false));\n loader.classList.remove('loader--active');\n };\n\n const getCardPayload = (): NewRecipientPayload => {\n const cardNumberInputs = newRecipientComponent.querySelectorAll('.new-recipient__input--card-number') as NodeListOf;\n const cvvInputs = newRecipientComponent.querySelectorAll('.new-recipient__input--card-cvv') as NodeListOf;\n const cardNumber = Array.from(cardNumberInputs).map((input) => input.value).join('');\n const cvv = Array.from(cvvInputs).map((input) => input.value).join('');\n\n return {\n CardNumber: cardNumber,\n Cvv: cvv\n };\n }\n\n const updateUI = () => {\n if (isLoading) {\n showLoader();\n } else {\n removeLoader();\n\n if (response?.success) {\n handleValid();\n button.disabled = true;\n\n setTimeout(() => {\n window.location.href = response.data.url;\n }, 2500)\n } else {\n handleInvalid();\n }\n }\n }\n\n const fetchCard = async () => {\n if (isLoading) return;\n\n isLoading = true;\n updateUI();\n\n try {\n payload = getCardPayload();\n\n //For development:\n // const request = await axios.post('https://localhost:44323/api/recipients/getRecipient', payload);\n\n const request = await axios.post('/api/recipients/getRecipient', payload);\n\n response = request.data;\n isLoading = false;\n }\n catch (error) {\n console.error(error);\n }\n finally {\n updateUI();\n }\n }\n\n const checkInputs = async () => {\n reset();\n\n for (const input of Array.from(inputs)) {\n if (!input.value.trim()) {\n button.disabled = true;\n return false;\n }\n }\n\n await fetchCard();\n };\n\n forms.forEach((form) => {\n const codeInputs: NodeListOf = form.querySelectorAll('.new-recipient__input');\n\n codeInputs.forEach((input: HTMLInputElement, index: number) => {\n input.addEventListener('input', (event) => {\n const target = event.target as HTMLInputElement;\n let value = target.value;\n\n value = value.replace(/\\D/g, '');\n\n if (value.length > 1) {\n value = value.slice(0, 1);\n }\n\n target.value = value;\n\n if (index < codeInputs.length - 1 && value) {\n (codeInputs[index + 1] as HTMLInputElement).focus();\n }\n\n checkInputs();\n });\n\n input.addEventListener('paste', async (event) => {\n event.preventDefault();\n\n const clipboardText = await navigator.clipboard.readText();\n const digits = clipboardText.match(/\\d/g);\n\n if (digits) {\n digits.forEach((digit, i) => {\n if (i < codeInputs.length) {\n (codeInputs[i] as HTMLInputElement).value = digit;\n checkInputs();\n }\n });\n }\n });\n\n input.addEventListener('keydown', (event: KeyboardEvent) => {\n const target = event.target as HTMLInputElement;\n const key = event.key;\n\n if (key === 'Backspace' && index > 0) {\n if (!target.value && index > 0) {\n (codeInputs[index - 1] as HTMLInputElement).focus();\n }\n }\n });\n });\n });\n}\n","import Glide from '@glidejs/glide'\n\nconst newsGridCarousels: NodeListOf = document.querySelectorAll(\".news-grid__carousel-inner\");\n\nconst setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = Array.from(arr).length\n let rangeMax = '0'\n \n rangeMax = (slidesLength - 1).toString()\n\n input.max = rangeMax\n\n setRangeThumbWidth(rangeMax, input)\n}\n\nconst setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 200 / +max\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n\n if(max === \"1\"){\n input.style.setProperty('--thumb-size', \"100px\");\n }\n}\n\nif(newsGridCarousels.length > 0){\n\n const newsGridCarouselsArray = Array.from(newsGridCarousels) || []\n\n newsGridCarouselsArray.forEach((item: HTMLElement) => {\n const glide = new Glide(item, {\n type: 'slider',\n perView: 1.24,\n gap: 10,\n rewind: false,\n bound: true,\n })\n \n glide.mount()\n \n const carouselRange = item.querySelector(\".news-grid__carousel-range\") as HTMLInputElement\n const slides: NodeListOf = item.querySelectorAll(\".news-grid__card\");\n \n carouselRange.addEventListener(\"input\", e => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`)\n }, 500);\n })\n \n glide.on('move.after', () =>{\n const currentIndex = glide.index;\n carouselRange.value = currentIndex\n })\n \n setRangeMax(slides, carouselRange)\n })\n}","import { FetchNewsListingPayload, FetchNewsListingResponse, NewsCard } from './newsListing.types';\nimport axios from 'axios';\n\nconst newsListing = (document.querySelector('.news-listing') as HTMLDivElement) || null;\n\nif (newsListing) {\n const nextButton = document.querySelector('.news-listing__button--next') as HTMLButtonElement;\n const prevButton = document.querySelector('.news-listing__button--prev') as HTMLButtonElement;\n const pageId = +(document.querySelector('#pageId') as HTMLInputElement).value;\n\n let newsCards: NewsCard[] = [];\n let pageNumber = 1;\n let pagesCount = 0;\n let isLoading = false;\n\n const fetchNews = async () => {\n const payload: FetchNewsListingPayload = {\n pageNumber,\n pageId,\n };\n\n isLoading = true;\n updateUI();\n\n try {\n // For developement:\n // const response = await axios.get('https://localhost:44323/api/newsListing/getNews', {\n // params: payload,\n // headers: {\n // 'Access-Control-Allow-Origin': '*'\n // }\n // });\n\n const response = await axios.get('/api/newsListing/getNews', {\n params: payload,\n });\n\n newsCards = response.data.newsCards;\n pagesCount = response.data.pagesCount;\n } catch (error) {\n console.error(error);\n } finally {\n isLoading = false;\n updateUI();\n }\n };\n\n const updateCards = () => {\n const grid = document.querySelector('.news-listing__grid') as HTMLDivElement;\n grid.innerHTML = '';\n\n newsCards.forEach((card: NewsCard) => {\n const cardDiv = document.createElement('div');\n cardDiv.classList.add('news-listing__card', 'flex', 'flex--column');\n\n if (card.imageUrl) {\n const image = document.createElement('img');\n image.classList.add('news-listing__card-image');\n image.src = card.imageUrl;\n image.alt = card.imageAlt;\n cardDiv.appendChild(image);\n }\n\n if (card.title) {\n const title = document.createElement('h5');\n title.classList.add('news-listing__card-title');\n title.innerText = card.title;\n cardDiv.appendChild(title);\n }\n\n const cardBottomDiv = document.createElement('div');\n cardBottomDiv.classList.add(\n 'news-listing__card-bottom',\n 'flex',\n 'flex--row',\n 'flex--justify-between',\n 'flex--align-center',\n );\n\n if (card.readTime) {\n const readTime = document.createElement('p');\n readTime.classList.add('news-listing__card-read');\n readTime.innerText = card.readTime;\n cardBottomDiv.appendChild(readTime);\n }\n\n const cardButtonText = document.createElement('a');\n cardButtonText.classList.add(\n 'news-listing__button',\n 'flex',\n 'flex--row',\n 'flex--justify-center',\n 'flex--align-center',\n );\n cardButtonText.href = card.url;\n cardButtonText.innerText = card.buttonText;\n\n const arrowSpan = document.createElement('span');\n arrowSpan.classList.add('zmdi', 'zmdi-long-arrow-right');\n\n cardButtonText.appendChild(arrowSpan);\n cardBottomDiv.appendChild(cardButtonText);\n cardDiv.appendChild(cardBottomDiv);\n grid.appendChild(cardDiv);\n });\n };\n\n const hookListeners = () => {\n nextButton.addEventListener('click', () => {\n ++pageNumber;\n fetchNews();\n });\n\n prevButton.addEventListener('click', () => {\n --pageNumber;\n fetchNews();\n });\n };\n\n const updatePagination = () => {\n if (isLoading) {\n nextButton.disabled = prevButton.disabled = true;\n } else {\n nextButton.disabled = pageNumber >= pagesCount;\n prevButton.disabled = pageNumber === 1;\n }\n };\n\n const updateUI = () => {\n updateCards();\n updatePagination();\n };\n\n const init = () => {\n fetchNews();\n hookListeners();\n };\n\n document.addEventListener('DOMContentLoaded', init);\n}\n","const orgDirectorForm = document.querySelector(\".org-director__form\") as HTMLFormElement;\n\nif (orgDirectorForm) {\n const resetValidation = () => {\n validations.forEach(item => {\n item.classList.remove(\"org-director__validation--active\");\n })\n }\n\n const inputs: NodeListOf = orgDirectorForm.querySelectorAll(\".org-director__input\");\n const validations: NodeListOf = orgDirectorForm.querySelectorAll(\".org-director__validation\");\n const director1Input = document.querySelector(\".org-director__director-1\") as HTMLInputElement;\n const director2Input = document.querySelector(\".org-director__director-2\") as HTMLInputElement;\n const director3Input = document.querySelector(\".org-director__director-3\") as HTMLInputElement;\n const director1Validation = document.querySelector(\".org-director__validation-director-1\") as HTMLElement;\n\n inputs.forEach(input => {\n input.addEventListener(\"input\", () => {\n input.nextElementSibling.classList.remove(\"org-director__validation--active\")\n })\n });\n\n orgDirectorForm.addEventListener(\"submit\", async e => {\n resetValidation()\n\n const formValues = {\n director1: director1Input.value,\n director2: director2Input.value,\n director3: director3Input.value,\n };\n\n if(!director1Input.value) { \n director1Validation.classList.add(\"org-director__validation--active\")\n }\n\n if (director1Input.value) {\n resetValidation()\n } else {\n e.preventDefault()\n }\n });\n}","const orgManualEntryForm = document.querySelector(\".org-manual-entry__form\") as HTMLFormElement;\n\nif (orgManualEntryForm) {\n const nameInput = document.querySelector(\".org-manual-entry__name\") as HTMLInputElement;\n const numberInput = document.querySelector(\".org-manual-entry__number\") as HTMLInputElement;\n const address1Input = document.querySelector(\".org-manual-entry__address-1\") as HTMLInputElement;\n const address2Input = document.querySelector(\".org-manual-entry__address-2\") as HTMLInputElement;\n const address3Input = document.querySelector(\".org-manual-entry__address-3\") as HTMLInputElement;\n const postcodeInput = document.querySelector(\".org-manual-entry__postcode\") as HTMLInputElement;\n const countryInput = document.querySelector(\".org-manual-entry__country\") as HTMLSelectElement;\n\n const nameValidation = document.querySelector(\".org-manual-entry__validation-name\") as HTMLSpanElement;\n const numberValidation = document.querySelector(\".org-manual-entry__validation-number\") as HTMLSpanElement;\n const address1Validation = document.querySelector(\".org-manual-entry__validation-address-1\") as HTMLSpanElement;\n const postcodeValidation = document.querySelector(\".org-manual-entry__validation-postcode\") as HTMLSpanElement;\n const countryValidation = document.querySelector(\".org-manual-entry__validation-country\") as HTMLSpanElement;\n\n let isFormValid = false\n\n const resetValidation = () => {\n nameValidation.classList.remove(\"org-manual-entry__validation--active\")\n numberValidation.classList.remove(\"org-manual-entry__validation--active\")\n address1Validation.classList.remove(\"org-manual-entry__validation--active\")\n postcodeValidation.classList.remove(\"org-manual-entry__validation--active\")\n countryValidation.classList.remove(\"org-manual-entry__validation--active\")\n }\n\n const resetForm = () => {\n nameInput.value = \"\"\n numberInput.value = \"\"\n address1Input.value = \"\"\n address2Input.value = \"\"\n address3Input.value = \"\"\n postcodeInput.value = \"\"\n countryInput.value = \"\"\n }\n\n const validateForm = () => {\n if(!nameInput.value) { \n nameValidation.classList.add(\"org-manual-entry__validation--active\")\n }\n\n if(!numberInput.value) { \n numberValidation.classList.add(\"org-manual-entry__validation--active\")\n }\n\n if(!address1Input.value) { \n address1Validation.classList.add(\"org-manual-entry__validation--active\")\n }\n\n if(!postcodeInput.value) { \n postcodeValidation.classList.add(\"org-manual-entry__validation--active\")\n }\n\n if(!countryInput.value) { \n countryValidation.classList.add(\"org-manual-entry__validation--active\")\n }\n\n if(nameInput.value && numberInput.value && address1Input.value && postcodeInput.value && countryInput.value){\n isFormValid = true \n } \n }\n\n const listenForInputChanges = () => {\n nameInput.addEventListener(\"input\", () => {\n nameValidation.classList.remove(\"org-manual-entry__validation--active\")\n })\n \n numberInput.addEventListener(\"input\", () => {\n numberValidation.classList.remove(\"org-manual-entry__validation--active\")\n })\n\n address1Input.addEventListener(\"input\", () => {\n address1Validation.classList.remove(\"org-manual-entry__validation--active\")\n })\n \n postcodeInput.addEventListener(\"input\", () => {\n postcodeValidation.classList.remove(\"org-manual-entry__validation--active\")\n })\n \n countryInput.addEventListener(\"input\", () => {\n countryValidation.classList.remove(\"org-manual-entry__validation--active\")\n })\n }\n\n listenForInputChanges()\n\n orgManualEntryForm.addEventListener(\"submit\", async e => { \n resetValidation()\n \n const formValues = {\n name: nameInput.value,\n number: numberInput.value,\n address1: address1Input.value,\n address2: address2Input.value,\n address3: address3Input.value,\n postcode: postcodeInput.value,\n country: countryInput.value,\n };\n \n validateForm()\n \n if (isFormValid) {\n resetValidation()\n isFormValid = false\n } \n else {\n e.preventDefault();\n }\n });\n}","import setMaxDateValue from '../../../helpers/dateMaxValue';\n\nconst orgProfileMemberForm = document.querySelector(\".org-member-profile__form\") as HTMLFormElement;\n\nif (orgProfileMemberForm) {\n const firstNameInput = orgProfileMemberForm.querySelector(\".org-member-profile__first-name\") as HTMLInputElement;\n const middleNameInput = orgProfileMemberForm.querySelector(\".org-member-profile__middle-name\") as HTMLInputElement;\n const lastNameInput = orgProfileMemberForm.querySelector(\".org-member-profile__last-name\") as HTMLInputElement;\n const dateInput = orgProfileMemberForm.querySelector(\".org-member-profile__dob\") as HTMLInputElement;\n const countryInput = orgProfileMemberForm.querySelector(\".org-member-profile__country\") as HTMLSelectElement;\n\n const validations: NodeListOf = orgProfileMemberForm.querySelectorAll(\".org-member-profile__validation\");\n\n const firstNameValidation = orgProfileMemberForm.querySelector(\".org-member-profile__validation-first-name\") as HTMLSpanElement;\n const middleNameValidation = orgProfileMemberForm.querySelector(\".org-member-profile__validation-middle-name\") as HTMLSpanElement;\n const lastNameValidation = orgProfileMemberForm.querySelector(\".org-member-profile__validation-last-name\") as HTMLSpanElement;\n const dateValidation = orgProfileMemberForm.querySelector(\".org-member-profile__validation-dob\") as HTMLSpanElement;\n const countryValidation = orgProfileMemberForm.querySelector(\".org-member-profile__validation-country\") as HTMLSpanElement;\n\n let isFormValid = false;\n\n const resetValidation = () => {\n validations.forEach(item => {\n item.classList.remove(\"org-member-profile__validation--active\")\n })\n }\n\n const resetForm = () => {\n firstNameInput.value = \"\"\n lastNameInput.value = \"\"\n middleNameInput.value = \"\"\n dateInput.value = \"\"\n countryInput.value = \"\"\n\n countryInput.classList.remove(\"org-member-profile__country--active\")\n dateInput.classList.remove(\"org-member-profile__dob--active\")\n }\n\n const nameValidation = (name: string) => {\n const regex = /^[\\u0600-\\u06FFa-zA-Z\\s'-]+$/;\n return regex.test(name);\n};\n\n const validateForm = () => {\n isFormValid = true;\n\n if (!firstNameInput.value || !nameValidation(firstNameInput.value)) {\n firstNameValidation.classList.add(\"org-member-profile__validation--active\")\n firstNameValidation.textContent = \"First name is required and must contain only letters\"\n isFormValid = false;\n }\n\n if (middleNameInput.value && !nameValidation(middleNameInput.value)) {\n middleNameValidation.classList.add(\"org-member-profile__validation--active\")\n middleNameValidation.textContent = \"Middle name must contain only letters\"\n isFormValid = false;\n }\n\n if (!lastNameInput.value || !nameValidation(lastNameInput.value)) {\n lastNameValidation.classList.add(\"org-member-profile__validation--active\")\n lastNameValidation.textContent = \"Last name is required and must contain only letters\"\n isFormValid = false;\n }\n\n if (!dateInput.value) {\n dateValidation.classList.add(\"org-member-profile__validation--active\")\n isFormValid = false;\n }\n\n if (!countryInput.value) {\n countryValidation.classList.add(\"org-member-profile__validation--active\")\n isFormValid = false;\n }\n\n return isFormValid;\n }\n\n const listenForInputChanges = () => {\n firstNameInput.addEventListener(\"input\", () => {\n firstNameValidation.classList.remove(\"org-member-profile__validation--active\")\n })\n\n lastNameInput.addEventListener(\"input\", () => {\n lastNameValidation.classList.remove(\"org-member-profile__validation--active\")\n })\n\n dateInput.addEventListener(\"input\", () => {\n dateInput.classList.add(\"org-member-profile__dob--active\")\n dateValidation.classList.remove(\"org-member-profile__validation--active\")\n })\n countryInput.addEventListener(\"input\", () => {\n countryValidation.classList.remove(\"org-member-profile__validation--active\")\n countryInput.classList.add(\"org-member-profile__country--active\")\n })\n }\n\n listenForInputChanges()\n dateInput.setAttribute(\"max\", setMaxDateValue());\n\n orgProfileMemberForm.addEventListener(\"submit\", async e => {\n\n resetValidation()\n\n const formValues = {\n firstName: firstNameInput.value,\n middleName: middleNameInput.value,\n lastName: lastNameInput.value,\n dateOfBirth: dateInput.value,\n countryOfBirth: countryInput.value,\n };\n\n validateForm()\n\n if (isFormValid) {\n isFormValid = false\n }\n else {\n e.preventDefault();\n }\n });\n}","const orgProfile = document.querySelector(\".org-profile__wrapper\") as HTMLDivElement;\n\nif (orgProfile) {\n const orgProfileCards: NodeListOf = document.querySelectorAll(\".org-profile__card\");\n const orgProfileForms: NodeListOf = document.querySelectorAll(\".org-profile__form\");\n const orgProfileButton = document.querySelector(\".org-profile__next\") as HTMLButtonElement;\n\n const resetRegisterCards = () => {\n orgProfileCards.forEach(card => {\n card.classList.remove(\"org-profile__card--active\")\n })\n\n orgProfileForms.forEach(card => {\n card.classList.remove(\"org-profile__form--active\")\n })\n }\n\n const getCorrectInputs = () => {\n const activeForm = orgProfile.querySelector(\".org-profile__form--active\") as HTMLFormElement;\n\n const inputName = activeForm.querySelector(\".org-profile__name\") as HTMLInputElement;\n const inputNumber = activeForm.querySelector(\".org-profile__number\") as HTMLInputElement;\n\n var isBusinessNameValid = false;\n var isBusinessNumberValid = false;\n\n const numberValidation = (name: string) => {\n const regex = /^\\d+$/;\n return regex.test(name);\n };\n\n const validateBusinessName = (input: HTMLInputElement) => {\n const parent = input.parentElement as HTMLDivElement;\n const orgProfileNameValidation = parent.querySelector(\".org-profile__validation-business-name\") as HTMLDivElement;\n\n if (input.value.length > 0) {\n orgProfileNameValidation.classList.remove(\"org-profile__validation--active\");\n isBusinessNameValid = true;\n } else {\n orgProfileNameValidation.classList.add(\"org-profile__validation--active\");\n isBusinessNameValid = false;\n }\n };\n\n const validateBusinessNumber = (input: HTMLInputElement) => {\n const parent = input.parentElement as HTMLDivElement;\n const orgProfileNumberValidation = parent.querySelector(\".org-profile__validation-business-number\") as HTMLDivElement;\n\n if (input.value.length > 0 && numberValidation(input.value)) {\n orgProfileNumberValidation.classList.remove(\"org-profile__validation--active\");\n isBusinessNumberValid = true;\n } else {\n orgProfileNumberValidation.classList.add(\"org-profile__validation--active\");\n isBusinessNumberValid = false;\n }\n };\n\n const toggleSubmitButton = () => {\n if (isBusinessNameValid && isBusinessNumberValid) {\n orgProfileButton.disabled = false;\n } else {\n orgProfileButton.disabled = true;\n }\n };\n\n inputName.addEventListener(\"input\", (e: Event) => {\n const target = e.target as HTMLInputElement;\n validateBusinessName(target);\n toggleSubmitButton();\n });\n\n inputNumber.addEventListener(\"input\", (e: Event) => {\n const target = e.target as HTMLInputElement;\n validateBusinessNumber(target);\n toggleSubmitButton();\n });\n }\n\n const setActiveCard = (item: HTMLDivElement, index: number) => {\n resetRegisterCards()\n item.classList.add(\"org-profile__card--active\")\n orgProfileForms[index].classList.add(\"org-profile__form--active\");\n getCorrectInputs()\n }\n\n if (orgProfileCards.length > 0) {\n orgProfileCards[0].classList.add(\"org-profile__card--active\");\n orgProfileForms[0].classList.add(\"org-profile__form--active\");\n\n getCorrectInputs()\n\n orgProfileCards.forEach((card: HTMLDivElement, i: number) => {\n card.addEventListener(\"click\", () => {\n setActiveCard(card, i)\n })\n\n card.addEventListener(\"keydown\", e => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === \"Enter\") {\n setActiveCard(card, i)\n }\n })\n })\n\n document.querySelector(\".org-profile__next\").addEventListener(\"click\", function (e) {\n e.preventDefault();\n let activeForm = document.querySelector(\".org-profile__form--active\") as HTMLFormElement;\n activeForm.submit();\n });\n }\n}","const orgProfileConfirmComponent = document.querySelector(\".org-profile-confirm__wrapper\") as HTMLDivElement;\n\nif (orgProfileConfirmComponent) {\n const directors: NodeListOf = orgProfileConfirmComponent.querySelectorAll(\".org-profile-confirm__card\");\n const continueButton: HTMLButtonElement = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__next\");\n const selectDirectors: HTMLDivElement = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__select\");\n const selectedNumber: HTMLSpanElement = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__number\");\n const cardsContainer: HTMLDivElement = orgProfileConfirmComponent.querySelector(\".org-profile-confirm__cards\");\n\n const maxDirectors: number = 3;\n const moreThanThree = directors.length > maxDirectors;\n const selectedItems = [];\n const selectedNames: string[] = [];\n\n const director0: HTMLInputElement = document.querySelector('input[name=\"Director0\"]');\n const director1: HTMLInputElement = document.querySelector('input[name=\"Director1\"]');\n const director2: HTMLInputElement = document.querySelector('input[name=\"Director2\"]');\n\n const handleItems = (enableAll = false) => {\n if(enableAll) {\n directors.forEach(item => {\n item.style.pointerEvents = \"all\";\n item.setAttribute(\"tabindex\", \"0\");\n })\n } else if (!enableAll) {\n directors.forEach(item => {\n const radio = item.querySelector(\".org-profile-confirm__card-radio\") as HTMLInputElement;\n \n if(!radio.checked) {\n item.style.pointerEvents = \"none\";\n item.setAttribute(\"tabindex\", \"-1\");\n }\n })\n }\n }\n\n const handleDirectorClick = (item: HTMLDivElement, index: number) => {\n const radio = item.querySelector(\".org-profile-confirm__card-radio\") as HTMLInputElement;\n const name = item.querySelector(\".org-profile-confirm__card-title\").textContent.trim();\n\n if (selectedItems.length < maxDirectors && !radio.checked) {\n radio.checked = true;\n selectedItems.push(index);\n selectedNames.push(name);\n\n if (selectedNames.length > 0) director0.value = selectedNames[0];\n if (selectedNames.length > 1) director1.value = selectedNames[1];\n if (selectedNames.length > 2) director2.value = selectedNames[2];\n\n } else if (radio.checked) {\n radio.checked = false;\n selectedItems.splice(selectedItems.indexOf(index), 1);\n selectedNames.splice(selectedNames.indexOf(name), 1);\n } \n \n if(selectedItems.length > (maxDirectors - 1)) {\n continueButton.disabled = false;\n handleItems();\n\n } else {\n continueButton.disabled = true;\n handleItems(true);\n }\n\n selectedNumber.textContent = selectedItems.length.toString() + \"/\" + maxDirectors.toString();\n \n if(selectedItems.length === maxDirectors) {\n continueButton.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n\n const showMoreThanThreeContent = () => {\n cardsContainer.classList.add(\"org-profile-confirm__cards-select\");\n selectDirectors.classList.add(\"org-profile-confirm__select--active\");\n }\n\n if (moreThanThree) {\n continueButton.disabled = true;\n\n showMoreThanThreeContent();\n\n directors.forEach((item: HTMLInputElement, index: number) => {\n item.classList.add(\"org-profile-confirm__card-alt\");\n \n item.addEventListener(\"click\", () => {\n handleDirectorClick(item, index);\n })\n\n item.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n handleDirectorClick(item, index);\n }\n });\n });\n }\n}","const signUpOrganisation = document.querySelector(\".sign-in-details__form-organisation\") as HTMLFormElement;\n\nif (signUpOrganisation) {\n const emailInput = document.querySelector(\".sign-in-details__email\") as HTMLInputElement;\n const passwordInput = document.querySelector(\".sign-in-details__password\") as HTMLInputElement;\n const passwordAgainInput = document.querySelector(\".sign-in-details__password-again\") as HTMLInputElement;\n const passwordAgainValidation = document.querySelector(\".sign-in-details__validation-password-again\") as HTMLSpanElement;\n const signUpOrganisationEmailValidation = document.querySelector(\".sign-in-details__validation-email\") as HTMLElement;\n const criteriaItems = signUpOrganisation.querySelectorAll(\".sign-in-details__item\") as NodeListOf;\n const showPasswordButtons = signUpOrganisation.querySelectorAll(\".zmdi-eye\") as NodeListOf;\n const hidePasswordButtons = signUpOrganisation.querySelectorAll(\".zmdi-eye-off\") as NodeListOf;\n\n const regexPattern = signUpOrganisation.getAttribute(\"pattern\") as string || null;\n\n // validations are:\n // 0: six characters or more\n // 1: one lowercase letter\n // 2: one uppercase letter\n // 3: one number\n // 4: one symbol (!@#$&*)\n // full regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$&*])[A-Za-z\\d!@#$&*]{6,}$/\n\n let conditions = []\n let validations = [false]\n\n let formValidation = {\n email: false,\n password: false\n }\n\n var recaptcha = false;\n window.recaptcha = false;\n\n let isSubmitClickedFirstTime = false;\n\n // extract individual conditions from the regex pattern\n const extractConditions = (regexPattern: string) => {\n validations = [false];\n conditions = []\n\n conditions = regexPattern.match(/\\(\\?=(.*?)\\)|\\(\\?!(.*?)\\)|\\(\\?<=(.*?)\\)|\\(\\?<(.*?)\\)/g);\n\n conditions = conditions.filter(condition => condition !== null);\n\n // map each condition to a validation array\n conditions.map(condition => validations.push(false));\n };\n\n const showValidationMessage = () => {\n if (isSubmitClickedFirstTime) {\n passwordAgainValidation.classList.add(\"sign-in-details__validation--active\")\n }\n }\n\n const removeValidationMessage = () => {\n passwordAgainValidation.classList.remove(\"sign-in-details__validation--active\")\n }\n\n const validateEmail = (email: string) => {\n if (String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n )) {\n signUpOrganisationEmailValidation.classList.remove(\"sign-in-details__validation--active\")\n formValidation.email = true\n } else {\n signUpOrganisationEmailValidation.classList.add(\"sign-in-details__validation--active\")\n formValidation.email = false\n }\n };\n\n function validateRecaptcha () {\n window.recaptcha = true;\n }\n\n window.validateRecaptcha = validateRecaptcha;\n\n const validatePassword = (password: string): string | boolean[] => {\n extractConditions(regexPattern)\n\n if (password.length > 5) {\n validations[0] = true;\n }\n\n conditions.forEach((cond, index) => {\n if (new RegExp(cond).test(password)) {\n validations[index + 1] = true\n }\n })\n\n let isPasswordValid = false;\n\n if (passwordInput.value && validations.every(val => val === true)) {\n isPasswordValid = true\n removeValidationMessage()\n resetCriteriaItems()\n } else {\n showValidationMessage()\n }\n\n if (isPasswordValid) {\n formValidation.password = true\n } else {\n formValidation.password = false\n }\n\n return isPasswordValid ? \"Password is valid.\" : validations;\n }\n\n const resetCriteriaItems = () => {\n criteriaItems.forEach(item => {\n item.classList.remove(\"sign-in-details__item--active\")\n })\n }\n\n showPasswordButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n button.previousElementSibling.setAttribute(\"type\", \"text\");\n button.classList.remove(\"zmdi-eye--active\")\n button.nextElementSibling.classList.add(\"zmdi-eye-off--active\")\n })\n })\n\n hidePasswordButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n button.previousElementSibling.previousElementSibling.setAttribute(\"type\", \"password\");\n button.classList.remove(\"zmdi-eye-off--active\")\n button.previousElementSibling.classList.add(\"zmdi-eye--active\")\n })\n })\n\n emailInput.addEventListener(\"input\", () => {\n if (isSubmitClickedFirstTime) {\n validateEmail(emailInput.value)\n }\n })\n\n passwordInput.addEventListener(\"input\", () => {\n validatePassword(passwordInput.value)\n\n for (let i = 0; i < criteriaItems.length; i++) {\n if (validations[i] === true) {\n criteriaItems[i].classList.add(\"sign-in-details__item--active\")\n } else {\n criteriaItems[i].classList.remove(\"sign-in-details__item--active\")\n }\n }\n })\n\n passwordAgainInput.addEventListener(\"input\", () => {\n removeValidationMessage()\n })\n\n signUpOrganisation.addEventListener(\"submit\", async e => {\n isSubmitClickedFirstTime = true\n\n if (passwordInput.value !== passwordAgainInput.value) {\n showValidationMessage()\n }\n\n validateEmail(emailInput.value)\n\n const formValues = {\n email: emailInput.value,\n password: passwordInput.value,\n };\n\n if (formValidation.email === true \n && formValidation.password === true \n && passwordInput.value === passwordAgainInput.value\n && window.recaptcha === true) {\n formValidation = {\n email: false,\n password: false\n }\n\n resetCriteriaItems()\n } else {\n e.preventDefault();\n window.recaptcha = false;\n }\n });\n\n if (regexPattern) {\n extractConditions(regexPattern)\n }\n}","import axios from \"axios\";\n\nconst paymentsComponent = document.querySelector('.payments__wrapper') as HTMLDivElement;\n\nif (paymentsComponent) {\n const paymentsList = paymentsComponent.querySelector('.payments__list') as Element;\n const paymentsRight = paymentsComponent.querySelector('.payments__right') as HTMLDivElement;\n const searchInput = paymentsComponent.querySelector('.payments__search') as HTMLInputElement;\n const paymentDates = paymentsComponent.querySelector('.payments__dates') as HTMLDivElement;\n const dateInput1 = paymentDates.querySelector('.payments__date-1') as HTMLInputElement;\n const dateInput2 = paymentDates.querySelector('.payments__date-2') as HTMLInputElement;\n const paymentDateButton = paymentsComponent.querySelector('.payments__button') as HTMLButtonElement;\n\n let reachedEnd: boolean = false;\n let lastTransactionId = 0;\n let increment: number = 12;\n let fetchingData: boolean = false;\n let startDate: string | null = null;\n let endDate: string | null = null;\n let searchTerm: string | null = null;\n let db: any[] = [];\n\n const fetchData = async (isScroll: boolean) => {\n if (fetchingData || reachedEnd) {\n return;\n }\n\n fetchingData = true;\n\n showLoader();\n\n try {\n // For development:\n // const response = (await axios.get(\"https://localhost:44323/api/payments/getAllPayments\", {\n // params: {\n // pageIncrement: increment,\n // lastTransactionId,\n // startDate,\n // endDate,\n // searchTerm\n // },\n // })).data;\n\n const response = (await axios.get(\"/api/payments/getAllPayments\", {\n params: {\n pageIncrement: increment,\n lastTransactionId,\n startDate,\n endDate,\n searchTerm\n },\n })).data;\n\n lastTransactionId = response.lastTransactionId;\n reachedEnd = response.reachedEnd;\n const newData = response.transactions;\n db.push(...newData);\n\n generateHtml(db);\n\n if (reachedEnd) {\n paymentsList.innerHTML +=\n '
  • End of results
  • ';\n }\n\n fetchingData = false;\n\n hideLoader();\n\n afterData();\n\n if (isScroll) {\n const scrollThreshold = 900;\n const bottomScrollPosition = paymentsList.scrollHeight - scrollThreshold;\n paymentsList.scrollTo({ top: bottomScrollPosition, behavior: 'smooth' });\n }\n\n fetchingData = false;\n } catch (error) {\n console.log(error);\n }\n };\n\n const generateHtml = (data) => {\n renderList(data);\n renderPayment(data);\n };\n\n const renderList = (data) => {\n const container: Element = paymentsList;\n if (!container) return;\n\n container.innerHTML =\n '
  • \"loading
  • ';\n\n data.forEach((item) => {\n const html = renderListItem(item);\n container.innerHTML += html;\n });\n };\n\n const formatAmount = (amount: string): string => {\n const numericAmount = parseFloat(amount.toString().replace(/[^0-9.-]+/g, ''));\n \n return numericAmount.toFixed(2);\n };\n \n const formatAmountWithCurrency = (item) => {\n const formattedAmount = formatAmount(item.amount.value);\n const currencySymbol = item.amount.currencySymbol;\n return formattedAmount.includes(currencySymbol) ? formattedAmount : `${currencySymbol}${formattedAmount}`;\n };\n\nconst renderListItem = (item) => {\n const status: string = item.status || \"\"\n item.amount.value = formatAmountWithCurrency(item);\n\n const html = `\n
  • \n

    ${item.title}

    \n
    \n

    ${item.amount.value}

    \n\n ${status === \"delivered\" ? (\n `\n
    \n \n
    \n `\n ) : \"\"}\n\n ${status === \"rejected\" ? (\n `\n
    \n \n
    \n `\n ) : \"\"}\n\n ${status === \"in progress\" ? (\n `\n
    \n
    \n
    \n
    \n
    \n `\n ) : \"\"}\n\n ${status === \"pending\" ? (\n `\n
    \n
    \n
    \n
    \n
    \n `\n ) : \"\"}\n\n

    ${item.dateValue}

    \n
    \n \n
  • \n`;\n\n return html;\n};\n\n const renderPayment = (data) => {\n const container = paymentsRight;\n\n if (!container) return;\n\n container.innerHTML = '';\n\n data.forEach((item) => {\n const html = renderPaymentItem(item);\n container.innerHTML += html;\n });\n };\n\n const renderPaymentItem = (item) => {\n const payAgainText: string = paymentsRight.getAttribute('data-pay-again');\n const receiptText: string = paymentsRight.getAttribute('data-receipt');\n const paymentTitle: string = paymentsRight.getAttribute('data-pay-title');\n const paymentCaption: string = paymentsRight.getAttribute('data-pay-caption');\n const transferPurposeTitle: string = paymentsRight.getAttribute('data-purpose');\n const sentText: string = paymentsRight.getAttribute('data-sent');\n const exchangeRateText: string = paymentsRight.getAttribute('data-exchange');\n const totalPaidText: string = paymentsRight.getAttribute('data-total');\n const payoutCountryText: string = paymentsRight.getAttribute('data-country');\n const payoutMethodText: string = paymentsRight.getAttribute('data-method');\n const amanacardNumberText: string = paymentsRight.getAttribute('data-number');\n const paymentMethodText: string = paymentsRight.getAttribute('data-payment-method');\n const referenceNumberText: string = paymentsRight.getAttribute('data-reference-number');\n\n const status: string = item.status || \"\";\n const lastUpdated: string = item.lastUpdated || \"\";\n const paymentInProgressStatusTitle: string = paymentsRight.getAttribute('data-status-in-progress-title') || \"\";\n const paymentInProgressStatusSubtitle: string = paymentsRight.getAttribute('data-status-in-progress-subtitle') || \"\";\n const paymentPendingStatusTitle: string = paymentsRight.getAttribute('data-status-pending-title') || \"\";\n const paymentPendingStatusSubtitle: string = paymentsRight.getAttribute('data-status-pending-subtitle') || \"\";\n const paymentRejectedStatusTitle: string = paymentsRight.getAttribute('data-status-rejected-title') || \"\";\n const paymentRejectedStatusSubtitle: string = paymentsRight.getAttribute('data-status-rejected-subtitle') || \"\";\n const paymentDeliveredStatusTitle: string = paymentsRight.getAttribute('data-status-delivered-title') || \"\";\n const paymentDeliveredStatusSubtitle: string = paymentsRight.getAttribute('data-status-delivered-subtitle') || \"\";\n const lastUpdatedText: string = paymentsRight.getAttribute('data-last-updated') || \"\";\n\n const html = `\n
    \n
    \n

    \n ${item.dateValue}\n

    \n
    \n ${payAgainText && item.payAgainUrl && (\n `\n ${payAgainText}\n `\n )}\n ${receiptText && item.receiptUrl && (\n `\n ${receiptText}\n `\n )}\n
    \n
    \n
    \n
    \n
    \n \n ${item.amount.value}\n \n \n ${item.amount1.currency}\n \n
    \n \n
    \n \n ${item.amount2.value}\n \n \n ${item.amount2.currency}\n \n
    \n
    \n

    \n ${paymentTitle}\n

    \n
    \n

    \n ${paymentCaption}\n

    \n
    \n\n ${status === \"in progress\" ? (\n `\n
    \n
    ${paymentInProgressStatusTitle}
    \n
    \n
    \n
    \n

    ${paymentInProgressStatusSubtitle}

    \n

    ${lastUpdatedText} ${lastUpdated}

    \n
    \n `\n ) : \"\"}\n \n ${status === \"pending\" ? (\n `\n
    \n
    ${paymentPendingStatusTitle}
    \n
    \n
    \n
    \n

    ${paymentPendingStatusSubtitle}

    \n

    ${lastUpdatedText} ${lastUpdated}

    \n
    \n `\n ) : \"\"}\n \n ${status === \"rejected\" ? (\n `\n
    \n
    ${paymentRejectedStatusTitle}
    \n
    \n
    \n
    \n

    ${paymentRejectedStatusSubtitle}

    \n

    ${lastUpdatedText} ${lastUpdated}

    \n
    \n `\n ) : \"\"}\n \n ${status === \"delivered\" ? (\n `\n
    \n
    ${paymentDeliveredStatusTitle}
    \n
    \n
    \n
    \n

    ${paymentDeliveredStatusSubtitle}

    \n

    ${lastUpdatedText} ${lastUpdated}

    \n
    \n `\n ) : \"\"}\n\n
    \n

    ${transferPurposeTitle}

    \n

    ${item.transferPurposeText}

    \n
    \n
      \n
    • \n

      ${sentText}

      \n

      ${item.amount.value}

      \n
    • \n
    • \n

      ${exchangeRateText}

      \n

      ${item.exchangeRate}

      \n
    • \n
    • \n

      ${totalPaidText}

      \n

      ${item.totalPaid}

      \n
    • \n
    • \n

      ${paymentMethodText}

      \n

      ${item.paymentMethod}

      \n
    • \n
    • \n

      ${referenceNumberText}

      \n

      ${item.referenceNumber}

      \n
    • \n
    • \n

      ${payoutCountryText}

      \n

      ${item.payoutCountry}

      \n
    • \n
    • \n

      ${payoutMethodText}

      \n

      ${item.payoutMethod}

      \n
    • \n
    • \n

      ${amanacardNumberText}

      \n

      ${item.amanacardNumber}

      \n
    • \n
    \n
    \n \n \n
    \n
    \n `;\n\n return html;\n };\n\n const isScrolledToBottom = () => {\n const scrollThreshold: number = 100;\n\n return paymentsList.scrollTop + paymentsList.clientHeight >= paymentsList.scrollHeight - scrollThreshold;\n };\n\n paymentsList.addEventListener('scroll', () => {\n if (isScrolledToBottom()) {\n fetchData(true);\n }\n });\n\n const resetDb = () => {\n db = [];\n reachedEnd = false;\n lastTransactionId = null;\n }\n\n dateInput1.addEventListener('change', (e) => {\n const target = e.target as HTMLInputElement;\n startDate = formatDate(new Date(target.value)) as string;\n\n const today = formatDate(new Date()) as string;\n dateInput1.max = today\n dateInput2.max = today\n dateInput2.min = startDate\n\n if(startDate > endDate){\n dateInput2.value = startDate;\n } else {\n dateInput1.max = endDate\n }\n\n resetDb();\n fetchData(false);\n });\n\n dateInput2.addEventListener('change', (e) => {\n const target = e.target as HTMLInputElement;\n endDate = formatDate(new Date(target.value)) as string;\n dateInput1.max = endDate\n\n if(startDate > endDate) {\n dateInput1.value = endDate\n }\n\n resetDb();\n fetchData(false);\n });\n\n paymentDateButton.addEventListener('click', () => {\n if (paymentDates.classList.contains('payments__dates--active')) {\n paymentDates.classList.remove('payments__dates--active');\n paymentDateButton.classList.remove(\"payments__button--active\")\n } else {\n paymentDates.classList.add('payments__dates--active');\n paymentDateButton.classList.add(\"payments__button--active\")\n }\n });\n\n const showLoader = () => {\n const paymentsLoader = paymentsComponent.querySelector('.payments__loader') as HTMLDivElement;\n const items: NodeListOf = paymentsComponent.querySelectorAll('.payments__item');\n\n items.forEach((item) => {\n item.classList.add('payments__item--hidden');\n });\n\n paymentsLoader.classList.add('payments__loader--active');\n };\n\n const hideLoader = () => {\n const paymentsLoader = paymentsComponent.querySelector('.payments__loader') as HTMLDivElement;\n const items: NodeListOf = paymentsComponent.querySelectorAll('.payments__item');\n\n items.forEach((item) => {\n item.classList.remove('payments__item--hidden');\n });\n\n paymentsLoader.classList.remove('payments__loader--active');\n };\n\n const formatDate = (date: Date) => {\n return date.toISOString().split('T')[0];\n };\n\n const afterData = () => {\n const paymentsBack = paymentsComponent.querySelector('.payments__back') as HTMLButtonElement;\n const paymentCards: NodeListOf = paymentsComponent.querySelectorAll('.payments__item');\n\n const resetCards = () => {\n const newPaymentCards: NodeListOf = paymentsComponent.querySelectorAll('.payments__item');\n\n newPaymentCards.forEach((card: Element) => {\n card.classList.remove('payments__item--active');\n });\n };\n\n const resetDetails = () => {\n const newPaymentDetails: NodeListOf =\n paymentsComponent.querySelectorAll('.payments__details');\n\n newPaymentDetails.forEach((item: HTMLDivElement) => {\n paymentsRight.classList.remove('payments__right--active');\n item.classList.remove('payments__details--active');\n });\n\n paymentsBack.classList.remove('payments__back--active');\n };\n\n const handleCardSelect = (card: Element, index: number) => {\n const newPaymentDetails: NodeListOf =\n paymentsComponent.querySelectorAll('.payments__details');\n\n resetCards();\n resetDetails();\n\n card.classList.add('payments__item--active');\n paymentsRight.classList.add('payments__right--active');\n newPaymentDetails[index].classList.add('payments__details--active');\n paymentsBack.classList.add('payments__back--active');\n\n if (window.innerWidth < 768) {\n newPaymentDetails[index].focus();\n\n window.scrollTo({ top: 0, behavior: 'smooth' });\n\n newPaymentDetails[index].addEventListener('keydown', (e) => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === 'Escape') {\n resetCards();\n resetDetails();\n }\n });\n }\n };\n\n if (window.innerWidth > 768) {\n const newPaymentDetails: NodeListOf =\n paymentsComponent.querySelectorAll('.payments__details');\n const newPaymentCards: NodeListOf = paymentsComponent.querySelectorAll('.payments__item');\n\n if (newPaymentDetails.length > 0) {\n newPaymentDetails[0].classList.add('payments__details--active');\n newPaymentCards[0].classList.add('payments__item--active');\n }\n }\n\n let timeoutId: NodeJS.Timeout;\n\n searchInput.addEventListener('input', (e: Event) => {\n const target = e.target as HTMLInputElement;\n searchTerm = target.value.trim().toLowerCase();\n\n clearTimeout(timeoutId);\n\n timeoutId = setTimeout(() => {\n resetDb();\n fetchData(false);\n }, 1000);\n });\n\n paymentCards.forEach((card: Element, i: number) => {\n card.addEventListener('click', () => {\n handleCardSelect(card, i);\n });\n\n card.addEventListener('keydown', (e) => {\n const keyboardEvent = e;\n\n if (keyboardEvent.key === 'Enter') {\n handleCardSelect(card, i);\n }\n });\n });\n\n paymentsBack.addEventListener('click', () => {\n resetCards();\n resetDetails();\n });\n };\n\n const setDefaultDates = () => {\n const today = new Date() as Date;\n const oneMonthAgo = new Date(today);\n oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1);\n\n if (oneMonthAgo.getMonth() === 1 && oneMonthAgo.getDate() === 29) {\n oneMonthAgo.setDate(28);\n }\n\n endDate = formatDate(today) as string;\n startDate = formatDate(oneMonthAgo) as string;\n\n dateInput1.value = startDate;\n dateInput2.value = endDate;\n dateInput1.min = formatDate(new Date(2000, 0, 1))\n dateInput2.min = startDate\n dateInput1.max = endDate\n dateInput2.max = endDate\n };\n\n setDefaultDates();\n\n fetchData(false);\n}\n","module.exports=[\n {\n \"Country Name\": \"Afghanistan\",\n \"ISO2\": \"AF\",\n \"ISO3\": \"AFG\",\n \"Top Level Domain\": \"af\",\n \"FIPS\": \"AF\",\n \"ISO Numeric\": \"004\",\n \"GeoNameID\": 1149361,\n \"E164\": 93,\n \"Phone Code\": 93,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kabul\",\n \"Time Zone in Capital\": \"Asia/Kabul\",\n \"Currency\": \"Afghani\",\n \"Language Codes\": \"fa-AF,ps,uz-AF,tk\",\n \"Languages\": \"Afghan Persian or Dari (official) 50%, Pashto (official) 35%, Turkic languages (primarily Uzbek and Turkmen) 11%, 30 minor languages (primarily Balochi and Pashai) 4%, much bilingualism, but Dari functions as the lingua franca\",\n \"Area KM2\": 647500,\n \"Internet Hosts\": 223,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 18000000,\n \"Phones (Landline)\": 13500,\n \"GDP\": 20650000000\n },\n {\n \"Country Name\": \"Albania\",\n \"ISO2\": \"AL\",\n \"ISO3\": \"ALB\",\n \"Top Level Domain\": \"al\",\n \"FIPS\": \"AL\",\n \"ISO Numeric\": \"008\",\n \"GeoNameID\": 783754,\n \"E164\": 355,\n \"Phone Code\": 355,\n \"Continent\": \"Europe\",\n \"Capital\": \"Tirana\",\n \"Time Zone in Capital\": \"Europe/Tirane\",\n \"Currency\": \"Lek\",\n \"Language Codes\": \"sq,el\",\n \"Languages\": \"Albanian 98.8% (official - derived from Tosk dialect), Greek 0.5%, other 0.6% (including Macedonian, Roma, Vlach, Turkish, Italian, and Serbo-Croatian), unspecified 0.1% (2011 est.)\",\n \"Area KM2\": 28748,\n \"Internet Hosts\": 15528,\n \"Internet Users\": 1300000,\n \"Phones (Mobile)\": 3500000,\n \"Phones (Landline)\": 312000,\n \"GDP\": 12800000000\n },\n {\n \"Country Name\": \"Algeria\",\n \"ISO2\": \"DZ\",\n \"ISO3\": \"DZA\",\n \"Top Level Domain\": \"dz\",\n \"FIPS\": \"AG\",\n \"ISO Numeric\": \"012\",\n \"GeoNameID\": 2589581,\n \"E164\": 213,\n \"Phone Code\": 213,\n \"Continent\": \"Africa\",\n \"Capital\": \"Algiers\",\n \"Time Zone in Capital\": \"Africa/Algiers\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-DZ\",\n \"Languages\": \"Arabic (official), French (lingua franca), Berber dialects: Kabylie Berber (Tamazight), Chaouia Berber (Tachawit), Mzab Berber, Tuareg Berber (Tamahaq)\",\n \"Area KM2\": 2381740,\n \"Internet Hosts\": 676,\n \"Internet Users\": 4700000,\n \"Phones (Mobile)\": 37692000,\n \"Phones (Landline)\": 3200000,\n \"GDP\": 215700000000\n },\n {\n \"Country Name\": \"American Samoa\",\n \"ISO2\": \"AS\",\n \"ISO3\": \"ASM\",\n \"Top Level Domain\": \"as\",\n \"FIPS\": \"AQ\",\n \"ISO Numeric\": \"016\",\n \"GeoNameID\": 5880801,\n \"E164\": 1,\n \"Phone Code\": \"1-684\",\n \"Continent\": \"Oceania\",\n \"Capital\": \"Pago Pago\",\n \"Time Zone in Capital\": \"Pacific/Pago_Pago\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AS,sm,to\",\n \"Languages\": \"Samoan 90.6% (closely related to Hawaiian and other Polynesian languages), English 2.9%, Tongan 2.4%, other Pacific islander 2.1%, other 2%\",\n \"Area KM2\": 199,\n \"Internet Hosts\": 2387,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": 10000,\n \"GDP\": 462200000\n },\n {\n \"Country Name\": \"Andorra\",\n \"ISO2\": \"AD\",\n \"ISO3\": \"AND\",\n \"Top Level Domain\": \"ad\",\n \"FIPS\": \"AN\",\n \"ISO Numeric\": \"020\",\n \"GeoNameID\": 3041565,\n \"E164\": 376,\n \"Phone Code\": 376,\n \"Continent\": \"Europe\",\n \"Capital\": \"Andorra la Vella\",\n \"Time Zone in Capital\": \"Europe/Andorra\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"ca\",\n \"Languages\": \"Catalan (official), French, Castilian, Portuguese\",\n \"Area KM2\": 468,\n \"Internet Hosts\": 28383,\n \"Internet Users\": 67100,\n \"Phones (Mobile)\": 65000,\n \"Phones (Landline)\": 39000,\n \"GDP\": 4800000000\n },\n {\n \"Country Name\": \"Angola\",\n \"ISO2\": \"AO\",\n \"ISO3\": \"AGO\",\n \"Top Level Domain\": \"ao\",\n \"FIPS\": \"AO\",\n \"ISO Numeric\": \"024\",\n \"GeoNameID\": 3351879,\n \"E164\": 244,\n \"Phone Code\": 244,\n \"Continent\": \"Africa\",\n \"Capital\": \"Luanda\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Kwanza\",\n \"Language Codes\": \"pt-AO\",\n \"Languages\": \"Portuguese (official), Bantu and other African languages\",\n \"Area KM2\": 1246700,\n \"Internet Hosts\": 20703,\n \"Internet Users\": 606700,\n \"Phones (Mobile)\": 9800000,\n \"Phones (Landline)\": 303000,\n \"GDP\": 124000000000\n },\n {\n \"Country Name\": \"Anguilla\",\n \"ISO2\": \"AI\",\n \"ISO3\": \"AIA\",\n \"Top Level Domain\": \"ai\",\n \"FIPS\": \"AV\",\n \"ISO Numeric\": 660,\n \"GeoNameID\": 3573511,\n \"E164\": 1,\n \"Phone Code\": \"1-264\",\n \"Continent\": \"North America\",\n \"Capital\": \"The Valley\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AI\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 102,\n \"Internet Hosts\": 269,\n \"Internet Users\": 3700,\n \"Phones (Mobile)\": 26000,\n \"Phones (Landline)\": 6000,\n \"GDP\": 175400000\n },\n {\n \"Country Name\": \"Antarctica\",\n \"ISO2\": \"AQ\",\n \"ISO3\": \"ATA\",\n \"Top Level Domain\": \"aq\",\n \"FIPS\": \"AY\",\n \"ISO Numeric\": \"010\",\n \"GeoNameID\": 6697173,\n \"E164\": 672,\n \"Phone Code\": 672,\n \"Continent\": \"Antarctica\",\n \"Capital\": \"\",\n \"Time Zone in Capital\": \"Antarctica/Troll\",\n \"Currency\": \"\",\n \"Language Codes\": \"\",\n \"Languages\": \"\",\n \"Area KM2\": 14000000,\n \"Internet Hosts\": 7764,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Antigua and Barbuda\",\n \"ISO2\": \"AG\",\n \"ISO3\": \"ATG\",\n \"Top Level Domain\": \"ag\",\n \"FIPS\": \"AC\",\n \"ISO Numeric\": \"028\",\n \"GeoNameID\": 3576396,\n \"E164\": 1,\n \"Phone Code\": \"1-268\",\n \"Continent\": \"North America\",\n \"Capital\": \"St. John's\",\n \"Time Zone in Capital\": \"America/Antigua\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AG\",\n \"Languages\": \"English (official), local dialects\",\n \"Area KM2\": 443,\n \"Internet Hosts\": 11532,\n \"Internet Users\": 65000,\n \"Phones (Mobile)\": 179800,\n \"Phones (Landline)\": 35000,\n \"GDP\": 1220000000\n },\n {\n \"Country Name\": \"Argentina\",\n \"ISO2\": \"AR\",\n \"ISO3\": \"ARG\",\n \"Top Level Domain\": \"ar\",\n \"FIPS\": \"AR\",\n \"ISO Numeric\": \"032\",\n \"GeoNameID\": 3865483,\n \"E164\": 54,\n \"Phone Code\": 54,\n \"Continent\": \"South America\",\n \"Capital\": \"Buenos Aires\",\n \"Time Zone in Capital\": \"America/Argentina/Buenos_Aires\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-AR,en,it,de,fr,gn\",\n \"Languages\": \"Spanish (official), Italian, English, German, French, indigenous (Mapudungun, Quechua)\",\n \"Area KM2\": 2766890,\n \"Internet Hosts\": 11232000,\n \"Internet Users\": 13694000,\n \"Phones (Mobile)\": 58600000,\n \"Phones (Landline)\": 1,\n \"GDP\": 484600000000\n },\n {\n \"Country Name\": \"Armenia\",\n \"ISO2\": \"AM\",\n \"ISO3\": \"ARM\",\n \"Top Level Domain\": \"am\",\n \"FIPS\": \"AM\",\n \"ISO Numeric\": \"051\",\n \"GeoNameID\": 174982,\n \"E164\": 374,\n \"Phone Code\": 374,\n \"Continent\": \"Asia\",\n \"Capital\": \"Yerevan\",\n \"Time Zone in Capital\": \"Asia/Yerevan\",\n \"Currency\": \"Dram\",\n \"Language Codes\": \"hy\",\n \"Languages\": \"Armenian (official) 97.9%, Kurdish (spoken by Yezidi minority) 1%, other 1% (2011 est.)\",\n \"Area KM2\": 29800,\n \"Internet Hosts\": 194142,\n \"Internet Users\": 208200,\n \"Phones (Mobile)\": 3223000,\n \"Phones (Landline)\": 584000,\n \"GDP\": 10440000000\n },\n {\n \"Country Name\": \"Aruba\",\n \"ISO2\": \"AW\",\n \"ISO3\": \"ABW\",\n \"Top Level Domain\": \"aw\",\n \"FIPS\": \"AA\",\n \"ISO Numeric\": 533,\n \"GeoNameID\": 3577279,\n \"E164\": 297,\n \"Phone Code\": 297,\n \"Continent\": \"North America\",\n \"Capital\": \"Oranjestad\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl-AW,es,en\",\n \"Languages\": \"Papiamento (a Spanish-Portuguese-Dutch-English dialect) 69.4%, Spanish 13.7%, English (widely spoken) 7.1%, Dutch (official) 6.1%, Chinese 1.5%, other 1.7%, unspecified 0.4% (2010 est.)\",\n \"Area KM2\": 193,\n \"Internet Hosts\": 40560,\n \"Internet Users\": 24000,\n \"Phones (Mobile)\": 135000,\n \"Phones (Landline)\": 43000,\n \"GDP\": 2516000000\n },\n {\n \"Country Name\": \"Australia\",\n \"ISO2\": \"AU\",\n \"ISO3\": \"AUS\",\n \"Top Level Domain\": \"au\",\n \"FIPS\": \"AS\",\n \"ISO Numeric\": \"036\",\n \"GeoNameID\": 2077456,\n \"E164\": 61,\n \"Phone Code\": 61,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Canberra\",\n \"Time Zone in Capital\": \"Australia/Sydney\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-AU\",\n \"Languages\": \"English 76.8%, Mandarin 1.6%, Italian 1.4%, Arabic 1.3%, Greek 1.2%, Cantonese 1.2%, Vietnamese 1.1%, other 10.4%, unspecified 5% (2011 est.)\",\n \"Area KM2\": 7686850,\n \"Internet Hosts\": 17081000,\n \"Internet Users\": 15810000,\n \"Phones (Mobile)\": 24400000,\n \"Phones (Landline)\": 10470000,\n \"GDP\": 1488000000000\n },\n {\n \"Country Name\": \"Austria\",\n \"ISO2\": \"AT\",\n \"ISO3\": \"AUT\",\n \"Top Level Domain\": \"at\",\n \"FIPS\": \"AU\",\n \"ISO Numeric\": \"040\",\n \"GeoNameID\": 2782113,\n \"E164\": 43,\n \"Phone Code\": 43,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vienna\",\n \"Time Zone in Capital\": \"Europe/Vienna\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"de-AT,hr,hu,sl\",\n \"Languages\": \"German (official nationwide) 88.6%, Turkish 2.3%, Serbian 2.2%, Croatian (official in Burgenland) 1.6%, other (includes Slovene, official in Carinthia, and Hungarian, official in Burgenland) 5.3% (2001 census)\",\n \"Area KM2\": 83858,\n \"Internet Hosts\": 3512000,\n \"Internet Users\": 6143000,\n \"Phones (Mobile)\": 13590000,\n \"Phones (Landline)\": 3342000,\n \"GDP\": 417900000000\n },\n {\n \"Country Name\": \"Azerbaijan\",\n \"ISO2\": \"AZ\",\n \"ISO3\": \"AZE\",\n \"Top Level Domain\": \"az\",\n \"FIPS\": \"AJ\",\n \"ISO Numeric\": \"031\",\n \"GeoNameID\": 587116,\n \"E164\": 994,\n \"Phone Code\": 994,\n \"Continent\": \"Asia\",\n \"Capital\": \"Baku\",\n \"Time Zone in Capital\": \"Asia/Baku\",\n \"Currency\": \"Manat\",\n \"Language Codes\": \"az,ru,hy\",\n \"Languages\": \"Azerbaijani (Azeri) (official) 92.5%, Russian 1.4%, Armenian 1.4%, other 4.7% (2009 est.)\",\n \"Area KM2\": 86600,\n \"Internet Hosts\": 46856,\n \"Internet Users\": 2420000,\n \"Phones (Mobile)\": 10125000,\n \"Phones (Landline)\": 1734000,\n \"GDP\": 76010000000\n },\n {\n \"Country Name\": \"Bahamas\",\n \"ISO2\": \"BS\",\n \"ISO3\": \"BHS\",\n \"Top Level Domain\": \"bs\",\n \"FIPS\": \"BF\",\n \"ISO Numeric\": \"044\",\n \"GeoNameID\": 3572887,\n \"E164\": 1,\n \"Phone Code\": \"1-242\",\n \"Continent\": \"North America\",\n \"Capital\": \"Nassau\",\n \"Time Zone in Capital\": \"America/Nassau\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BS\",\n \"Languages\": \"English (official), Creole (among Haitian immigrants)\",\n \"Area KM2\": 13940,\n \"Internet Hosts\": 20661,\n \"Internet Users\": 115800,\n \"Phones (Mobile)\": 254000,\n \"Phones (Landline)\": 137000,\n \"GDP\": 8373000000\n },\n {\n \"Country Name\": \"Bahrain\",\n \"ISO2\": \"BH\",\n \"ISO3\": \"BHR\",\n \"Top Level Domain\": \"bh\",\n \"FIPS\": \"BA\",\n \"ISO Numeric\": \"048\",\n \"GeoNameID\": 290291,\n \"E164\": 973,\n \"Phone Code\": 973,\n \"Continent\": \"Asia\",\n \"Capital\": \"Manama\",\n \"Time Zone in Capital\": \"Asia/Bahrain\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-BH,en,fa,ur\",\n \"Languages\": \"Arabic (official), English, Farsi, Urdu\",\n \"Area KM2\": 665,\n \"Internet Hosts\": 47727,\n \"Internet Users\": 419500,\n \"Phones (Mobile)\": 2125000,\n \"Phones (Landline)\": 290000,\n \"GDP\": 28360000000\n },\n {\n \"Country Name\": \"Bangladesh\",\n \"ISO2\": \"BD\",\n \"ISO3\": \"BGD\",\n \"Top Level Domain\": \"bd\",\n \"FIPS\": \"BG\",\n \"ISO Numeric\": \"050\",\n \"GeoNameID\": 1210997,\n \"E164\": 880,\n \"Phone Code\": 880,\n \"Continent\": \"Asia\",\n \"Capital\": \"Dhaka\",\n \"Time Zone in Capital\": \"Asia/Dhaka\",\n \"Currency\": \"Taka\",\n \"Language Codes\": \"bn-BD,en\",\n \"Languages\": \"Bangla (official, also known as Bengali), English\",\n \"Area KM2\": 144000,\n \"Internet Hosts\": 71164,\n \"Internet Users\": 617300,\n \"Phones (Mobile)\": 97180000,\n \"Phones (Landline)\": 962000,\n \"GDP\": 140200000000\n },\n {\n \"Country Name\": \"Barbados\",\n \"ISO2\": \"BB\",\n \"ISO3\": \"BRB\",\n \"Top Level Domain\": \"bb\",\n \"FIPS\": \"BB\",\n \"ISO Numeric\": \"052\",\n \"GeoNameID\": 3374084,\n \"E164\": 1,\n \"Phone Code\": \"1-246\",\n \"Continent\": \"North America\",\n \"Capital\": \"Bridgetown\",\n \"Time Zone in Capital\": \"America/Barbados\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BB\",\n \"Languages\": \"English (official), Bajan (English-based creole language, widely spoken in informal settings)\",\n \"Area KM2\": 431,\n \"Internet Hosts\": 1524,\n \"Internet Users\": 188000,\n \"Phones (Mobile)\": 347000,\n \"Phones (Landline)\": 144000,\n \"GDP\": 4262000000\n },\n {\n \"Country Name\": \"Belarus\",\n \"ISO2\": \"BY\",\n \"ISO3\": \"BLR\",\n \"Top Level Domain\": \"by\",\n \"FIPS\": \"BO\",\n \"ISO Numeric\": 112,\n \"GeoNameID\": 630336,\n \"E164\": 375,\n \"Phone Code\": 375,\n \"Continent\": \"Europe\",\n \"Capital\": \"Minsk\",\n \"Time Zone in Capital\": \"Europe/Minsk\",\n \"Currency\": \"Ruble\",\n \"Language Codes\": \"be,ru\",\n \"Languages\": \"Belarusian (official) 23.4%, Russian (official) 70.2%, other 3.1% (includes small Polish- and Ukrainian-speaking minorities), unspecified 3.3% (2009 est.)\",\n \"Area KM2\": 207600,\n \"Internet Hosts\": 295217,\n \"Internet Users\": 2643000,\n \"Phones (Mobile)\": 10675000,\n \"Phones (Landline)\": 4407000,\n \"GDP\": 69240000000\n },\n {\n \"Country Name\": \"Belgium\",\n \"ISO2\": \"BE\",\n \"ISO3\": \"BEL\",\n \"Top Level Domain\": \"be\",\n \"FIPS\": \"BE\",\n \"ISO Numeric\": \"056\",\n \"GeoNameID\": 2802361,\n \"E164\": 32,\n \"Phone Code\": 32,\n \"Continent\": \"Europe\",\n \"Capital\": \"Brussels\",\n \"Time Zone in Capital\": \"Europe/Brussels\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"nl-BE,fr-BE,de-BE\",\n \"Languages\": \"Dutch (official) 60%, French (official) 40%, German (official) less than 1%, legally bilingual (Dutch and French)\",\n \"Area KM2\": 30510,\n \"Internet Hosts\": 5192000,\n \"Internet Users\": 8113000,\n \"Phones (Mobile)\": 12880000,\n \"Phones (Landline)\": 4631000,\n \"GDP\": 507400000000\n },\n {\n \"Country Name\": \"Belize\",\n \"ISO2\": \"BZ\",\n \"ISO3\": \"BLZ\",\n \"Top Level Domain\": \"bz\",\n \"FIPS\": \"BH\",\n \"ISO Numeric\": \"084\",\n \"GeoNameID\": 3582678,\n \"E164\": 501,\n \"Phone Code\": 501,\n \"Continent\": \"North America\",\n \"Capital\": \"Belmopan\",\n \"Time Zone in Capital\": \"America/Belize\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BZ,es\",\n \"Languages\": \"Spanish 46%, Creole 32.9%, Mayan dialects 8.9%, English 3.9% (official), Garifuna 3.4% (Carib), German 3.3%, other 1.4%, unknown 0.2% (2000 census)\",\n \"Area KM2\": 22966,\n \"Internet Hosts\": 3392,\n \"Internet Users\": 36000,\n \"Phones (Mobile)\": 164200,\n \"Phones (Landline)\": 25400,\n \"GDP\": 1637000000\n },\n {\n \"Country Name\": \"Benin\",\n \"ISO2\": \"BJ\",\n \"ISO3\": \"BEN\",\n \"Top Level Domain\": \"bj\",\n \"FIPS\": \"BN\",\n \"ISO Numeric\": 204,\n \"GeoNameID\": 2395170,\n \"E164\": 229,\n \"Phone Code\": 229,\n \"Continent\": \"Africa\",\n \"Capital\": \"Porto-Novo\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-BJ\",\n \"Languages\": \"French (official), Fon and Yoruba (most common vernaculars in south), tribal languages (at least six major ones in north)\",\n \"Area KM2\": 112620,\n \"Internet Hosts\": 491,\n \"Internet Users\": 200100,\n \"Phones (Mobile)\": 8408000,\n \"Phones (Landline)\": 156700,\n \"GDP\": 8359000000\n },\n {\n \"Country Name\": \"Bermuda\",\n \"ISO2\": \"BM\",\n \"ISO3\": \"BMU\",\n \"Top Level Domain\": \"bm\",\n \"FIPS\": \"BD\",\n \"ISO Numeric\": \"060\",\n \"GeoNameID\": 3573345,\n \"E164\": 1,\n \"Phone Code\": \"1-441\",\n \"Continent\": \"North America\",\n \"Capital\": \"Hamilton\",\n \"Time Zone in Capital\": \"Atlantic/Bermuda\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-BM,pt\",\n \"Languages\": \"English (official), Portuguese\",\n \"Area KM2\": 53,\n \"Internet Hosts\": 20040,\n \"Internet Users\": 54000,\n \"Phones (Mobile)\": 91000,\n \"Phones (Landline)\": 69000,\n \"GDP\": 5600000000\n },\n {\n \"Country Name\": \"Bhutan\",\n \"ISO2\": \"BT\",\n \"ISO3\": \"BTN\",\n \"Top Level Domain\": \"bt\",\n \"FIPS\": \"BT\",\n \"ISO Numeric\": \"064\",\n \"GeoNameID\": 1252634,\n \"E164\": 975,\n \"Phone Code\": 975,\n \"Continent\": \"Asia\",\n \"Capital\": \"Thimphu\",\n \"Time Zone in Capital\": \"Asia/Thimphu\",\n \"Currency\": \"Ngultrum\",\n \"Language Codes\": \"dz\",\n \"Languages\": \"Sharchhopka 28%, Dzongkha (official) 24%, Lhotshamkha 22%, other 26% (includes foreign languages) (2005 est.)\",\n \"Area KM2\": 47000,\n \"Internet Hosts\": 14590,\n \"Internet Users\": 50000,\n \"Phones (Mobile)\": 560000,\n \"Phones (Landline)\": 27000,\n \"GDP\": 2133000000\n },\n {\n \"Country Name\": \"Bolivia\",\n \"ISO2\": \"BO\",\n \"ISO3\": \"BOL\",\n \"Top Level Domain\": \"bo\",\n \"FIPS\": \"BL\",\n \"ISO Numeric\": \"068\",\n \"GeoNameID\": 3923057,\n \"E164\": 591,\n \"Phone Code\": 591,\n \"Continent\": \"South America\",\n \"Capital\": \"Sucre\",\n \"Time Zone in Capital\": \"America/La_Paz\",\n \"Currency\": \"Boliviano\",\n \"Language Codes\": \"es-BO,qu,ay\",\n \"Languages\": \"Spanish (official) 60.7%, Quechua (official) 21.2%, Aymara (official) 14.6%, Guarani (official), foreign languages 2.4%, other 1.2%\",\n \"Area KM2\": 1098580,\n \"Internet Hosts\": 180988,\n \"Internet Users\": 1103000,\n \"Phones (Mobile)\": 9494000,\n \"Phones (Landline)\": 880600,\n \"GDP\": 30790000000\n },\n {\n \"Country Name\": \"Bosnia and Herzegovina\",\n \"ISO2\": \"BA\",\n \"ISO3\": \"BIH\",\n \"Top Level Domain\": \"ba\",\n \"FIPS\": \"BK\",\n \"ISO Numeric\": \"070\",\n \"GeoNameID\": 3277605,\n \"E164\": 387,\n \"Phone Code\": 387,\n \"Continent\": \"Europe\",\n \"Capital\": \"Sarajevo\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Marka\",\n \"Language Codes\": \"bs,hr-BA,sr-BA\",\n \"Languages\": \"Bosnian (official), Croatian (official), Serbian (official)\",\n \"Area KM2\": 51129,\n \"Internet Hosts\": 155252,\n \"Internet Users\": 1422000,\n \"Phones (Mobile)\": 3350000,\n \"Phones (Landline)\": 878000,\n \"GDP\": 18870000000\n },\n {\n \"Country Name\": \"Botswana\",\n \"ISO2\": \"BW\",\n \"ISO3\": \"BWA\",\n \"Top Level Domain\": \"bw\",\n \"FIPS\": \"BC\",\n \"ISO Numeric\": \"072\",\n \"GeoNameID\": 933860,\n \"E164\": 267,\n \"Phone Code\": 267,\n \"Continent\": \"Africa\",\n \"Capital\": \"Gaborone\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Pula\",\n \"Language Codes\": \"en-BW,tn-BW\",\n \"Languages\": \"Setswana 78.2%, Kalanga 7.9%, Sekgalagadi 2.8%, English (official) 2.1%, other 8.6%, unspecified 0.4% (2001 census)\",\n \"Area KM2\": 600370,\n \"Internet Hosts\": 1806,\n \"Internet Users\": 120000,\n \"Phones (Mobile)\": 3082000,\n \"Phones (Landline)\": 160500,\n \"GDP\": 15530000000\n },\n {\n \"Country Name\": \"Brazil\",\n \"ISO2\": \"BR\",\n \"ISO3\": \"BRA\",\n \"Top Level Domain\": \"br\",\n \"FIPS\": \"BR\",\n \"ISO Numeric\": \"076\",\n \"GeoNameID\": 3469034,\n \"E164\": 55,\n \"Phone Code\": 55,\n \"Continent\": \"South America\",\n \"Capital\": \"Brasilia\",\n \"Time Zone in Capital\": \"America/Sao_Paulo\",\n \"Currency\": \"Real\",\n \"Language Codes\": \"pt-BR,es,en,fr\",\n \"Languages\": \"Portuguese (official and most widely spoken language)\",\n \"Area KM2\": 8511965,\n \"Internet Hosts\": 26577000,\n \"Internet Users\": 75982000,\n \"Phones (Mobile)\": 248324000,\n \"Phones (Landline)\": 44300000,\n \"GDP\": 2190000000000\n },\n {\n \"Country Name\": \"British Indian Ocean Territory\",\n \"ISO2\": \"IO\",\n \"ISO3\": \"IOT\",\n \"Top Level Domain\": \"io\",\n \"FIPS\": \"IO\",\n \"ISO Numeric\": \"086\",\n \"GeoNameID\": 1282588,\n \"E164\": 246,\n \"Phone Code\": 246,\n \"Continent\": \"Asia\",\n \"Capital\": \"Diego Garcia\",\n \"Time Zone in Capital\": \"Indian/Chagos\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-IO\",\n \"Languages\": \"English\",\n \"Area KM2\": 60,\n \"Internet Hosts\": 75006,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"British Virgin Islands\",\n \"ISO2\": \"VG\",\n \"ISO3\": \"VGB\",\n \"Top Level Domain\": \"vg\",\n \"FIPS\": \"VI\",\n \"ISO Numeric\": \"092\",\n \"GeoNameID\": 3577718,\n \"E164\": 1,\n \"Phone Code\": \"1-284\",\n \"Continent\": \"North America\",\n \"Capital\": \"Road Town\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-VG\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 153,\n \"Internet Hosts\": 505,\n \"Internet Users\": 4000,\n \"Phones (Mobile)\": 48700,\n \"Phones (Landline)\": 12268,\n \"GDP\": 1095000000\n },\n {\n \"Country Name\": \"Brunei\",\n \"ISO2\": \"BN\",\n \"ISO3\": \"BRN\",\n \"Top Level Domain\": \"bn\",\n \"FIPS\": \"BX\",\n \"ISO Numeric\": \"096\",\n \"GeoNameID\": 1820814,\n \"E164\": 673,\n \"Phone Code\": 673,\n \"Continent\": \"Asia\",\n \"Capital\": \"Bandar Seri Begawan\",\n \"Time Zone in Capital\": \"Asia/Brunei\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"ms-BN,en-BN\",\n \"Languages\": \"Malay (official), English, Chinese\",\n \"Area KM2\": 5770,\n \"Internet Hosts\": 49457,\n \"Internet Users\": 314900,\n \"Phones (Mobile)\": 469700,\n \"Phones (Landline)\": 70933,\n \"GDP\": 16560000000\n },\n {\n \"Country Name\": \"Bulgaria\",\n \"ISO2\": \"BG\",\n \"ISO3\": \"BGR\",\n \"Top Level Domain\": \"bg\",\n \"FIPS\": \"BU\",\n \"ISO Numeric\": 100,\n \"GeoNameID\": 732800,\n \"E164\": 359,\n \"Phone Code\": 359,\n \"Continent\": \"Europe\",\n \"Capital\": \"Sofia\",\n \"Time Zone in Capital\": \"Europe/Sofia\",\n \"Currency\": \"Lev\",\n \"Language Codes\": \"bg,tr-BG\",\n \"Languages\": \"Bulgarian (official) 76.8%, Turkish 8.2%, Roma 3.8%, other 0.7%, unspecified 10.5% (2011 est.)\",\n \"Area KM2\": 110910,\n \"Internet Hosts\": 976277,\n \"Internet Users\": 3395000,\n \"Phones (Mobile)\": 10780000,\n \"Phones (Landline)\": 2253000,\n \"GDP\": 53700000000\n },\n {\n \"Country Name\": \"Burkina Faso\",\n \"ISO2\": \"BF\",\n \"ISO3\": \"BFA\",\n \"Top Level Domain\": \"bf\",\n \"FIPS\": \"UV\",\n \"ISO Numeric\": 854,\n \"GeoNameID\": 2361809,\n \"E164\": 226,\n \"Phone Code\": 226,\n \"Continent\": \"Africa\",\n \"Capital\": \"Ouagadougou\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-BF\",\n \"Languages\": \"French (official), native African languages belonging to Sudanic family spoken by 90% of the population\",\n \"Area KM2\": 274200,\n \"Internet Hosts\": 1795,\n \"Internet Users\": 178100,\n \"Phones (Mobile)\": 9980000,\n \"Phones (Landline)\": 141400,\n \"GDP\": 12130000000\n },\n {\n \"Country Name\": \"Burundi\",\n \"ISO2\": \"BI\",\n \"ISO3\": \"BDI\",\n \"Top Level Domain\": \"bi\",\n \"FIPS\": \"BY\",\n \"ISO Numeric\": 108,\n \"GeoNameID\": 433561,\n \"E164\": 257,\n \"Phone Code\": 257,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bujumbura\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-BI,rn\",\n \"Languages\": \"Kirundi 29.7% (official), Kirundi and other language 9.1%, French (official) and French and other language 0.3%, Swahili and Swahili and other language 0.2% (along Lake Tanganyika and in the Bujumbura area), English and English and other language 0.06%, more than 2 languages 3.7%, unspecified 56.9% (2008 est.)\",\n \"Area KM2\": 27830,\n \"Internet Hosts\": 229,\n \"Internet Users\": 157800,\n \"Phones (Mobile)\": 2247000,\n \"Phones (Landline)\": 17400,\n \"GDP\": 2676000000\n },\n {\n \"Country Name\": \"Cambodia\",\n \"ISO2\": \"KH\",\n \"ISO3\": \"KHM\",\n \"Top Level Domain\": \"kh\",\n \"FIPS\": \"CB\",\n \"ISO Numeric\": 116,\n \"GeoNameID\": 1831722,\n \"E164\": 855,\n \"Phone Code\": 855,\n \"Continent\": \"Asia\",\n \"Capital\": \"Phnom Penh\",\n \"Time Zone in Capital\": \"Asia/Phnom_Penh\",\n \"Currency\": \"Riels\",\n \"Language Codes\": \"km,fr,en\",\n \"Languages\": \"Khmer (official) 96.3%, other 3.7% (2008 est.)\",\n \"Area KM2\": 181040,\n \"Internet Hosts\": 13784,\n \"Internet Users\": 78500,\n \"Phones (Mobile)\": 19100000,\n \"Phones (Landline)\": 584000,\n \"GDP\": 15640000000\n },\n {\n \"Country Name\": \"Cameroon\",\n \"ISO2\": \"CM\",\n \"ISO3\": \"CMR\",\n \"Top Level Domain\": \"cm\",\n \"FIPS\": \"CM\",\n \"ISO Numeric\": 120,\n \"GeoNameID\": 2233387,\n \"E164\": 237,\n \"Phone Code\": 237,\n \"Continent\": \"Africa\",\n \"Capital\": \"Yaounde\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"en-CM,fr-CM\",\n \"Languages\": \"24 major African language groups, English (official), French (official)\",\n \"Area KM2\": 475440,\n \"Internet Hosts\": 10207,\n \"Internet Users\": 749600,\n \"Phones (Mobile)\": 13100000,\n \"Phones (Landline)\": 737400,\n \"GDP\": 27880000000\n },\n {\n \"Country Name\": \"Canada\",\n \"ISO2\": \"CA\",\n \"ISO3\": \"CAN\",\n \"Top Level Domain\": \"ca\",\n \"FIPS\": \"CA\",\n \"ISO Numeric\": 124,\n \"GeoNameID\": 6251999,\n \"E164\": 1,\n \"Phone Code\": 1,\n \"Continent\": \"North America\",\n \"Capital\": \"Ottawa\",\n \"Time Zone in Capital\": \"America/Toronto\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-CA,fr-CA,iu\",\n \"Languages\": \"English (official) 58.7%, French (official) 22%, Punjabi 1.4%, Italian 1.3%, Spanish 1.3%, German 1.3%, Cantonese 1.2%, Tagalog 1.2%, Arabic 1.1%, other 10.5% (2011 est.)\",\n \"Area KM2\": 9984670,\n \"Internet Hosts\": 8743000,\n \"Internet Users\": 26960000,\n \"Phones (Mobile)\": 26263000,\n \"Phones (Landline)\": 18010000,\n \"GDP\": 1825000000000\n },\n {\n \"Country Name\": \"Cape Verde\",\n \"ISO2\": \"CV\",\n \"ISO3\": \"CPV\",\n \"Top Level Domain\": \"cv\",\n \"FIPS\": \"CV\",\n \"ISO Numeric\": 132,\n \"GeoNameID\": 3374766,\n \"E164\": 238,\n \"Phone Code\": 238,\n \"Continent\": \"Africa\",\n \"Capital\": \"Praia\",\n \"Time Zone in Capital\": \"Atlantic/Cape_Verde\",\n \"Currency\": \"Escudo\",\n \"Language Codes\": \"pt-CV\",\n \"Languages\": \"Portuguese (official), Crioulo (a blend of Portuguese and West African words)\",\n \"Area KM2\": 4033,\n \"Internet Hosts\": 38,\n \"Internet Users\": 150000,\n \"Phones (Mobile)\": 425300,\n \"Phones (Landline)\": 70200,\n \"GDP\": 1955000000\n },\n {\n \"Country Name\": \"Cayman Islands\",\n \"ISO2\": \"KY\",\n \"ISO3\": \"CYM\",\n \"Top Level Domain\": \"ky\",\n \"FIPS\": \"CJ\",\n \"ISO Numeric\": 136,\n \"GeoNameID\": 3580718,\n \"E164\": 1,\n \"Phone Code\": \"1-345\",\n \"Continent\": \"North America\",\n \"Capital\": \"George Town\",\n \"Time Zone in Capital\": \"America/Cayman\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-KY\",\n \"Languages\": \"English (official) 90.9%, Spanish 4%, Filipino 3.3%, other 1.7%, unspecified 0.1% (2010 est.)\",\n \"Area KM2\": 262,\n \"Internet Hosts\": 23472,\n \"Internet Users\": 23000,\n \"Phones (Mobile)\": 96300,\n \"Phones (Landline)\": 37400,\n \"GDP\": 2250000000\n },\n {\n \"Country Name\": \"Central African Republic\",\n \"ISO2\": \"CF\",\n \"ISO3\": \"CAF\",\n \"Top Level Domain\": \"cf\",\n \"FIPS\": \"CT\",\n \"ISO Numeric\": 140,\n \"GeoNameID\": 239880,\n \"E164\": 236,\n \"Phone Code\": 236,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bangui\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CF,sg,ln,kg\",\n \"Languages\": \"French (official), Sangho (lingua franca and national language), tribal languages\",\n \"Area KM2\": 622984,\n \"Internet Hosts\": 20,\n \"Internet Users\": 22600,\n \"Phones (Mobile)\": 1070000,\n \"Phones (Landline)\": 5600,\n \"GDP\": 2050000000\n },\n {\n \"Country Name\": \"Chad\",\n \"ISO2\": \"TD\",\n \"ISO3\": \"TCD\",\n \"Top Level Domain\": \"td\",\n \"FIPS\": \"CD\",\n \"ISO Numeric\": 148,\n \"GeoNameID\": 2434508,\n \"E164\": 235,\n \"Phone Code\": 235,\n \"Continent\": \"Africa\",\n \"Capital\": \"N'Djamena\",\n \"Time Zone in Capital\": \"Africa/Ndjamena\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-TD,ar-TD,sre\",\n \"Languages\": \"French (official), Arabic (official), Sara (in south), more than 120 different languages and dialects\",\n \"Area KM2\": 1284000,\n \"Internet Hosts\": 6,\n \"Internet Users\": 168100,\n \"Phones (Mobile)\": 4200000,\n \"Phones (Landline)\": 29900,\n \"GDP\": 13590000000\n },\n {\n \"Country Name\": \"Chile\",\n \"ISO2\": \"CL\",\n \"ISO3\": \"CHL\",\n \"Top Level Domain\": \"cl\",\n \"FIPS\": \"CI\",\n \"ISO Numeric\": 152,\n \"GeoNameID\": 3895114,\n \"E164\": 56,\n \"Phone Code\": 56,\n \"Continent\": \"South America\",\n \"Capital\": \"Santiago\",\n \"Time Zone in Capital\": \"America/Santiago\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-CL\",\n \"Languages\": \"Spanish 99.5% (official), English 10.2%, indigenous 1% (includes Mapudungun, Aymara, Quechua, Rapa Nui), other 2.3%, unspecified 0.2%\",\n \"Area KM2\": 756950,\n \"Internet Hosts\": 2152000,\n \"Internet Users\": 7009000,\n \"Phones (Mobile)\": 24130000,\n \"Phones (Landline)\": 3276000,\n \"GDP\": 281700000000\n },\n {\n \"Country Name\": \"China\",\n \"ISO2\": \"CN\",\n \"ISO3\": \"CHN\",\n \"Top Level Domain\": \"cn\",\n \"FIPS\": \"CH\",\n \"ISO Numeric\": 156,\n \"GeoNameID\": 1814991,\n \"E164\": 86,\n \"Phone Code\": 86,\n \"Continent\": \"Asia\",\n \"Capital\": \"Beijing\",\n \"Time Zone in Capital\": \"Asia/Shanghai\",\n \"Currency\": \"Yuan Renminbi\",\n \"Language Codes\": \"zh-CN,yue,wuu,dta,ug,za\",\n \"Languages\": \"Standard Chinese or Mandarin (official; Putonghua, based on the Beijing dialect), Yue (Cantonese), Wu (Shanghainese), Minbei (Fuzhou), Minnan (Hokkien-Taiwanese), Xiang, Gan, Hakka dialects, minority languages\",\n \"Area KM2\": 9596960,\n \"Internet Hosts\": 20602000,\n \"Internet Users\": 389000000,\n \"Phones (Mobile)\": 1100000000,\n \"Phones (Landline)\": 278860000,\n \"GDP\": 9330000000000\n },\n {\n \"Country Name\": \"Christmas Island\",\n \"ISO2\": \"CX\",\n \"ISO3\": \"CXR\",\n \"Top Level Domain\": \"cx\",\n \"FIPS\": \"KT\",\n \"ISO Numeric\": 162,\n \"GeoNameID\": 2078138,\n \"E164\": 61,\n \"Phone Code\": 61,\n \"Continent\": \"Asia\",\n \"Capital\": \"Flying Fish Cove\",\n \"Time Zone in Capital\": \"Indian/Christmas\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en,zh,ms-CC\",\n \"Languages\": \"English (official), Chinese, Malay\",\n \"Area KM2\": 135,\n \"Internet Hosts\": 3028,\n \"Internet Users\": 464,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Cocos Islands\",\n \"ISO2\": \"CC\",\n \"ISO3\": \"CCK\",\n \"Top Level Domain\": \"cc\",\n \"FIPS\": \"CK\",\n \"ISO Numeric\": 166,\n \"GeoNameID\": 1547376,\n \"E164\": 61,\n \"Phone Code\": 61,\n \"Continent\": \"Asia\",\n \"Capital\": \"West Island\",\n \"Time Zone in Capital\": \"Indian/Cocos\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"ms-CC,en\",\n \"Languages\": \"Malay (Cocos dialect), English\",\n \"Area KM2\": 14,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Colombia\",\n \"ISO2\": \"CO\",\n \"ISO3\": \"COL\",\n \"Top Level Domain\": \"co\",\n \"FIPS\": \"CO\",\n \"ISO Numeric\": 170,\n \"GeoNameID\": 3686110,\n \"E164\": 57,\n \"Phone Code\": 57,\n \"Continent\": \"South America\",\n \"Capital\": \"Bogota\",\n \"Time Zone in Capital\": \"America/Bogota\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-CO\",\n \"Languages\": \"Spanish (official)\",\n \"Area KM2\": 1138910,\n \"Internet Hosts\": 4410000,\n \"Internet Users\": 22538000,\n \"Phones (Mobile)\": 49066000,\n \"Phones (Landline)\": 6291000,\n \"GDP\": 369200000000\n },\n {\n \"Country Name\": \"Comoros\",\n \"ISO2\": \"KM\",\n \"ISO3\": \"COM\",\n \"Top Level Domain\": \"km\",\n \"FIPS\": \"CN\",\n \"ISO Numeric\": 174,\n \"GeoNameID\": 921929,\n \"E164\": 269,\n \"Phone Code\": 269,\n \"Continent\": \"Africa\",\n \"Capital\": \"Moroni\",\n \"Time Zone in Capital\": \"Indian/Comoro\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"ar,fr-KM\",\n \"Languages\": \"Arabic (official), French (official), Shikomoro (a blend of Swahili and Arabic)\",\n \"Area KM2\": 2170,\n \"Internet Hosts\": 14,\n \"Internet Users\": 24300,\n \"Phones (Mobile)\": 250000,\n \"Phones (Landline)\": 24000,\n \"GDP\": 658000000\n },\n {\n \"Country Name\": \"Cook Islands\",\n \"ISO2\": \"CK\",\n \"ISO3\": \"COK\",\n \"Top Level Domain\": \"ck\",\n \"FIPS\": \"CW\",\n \"ISO Numeric\": 184,\n \"GeoNameID\": 1899402,\n \"E164\": 682,\n \"Phone Code\": 682,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Avarua\",\n \"Time Zone in Capital\": \"Pacific/Rarotonga\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-CK,mi\",\n \"Languages\": \"English (official) 86.4%, Cook Islands Maori (Rarotongan) (official) 76.2%, other 8.3%\",\n \"Area KM2\": 240,\n \"Internet Hosts\": 3562,\n \"Internet Users\": 6000,\n \"Phones (Mobile)\": 7800,\n \"Phones (Landline)\": 7200,\n \"GDP\": 183200000\n },\n {\n \"Country Name\": \"Costa Rica\",\n \"ISO2\": \"CR\",\n \"ISO3\": \"CRI\",\n \"Top Level Domain\": \"cr\",\n \"FIPS\": \"CS\",\n \"ISO Numeric\": 188,\n \"GeoNameID\": 3624060,\n \"E164\": 506,\n \"Phone Code\": 506,\n \"Continent\": \"North America\",\n \"Capital\": \"San Jose\",\n \"Time Zone in Capital\": \"America/Costa_Rica\",\n \"Currency\": \"Colon\",\n \"Language Codes\": \"es-CR,en\",\n \"Languages\": \"Spanish (official), English\",\n \"Area KM2\": 51100,\n \"Internet Hosts\": 147258,\n \"Internet Users\": 1485000,\n \"Phones (Mobile)\": 6151000,\n \"Phones (Landline)\": 1018000,\n \"GDP\": 48510000000\n },\n {\n \"Country Name\": \"Croatia\",\n \"ISO2\": \"HR\",\n \"ISO3\": \"HRV\",\n \"Top Level Domain\": \"hr\",\n \"FIPS\": \"HR\",\n \"ISO Numeric\": 191,\n \"GeoNameID\": 3202326,\n \"E164\": 385,\n \"Phone Code\": 385,\n \"Continent\": \"Europe\",\n \"Capital\": \"Zagreb\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Kuna\",\n \"Language Codes\": \"hr-HR,sr\",\n \"Languages\": \"Croatian (official) 95.6%, Serbian 1.2%, other 3% (including Hungarian, Czech, Slovak, and Albanian), unspecified 0.2% (2011 est.)\",\n \"Area KM2\": 56542,\n \"Internet Hosts\": 729420,\n \"Internet Users\": 2234000,\n \"Phones (Mobile)\": 4970000,\n \"Phones (Landline)\": 1640000,\n \"GDP\": 59140000000\n },\n {\n \"Country Name\": \"Cuba\",\n \"ISO2\": \"CU\",\n \"ISO3\": \"CUB\",\n \"Top Level Domain\": \"cu\",\n \"FIPS\": \"CU\",\n \"ISO Numeric\": 192,\n \"GeoNameID\": 3562981,\n \"E164\": 53,\n \"Phone Code\": 53,\n \"Continent\": \"North America\",\n \"Capital\": \"Havana\",\n \"Time Zone in Capital\": \"America/Havana\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-CU\",\n \"Languages\": \"Spanish (official)\",\n \"Area KM2\": 110860,\n \"Internet Hosts\": 3244,\n \"Internet Users\": 1606000,\n \"Phones (Mobile)\": 1682000,\n \"Phones (Landline)\": 1217000,\n \"GDP\": 72300000000\n },\n {\n \"Country Name\": \"Curacao\",\n \"ISO2\": \"CW\",\n \"ISO3\": \"CUW\",\n \"Top Level Domain\": \"cw\",\n \"FIPS\": \"UC\",\n \"ISO Numeric\": 531,\n \"GeoNameID\": 7626836,\n \"E164\": 599,\n \"Phone Code\": 599,\n \"Continent\": \"North America\",\n \"Capital\": \"Willemstad\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl,pap\",\n \"Languages\": \"Papiamentu (a Spanish-Portuguese-Dutch-English dialect) 81.2%, Dutch (official) 8%, Spanish 4%, English 2.9%, other 3.9% (2001 census)\",\n \"Area KM2\": 444,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 5600000000\n },\n {\n \"Country Name\": \"Cyprus\",\n \"ISO2\": \"CY\",\n \"ISO3\": \"CYP\",\n \"Top Level Domain\": \"cy\",\n \"FIPS\": \"CY\",\n \"ISO Numeric\": 196,\n \"GeoNameID\": 146669,\n \"E164\": 357,\n \"Phone Code\": 357,\n \"Continent\": \"Europe\",\n \"Capital\": \"Nicosia\",\n \"Time Zone in Capital\": \"Asia/Nicosia\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"el-CY,tr-CY,en\",\n \"Languages\": \"Greek (official) 80.9%, Turkish (official) 0.2%, English 4.1%, Romanian 2.9%, Russian 2.5%, Bulgarian 2.2%, Arabic 1.2%, Filippino 1.1%, other 4.3%, unspecified 0.6% (2011 est.)\",\n \"Area KM2\": 9250,\n \"Internet Hosts\": 252013,\n \"Internet Users\": 433900,\n \"Phones (Mobile)\": 1110000,\n \"Phones (Landline)\": 373200,\n \"GDP\": 21780000000\n },\n {\n \"Country Name\": \"Czech Republic\",\n \"ISO2\": \"CZ\",\n \"ISO3\": \"CZE\",\n \"Top Level Domain\": \"cz\",\n \"FIPS\": \"EZ\",\n \"ISO Numeric\": 203,\n \"GeoNameID\": 3077311,\n \"E164\": 420,\n \"Phone Code\": 420,\n \"Continent\": \"Europe\",\n \"Capital\": \"Prague\",\n \"Time Zone in Capital\": \"Europe/Prague\",\n \"Currency\": \"Koruna\",\n \"Language Codes\": \"cs,sk\",\n \"Languages\": \"Czech 95.4%, Slovak 1.6%, other 3% (2011 census)\",\n \"Area KM2\": 78866,\n \"Internet Hosts\": 4148000,\n \"Internet Users\": 6681000,\n \"Phones (Mobile)\": 12973000,\n \"Phones (Landline)\": 2100000,\n \"GDP\": 194800000000\n },\n {\n \"Country Name\": \"Democratic Republic of the Congo\",\n \"ISO2\": \"CD\",\n \"ISO3\": \"COD\",\n \"Top Level Domain\": \"cd\",\n \"FIPS\": \"CG\",\n \"ISO Numeric\": 180,\n \"GeoNameID\": 203312,\n \"E164\": 243,\n \"Phone Code\": 243,\n \"Continent\": \"Africa\",\n \"Capital\": \"Kinshasa\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CD,ln,kg\",\n \"Languages\": \"French (official), Lingala (a lingua franca trade language), Kingwana (a dialect of Kiswahili or Swahili), Kikongo, Tshiluba\",\n \"Area KM2\": 2345410,\n \"Internet Hosts\": 2515,\n \"Internet Users\": 290000,\n \"Phones (Mobile)\": 19487000,\n \"Phones (Landline)\": 58200,\n \"GDP\": 18560000000\n },\n {\n \"Country Name\": \"Denmark\",\n \"ISO2\": \"DK\",\n \"ISO3\": \"DNK\",\n \"Top Level Domain\": \"dk\",\n \"FIPS\": \"DA\",\n \"ISO Numeric\": 208,\n \"GeoNameID\": 2623032,\n \"E164\": 45,\n \"Phone Code\": 45,\n \"Continent\": \"Europe\",\n \"Capital\": \"Copenhagen\",\n \"Time Zone in Capital\": \"Europe/Copenhagen\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"da-DK,en,fo,de-DK\",\n \"Languages\": \"Danish, Faroese, Greenlandic (an Inuit dialect), German (small minority)\",\n \"Area KM2\": 43094,\n \"Internet Hosts\": 4297000,\n \"Internet Users\": 4750000,\n \"Phones (Mobile)\": 6600000,\n \"Phones (Landline)\": 2431000,\n \"GDP\": 324300000000\n },\n {\n \"Country Name\": \"Djibouti\",\n \"ISO2\": \"DJ\",\n \"ISO3\": \"DJI\",\n \"Top Level Domain\": \"dj\",\n \"FIPS\": \"DJ\",\n \"ISO Numeric\": 262,\n \"GeoNameID\": 223816,\n \"E164\": 253,\n \"Phone Code\": 253,\n \"Continent\": \"Africa\",\n \"Capital\": \"Djibouti\",\n \"Time Zone in Capital\": \"Africa/Djibouti\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-DJ,ar,so-DJ,aa\",\n \"Languages\": \"French (official), Arabic (official), Somali, Afar\",\n \"Area KM2\": 23000,\n \"Internet Hosts\": 215,\n \"Internet Users\": 25900,\n \"Phones (Mobile)\": 209000,\n \"Phones (Landline)\": 18000,\n \"GDP\": 1459000000\n },\n {\n \"Country Name\": \"Dominica\",\n \"ISO2\": \"DM\",\n \"ISO3\": \"DMA\",\n \"Top Level Domain\": \"dm\",\n \"FIPS\": \"DO\",\n \"ISO Numeric\": 212,\n \"GeoNameID\": 3575830,\n \"E164\": 1,\n \"Phone Code\": \"1-767\",\n \"Continent\": \"North America\",\n \"Capital\": \"Roseau\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-DM\",\n \"Languages\": \"English (official), French patois\",\n \"Area KM2\": 754,\n \"Internet Hosts\": 723,\n \"Internet Users\": 28000,\n \"Phones (Mobile)\": 109300,\n \"Phones (Landline)\": 14600,\n \"GDP\": 495000000\n },\n {\n \"Country Name\": \"Dominican Republic\",\n \"ISO2\": \"DO\",\n \"ISO3\": \"DOM\",\n \"Top Level Domain\": \"do\",\n \"FIPS\": \"DR\",\n \"ISO Numeric\": 214,\n \"GeoNameID\": 3508796,\n \"E164\": 1,\n \"Phone Code\": \"1-809, 1-829, 1-849\",\n \"Continent\": \"North America\",\n \"Capital\": \"Santo Domingo\",\n \"Time Zone in Capital\": \"America/Santo_Domingo\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-DO\",\n \"Languages\": \"Spanish (official)\",\n \"Area KM2\": 48730,\n \"Internet Hosts\": 404500,\n \"Internet Users\": 2701000,\n \"Phones (Mobile)\": 9038000,\n \"Phones (Landline)\": 1065000,\n \"GDP\": 59270000000\n },\n {\n \"Country Name\": \"East Timor\",\n \"ISO2\": \"TL\",\n \"ISO3\": \"TLS\",\n \"Top Level Domain\": \"tl\",\n \"FIPS\": \"TT\",\n \"ISO Numeric\": 626,\n \"GeoNameID\": 1966436,\n \"E164\": 670,\n \"Phone Code\": 670,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Dili\",\n \"Time Zone in Capital\": \"Asia/Dili\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"tet,pt-TL,id,en\",\n \"Languages\": \"Tetum (official), Portuguese (official), Indonesian, English\",\n \"Area KM2\": 15007,\n \"Internet Hosts\": 252,\n \"Internet Users\": 2100,\n \"Phones (Mobile)\": 621000,\n \"Phones (Landline)\": 3000,\n \"GDP\": 6129000000\n },\n {\n \"Country Name\": \"Ecuador\",\n \"ISO2\": \"EC\",\n \"ISO3\": \"ECU\",\n \"Top Level Domain\": \"ec\",\n \"FIPS\": \"EC\",\n \"ISO Numeric\": 218,\n \"GeoNameID\": 3658394,\n \"E164\": 593,\n \"Phone Code\": 593,\n \"Continent\": \"South America\",\n \"Capital\": \"Quito\",\n \"Time Zone in Capital\": \"America/Guayaquil\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"es-EC\",\n \"Languages\": \"Spanish (Castillian) 93% (official), Quechua 4.1%, other indigenous 0.7%, foreign 2.2%\",\n \"Area KM2\": 283560,\n \"Internet Hosts\": 170538,\n \"Internet Users\": 3352000,\n \"Phones (Mobile)\": 16457000,\n \"Phones (Landline)\": 2310000,\n \"GDP\": 91410000000\n },\n {\n \"Country Name\": \"Egypt\",\n \"ISO2\": \"EG\",\n \"ISO3\": \"EGY\",\n \"Top Level Domain\": \"eg\",\n \"FIPS\": \"EG\",\n \"ISO Numeric\": 818,\n \"GeoNameID\": 357994,\n \"E164\": 20,\n \"Phone Code\": 20,\n \"Continent\": \"Africa\",\n \"Capital\": \"Cairo\",\n \"Time Zone in Capital\": \"Africa/Cairo\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-EG,en,fr\",\n \"Languages\": \"Arabic (official), English and French widely understood by educated classes\",\n \"Area KM2\": 1001450,\n \"Internet Hosts\": 200430,\n \"Internet Users\": 20136000,\n \"Phones (Mobile)\": 96800000,\n \"Phones (Landline)\": 8557000,\n \"GDP\": 262000000000\n },\n {\n \"Country Name\": \"El Salvador\",\n \"ISO2\": \"SV\",\n \"ISO3\": \"SLV\",\n \"Top Level Domain\": \"sv\",\n \"FIPS\": \"ES\",\n \"ISO Numeric\": 222,\n \"GeoNameID\": 3585968,\n \"E164\": 503,\n \"Phone Code\": 503,\n \"Continent\": \"North America\",\n \"Capital\": \"San Salvador\",\n \"Time Zone in Capital\": \"America/El_Salvador\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"es-SV\",\n \"Languages\": \"Spanish (official), Nahua (among some Amerindians)\",\n \"Area KM2\": 21040,\n \"Internet Hosts\": 24070,\n \"Internet Users\": 746000,\n \"Phones (Mobile)\": 8650000,\n \"Phones (Landline)\": 1060000,\n \"GDP\": 24670000000\n },\n {\n \"Country Name\": \"Equatorial Guinea\",\n \"ISO2\": \"GQ\",\n \"ISO3\": \"GNQ\",\n \"Top Level Domain\": \"gq\",\n \"FIPS\": \"EK\",\n \"ISO Numeric\": 226,\n \"GeoNameID\": 2309096,\n \"E164\": 240,\n \"Phone Code\": 240,\n \"Continent\": \"Africa\",\n \"Capital\": \"Malabo\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"es-GQ,fr\",\n \"Languages\": \"Spanish (official) 67.6%, other (includes French (official), Fang, Bubi) 32.4% (1994 census)\",\n \"Area KM2\": 28051,\n \"Internet Hosts\": 7,\n \"Internet Users\": 14400,\n \"Phones (Mobile)\": 501000,\n \"Phones (Landline)\": 14900,\n \"GDP\": 17080000000\n },\n {\n \"Country Name\": \"Eritrea\",\n \"ISO2\": \"ER\",\n \"ISO3\": \"ERI\",\n \"Top Level Domain\": \"er\",\n \"FIPS\": \"ER\",\n \"ISO Numeric\": 232,\n \"GeoNameID\": 338010,\n \"E164\": 291,\n \"Phone Code\": 291,\n \"Continent\": \"Africa\",\n \"Capital\": \"Asmara\",\n \"Time Zone in Capital\": \"Africa/Asmara\",\n \"Currency\": \"Nakfa\",\n \"Language Codes\": \"aa-ER,ar,tig,kun,ti-ER\",\n \"Languages\": \"Tigrinya (official), Arabic (official), English (official), Tigre, Kunama, Afar, other Cushitic languages\",\n \"Area KM2\": 121320,\n \"Internet Hosts\": 701,\n \"Internet Users\": 200000,\n \"Phones (Mobile)\": 305300,\n \"Phones (Landline)\": 60000,\n \"GDP\": 3438000000\n },\n {\n \"Country Name\": \"Estonia\",\n \"ISO2\": \"EE\",\n \"ISO3\": \"EST\",\n \"Top Level Domain\": \"ee\",\n \"FIPS\": \"EN\",\n \"ISO Numeric\": 233,\n \"GeoNameID\": 453733,\n \"E164\": 372,\n \"Phone Code\": 372,\n \"Continent\": \"Europe\",\n \"Capital\": \"Tallinn\",\n \"Time Zone in Capital\": \"Europe/Tallinn\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"et,ru\",\n \"Languages\": \"Estonian (official) 68.5%, Russian 29.6%, Ukrainian 0.6%, other 1.2%, unspecified 0.1% (2011 est.)\",\n \"Area KM2\": 45226,\n \"Internet Hosts\": 865494,\n \"Internet Users\": 971700,\n \"Phones (Mobile)\": 2070000,\n \"Phones (Landline)\": 448200,\n \"GDP\": 24280000000\n },\n {\n \"Country Name\": \"Ethiopia\",\n \"ISO2\": \"ET\",\n \"ISO3\": \"ETH\",\n \"Top Level Domain\": \"et\",\n \"FIPS\": \"ET\",\n \"ISO Numeric\": 231,\n \"GeoNameID\": 337996,\n \"E164\": 251,\n \"Phone Code\": 251,\n \"Continent\": \"Africa\",\n \"Capital\": \"Addis Ababa\",\n \"Time Zone in Capital\": \"Africa/Addis_Ababa\",\n \"Currency\": \"Birr\",\n \"Language Codes\": \"am,en-ET,om-ET,ti-ET,so-ET,sid\",\n \"Languages\": \"Oromo (official working language in the State of Oromiya) 33.8%, Amharic (official national language) 29.3%, Somali (official working language of the State of Sumale) 6.2%, Tigrigna (Tigrinya) (official working language of the State of Tigray) 5.9%, Sidamo 4%, Wolaytta 2.2%, Gurage 2%, Afar (official working language of the State of Afar) 1.7%, Hadiyya 1.7%, Gamo 1.5%, Gedeo 1.3%, Opuuo 1.2%, Kafa 1.1%, other 8.1%, English (major foreign language taught in schools), Arabic (2007 est.)\",\n \"Area KM2\": 1127127,\n \"Internet Hosts\": 179,\n \"Internet Users\": 447300,\n \"Phones (Mobile)\": 20524000,\n \"Phones (Landline)\": 797500,\n \"GDP\": 47340000000\n },\n {\n \"Country Name\": \"Falkland Islands\",\n \"ISO2\": \"FK\",\n \"ISO3\": \"FLK\",\n \"Top Level Domain\": \"fk\",\n \"FIPS\": \"FK\",\n \"ISO Numeric\": 238,\n \"GeoNameID\": 3474414,\n \"E164\": 500,\n \"Phone Code\": 500,\n \"Continent\": \"South America\",\n \"Capital\": \"Stanley\",\n \"Time Zone in Capital\": \"Atlantic/Stanley\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-FK\",\n \"Languages\": \"English 89%, Spanish 7.7%, other 3.3% (2006 est.)\",\n \"Area KM2\": 12173,\n \"Internet Hosts\": 110,\n \"Internet Users\": 2900,\n \"Phones (Mobile)\": 3450,\n \"Phones (Landline)\": 1980,\n \"GDP\": 164500000\n },\n {\n \"Country Name\": \"Faroe Islands\",\n \"ISO2\": \"FO\",\n \"ISO3\": \"FRO\",\n \"Top Level Domain\": \"fo\",\n \"FIPS\": \"FO\",\n \"ISO Numeric\": 234,\n \"GeoNameID\": 2622320,\n \"E164\": 298,\n \"Phone Code\": 298,\n \"Continent\": \"Europe\",\n \"Capital\": \"Torshavn\",\n \"Time Zone in Capital\": \"Atlantic/Faroe\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"fo,da-FO\",\n \"Languages\": \"Faroese (derived from Old Norse), Danish\",\n \"Area KM2\": 1399,\n \"Internet Hosts\": 7575,\n \"Internet Users\": 37500,\n \"Phones (Mobile)\": 61000,\n \"Phones (Landline)\": 24000,\n \"GDP\": 2320000000\n },\n {\n \"Country Name\": \"Fiji\",\n \"ISO2\": \"FJ\",\n \"ISO3\": \"FJI\",\n \"Top Level Domain\": \"fj\",\n \"FIPS\": \"FJ\",\n \"ISO Numeric\": 242,\n \"GeoNameID\": 2205218,\n \"E164\": 679,\n \"Phone Code\": 679,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Suva\",\n \"Time Zone in Capital\": \"Pacific/Fiji\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-FJ,fj\",\n \"Languages\": \"English (official), Fijian (official), Hindustani\",\n \"Area KM2\": 18270,\n \"Internet Hosts\": 21739,\n \"Internet Users\": 114200,\n \"Phones (Mobile)\": 858800,\n \"Phones (Landline)\": 88400,\n \"GDP\": 4218000000\n },\n {\n \"Country Name\": \"Finland\",\n \"ISO2\": \"FI\",\n \"ISO3\": \"FIN\",\n \"Top Level Domain\": \"fi\",\n \"FIPS\": \"FI\",\n \"ISO Numeric\": 246,\n \"GeoNameID\": 660013,\n \"E164\": 358,\n \"Phone Code\": 358,\n \"Continent\": \"Europe\",\n \"Capital\": \"Helsinki\",\n \"Time Zone in Capital\": \"Europe/Helsinki\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fi-FI,sv-FI,smn\",\n \"Languages\": \"Finnish (official) 94.2%, Swedish (official) 5.5%, other (small Sami- and Russian-speaking minorities) 0.2% (2012 est.)\",\n \"Area KM2\": 337030,\n \"Internet Hosts\": 4763000,\n \"Internet Users\": 4393000,\n \"Phones (Mobile)\": 9320000,\n \"Phones (Landline)\": 890000,\n \"GDP\": 259600000000\n },\n {\n \"Country Name\": \"France\",\n \"ISO2\": \"FR\",\n \"ISO3\": \"FRA\",\n \"Top Level Domain\": \"fr\",\n \"FIPS\": \"FR\",\n \"ISO Numeric\": 250,\n \"GeoNameID\": 3017382,\n \"E164\": 33,\n \"Phone Code\": 33,\n \"Continent\": \"Europe\",\n \"Capital\": \"Paris\",\n \"Time Zone in Capital\": \"Europe/Paris\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-FR,frp,br,co,ca,eu,oc\",\n \"Languages\": \"French (official) 100%, rapidly declining regional dialects and languages (Provencal, Breton, Alsatian, Corsican, Catalan, Basque, Flemish)\",\n \"Area KM2\": 547030,\n \"Internet Hosts\": 17266000,\n \"Internet Users\": 45262000,\n \"Phones (Mobile)\": 62280000,\n \"Phones (Landline)\": 39290000,\n \"GDP\": 2739000000000\n },\n {\n \"Country Name\": \"French Polynesia\",\n \"ISO2\": \"PF\",\n \"ISO3\": \"PYF\",\n \"Top Level Domain\": \"pf\",\n \"FIPS\": \"FP\",\n \"ISO Numeric\": 258,\n \"GeoNameID\": 4030656,\n \"E164\": 689,\n \"Phone Code\": 689,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Papeete\",\n \"Time Zone in Capital\": \"Pacific/Tahiti\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-PF,ty\",\n \"Languages\": \"French (official) 61.1%, Polynesian (official) 31.4%, Asian languages 1.2%, other 0.3%, unspecified 6% (2002 census)\",\n \"Area KM2\": 4167,\n \"Internet Hosts\": 37949,\n \"Internet Users\": 120000,\n \"Phones (Mobile)\": 226000,\n \"Phones (Landline)\": 55000,\n \"GDP\": 5650000000\n },\n {\n \"Country Name\": \"Gabon\",\n \"ISO2\": \"GA\",\n \"ISO3\": \"GAB\",\n \"Top Level Domain\": \"ga\",\n \"FIPS\": \"GB\",\n \"ISO Numeric\": 266,\n \"GeoNameID\": 2400553,\n \"E164\": 241,\n \"Phone Code\": 241,\n \"Continent\": \"Africa\",\n \"Capital\": \"Libreville\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-GA\",\n \"Languages\": \"French (official), Fang, Myene, Nzebi, Bapounou/Eschira, Bandjabi\",\n \"Area KM2\": 267667,\n \"Internet Hosts\": 127,\n \"Internet Users\": 98800,\n \"Phones (Mobile)\": 2930000,\n \"Phones (Landline)\": 17000,\n \"GDP\": 19970000000\n },\n {\n \"Country Name\": \"Gambia\",\n \"ISO2\": \"GM\",\n \"ISO3\": \"GMB\",\n \"Top Level Domain\": \"gm\",\n \"FIPS\": \"GA\",\n \"ISO Numeric\": 270,\n \"GeoNameID\": 2413451,\n \"E164\": 220,\n \"Phone Code\": 220,\n \"Continent\": \"Africa\",\n \"Capital\": \"Banjul\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Dalasi\",\n \"Language Codes\": \"en-GM,mnk,wof,wo,ff\",\n \"Languages\": \"English (official), Mandinka, Wolof, Fula, other indigenous vernaculars\",\n \"Area KM2\": 11300,\n \"Internet Hosts\": 656,\n \"Internet Users\": 130100,\n \"Phones (Mobile)\": 1526000,\n \"Phones (Landline)\": 64200,\n \"GDP\": 896000000\n },\n {\n \"Country Name\": \"Georgia\",\n \"ISO2\": \"GE\",\n \"ISO3\": \"GEO\",\n \"Top Level Domain\": \"ge\",\n \"FIPS\": \"GG\",\n \"ISO Numeric\": 268,\n \"GeoNameID\": 614540,\n \"E164\": 995,\n \"Phone Code\": 995,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tbilisi\",\n \"Time Zone in Capital\": \"Asia/Tbilisi\",\n \"Currency\": \"Lari\",\n \"Language Codes\": \"ka,ru,hy,az\",\n \"Languages\": \"Georgian (official) 71%, Russian 9%, Armenian 7%, Azeri 6%, other 7%\",\n \"Area KM2\": 69700,\n \"Internet Hosts\": 357864,\n \"Internet Users\": 1300000,\n \"Phones (Mobile)\": 4699000,\n \"Phones (Landline)\": 1276000,\n \"GDP\": 15950000000\n },\n {\n \"Country Name\": \"Germany\",\n \"ISO2\": \"DE\",\n \"ISO3\": \"DEU\",\n \"Top Level Domain\": \"de\",\n \"FIPS\": \"GM\",\n \"ISO Numeric\": 276,\n \"GeoNameID\": 2921044,\n \"E164\": 49,\n \"Phone Code\": 49,\n \"Continent\": \"Europe\",\n \"Capital\": \"Berlin\",\n \"Time Zone in Capital\": \"Europe/Berlin\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"de\",\n \"Languages\": \"German (official)\",\n \"Area KM2\": 357021,\n \"Internet Hosts\": 20043000,\n \"Internet Users\": 65125000,\n \"Phones (Mobile)\": 107700000,\n \"Phones (Landline)\": 50700000,\n \"GDP\": 3593000000000\n },\n {\n \"Country Name\": \"Ghana\",\n \"ISO2\": \"GH\",\n \"ISO3\": \"GHA\",\n \"Top Level Domain\": \"gh\",\n \"FIPS\": \"GH\",\n \"ISO Numeric\": 288,\n \"GeoNameID\": 2300660,\n \"E164\": 233,\n \"Phone Code\": 233,\n \"Continent\": \"Africa\",\n \"Capital\": \"Accra\",\n \"Time Zone in Capital\": \"Africa/Accra\",\n \"Currency\": \"Cedi\",\n \"Language Codes\": \"en-GH,ak,ee,tw\",\n \"Languages\": \"Asante 14.8%, Ewe 12.7%, Fante 9.9%, Boron (Brong) 4.6%, Dagomba 4.3%, Dangme 4.3%, Dagarte (Dagaba) 3.7%, Akyem 3.4%, Ga 3.4%, Akuapem 2.9%, other (includes English (official)) 36.1% (2000 census)\",\n \"Area KM2\": 239460,\n \"Internet Hosts\": 59086,\n \"Internet Users\": 1297000,\n \"Phones (Mobile)\": 25618000,\n \"Phones (Landline)\": 285000,\n \"GDP\": 45550000000\n },\n {\n \"Country Name\": \"Gibraltar\",\n \"ISO2\": \"GI\",\n \"ISO3\": \"GIB\",\n \"Top Level Domain\": \"gi\",\n \"FIPS\": \"GI\",\n \"ISO Numeric\": 292,\n \"GeoNameID\": 2411586,\n \"E164\": 350,\n \"Phone Code\": 350,\n \"Continent\": \"Europe\",\n \"Capital\": \"Gibraltar\",\n \"Time Zone in Capital\": \"Europe/Gibraltar\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-GI,es,it,pt\",\n \"Languages\": \"English (used in schools and for official purposes), Spanish, Italian, Portuguese\",\n \"Area KM2\": 7,\n \"Internet Hosts\": 3509,\n \"Internet Users\": 20200,\n \"Phones (Mobile)\": 34750,\n \"Phones (Landline)\": 23100,\n \"GDP\": 1106000000\n },\n {\n \"Country Name\": \"Greece\",\n \"ISO2\": \"GR\",\n \"ISO3\": \"GRC\",\n \"Top Level Domain\": \"gr\",\n \"FIPS\": \"GR\",\n \"ISO Numeric\": 300,\n \"GeoNameID\": 390903,\n \"E164\": 30,\n \"Phone Code\": 30,\n \"Continent\": \"Europe\",\n \"Capital\": \"Athens\",\n \"Time Zone in Capital\": \"Europe/Athens\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"el-GR,en,fr\",\n \"Languages\": \"Greek (official) 99%, other (includes English and French) 1%\",\n \"Area KM2\": 131940,\n \"Internet Hosts\": 3201000,\n \"Internet Users\": 4971000,\n \"Phones (Mobile)\": 13354000,\n \"Phones (Landline)\": 5461000,\n \"GDP\": 243300000000\n },\n {\n \"Country Name\": \"Greenland\",\n \"ISO2\": \"GL\",\n \"ISO3\": \"GRL\",\n \"Top Level Domain\": \"gl\",\n \"FIPS\": \"GL\",\n \"ISO Numeric\": 304,\n \"GeoNameID\": 3425505,\n \"E164\": 299,\n \"Phone Code\": 299,\n \"Continent\": \"North America\",\n \"Capital\": \"Nuuk\",\n \"Time Zone in Capital\": \"America/Godthab\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"kl,da-GL,en\",\n \"Languages\": \"Greenlandic (East Inuit) (official), Danish (official), English\",\n \"Area KM2\": 2166086,\n \"Internet Hosts\": 15645,\n \"Internet Users\": 36000,\n \"Phones (Mobile)\": 59455,\n \"Phones (Landline)\": 18900,\n \"GDP\": 2160000000\n },\n {\n \"Country Name\": \"Grenada\",\n \"ISO2\": \"GD\",\n \"ISO3\": \"GRD\",\n \"Top Level Domain\": \"gd\",\n \"FIPS\": \"GJ\",\n \"ISO Numeric\": 308,\n \"GeoNameID\": 3580239,\n \"E164\": 1,\n \"Phone Code\": \"1-473\",\n \"Continent\": \"North America\",\n \"Capital\": \"St. George's\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-GD\",\n \"Languages\": \"English (official), French patois\",\n \"Area KM2\": 344,\n \"Internet Hosts\": 80,\n \"Internet Users\": 25000,\n \"Phones (Mobile)\": 128000,\n \"Phones (Landline)\": 28500,\n \"GDP\": 811000000\n },\n {\n \"Country Name\": \"Guam\",\n \"ISO2\": \"GU\",\n \"ISO3\": \"GUM\",\n \"Top Level Domain\": \"gu\",\n \"FIPS\": \"GQ\",\n \"ISO Numeric\": 316,\n \"GeoNameID\": 4043988,\n \"E164\": 1,\n \"Phone Code\": \"1-671\",\n \"Continent\": \"Oceania\",\n \"Capital\": \"Hagatna\",\n \"Time Zone in Capital\": \"Pacific/Guam\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-GU,ch-GU\",\n \"Languages\": \"English 43.6%, Filipino 21.2%, Chamorro 17.8%, other Pacific island languages 10%, Asian languages 6.3%, other 1.1% (2010 est.)\",\n \"Area KM2\": 549,\n \"Internet Hosts\": 23,\n \"Internet Users\": 90000,\n \"Phones (Mobile)\": 98000,\n \"Phones (Landline)\": 67000,\n \"GDP\": 4600000000\n },\n {\n \"Country Name\": \"Guatemala\",\n \"ISO2\": \"GT\",\n \"ISO3\": \"GTM\",\n \"Top Level Domain\": \"gt\",\n \"FIPS\": \"GT\",\n \"ISO Numeric\": 320,\n \"GeoNameID\": 3595528,\n \"E164\": 502,\n \"Phone Code\": 502,\n \"Continent\": \"North America\",\n \"Capital\": \"Guatemala City\",\n \"Time Zone in Capital\": \"America/Guatemala\",\n \"Currency\": \"Quetzal\",\n \"Language Codes\": \"es-GT\",\n \"Languages\": \"Spanish (official) 60%, Amerindian languages 40%\",\n \"Area KM2\": 108890,\n \"Internet Hosts\": 357552,\n \"Internet Users\": 2279000,\n \"Phones (Mobile)\": 20787000,\n \"Phones (Landline)\": 1744000,\n \"GDP\": 53900000000\n },\n {\n \"Country Name\": \"Guernsey\",\n \"ISO2\": \"GG\",\n \"ISO3\": \"GGY\",\n \"Top Level Domain\": \"gg\",\n \"FIPS\": \"GK\",\n \"ISO Numeric\": 831,\n \"GeoNameID\": 3042362,\n \"E164\": 44,\n \"Phone Code\": \"44-1481\",\n \"Continent\": \"Europe\",\n \"Capital\": \"St Peter Port\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en,fr\",\n \"Languages\": \"English, French, Norman-French dialect spoken in country districts\",\n \"Area KM2\": 78,\n \"Internet Hosts\": 239,\n \"Internet Users\": 48300,\n \"Phones (Mobile)\": 43800,\n \"Phones (Landline)\": 45100,\n \"GDP\": 2742000000\n },\n {\n \"Country Name\": \"Guinea\",\n \"ISO2\": \"GN\",\n \"ISO3\": \"GIN\",\n \"Top Level Domain\": \"gn\",\n \"FIPS\": \"GV\",\n \"ISO Numeric\": 324,\n \"GeoNameID\": 2420477,\n \"E164\": 224,\n \"Phone Code\": 224,\n \"Continent\": \"Africa\",\n \"Capital\": \"Conakry\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-GN\",\n \"Languages\": \"French (official)\",\n \"Area KM2\": 245857,\n \"Internet Hosts\": 15,\n \"Internet Users\": 95000,\n \"Phones (Mobile)\": 4781000,\n \"Phones (Landline)\": 18000,\n \"GDP\": 6544000000\n },\n {\n \"Country Name\": \"Guinea-Bissau\",\n \"ISO2\": \"GW\",\n \"ISO3\": \"GNB\",\n \"Top Level Domain\": \"gw\",\n \"FIPS\": \"PU\",\n \"ISO Numeric\": 624,\n \"GeoNameID\": 2372248,\n \"E164\": 245,\n \"Phone Code\": 245,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bissau\",\n \"Time Zone in Capital\": \"Africa/Bissau\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"pt-GW,pov\",\n \"Languages\": \"Portuguese (official), Crioulo, African languages\",\n \"Area KM2\": 36120,\n \"Internet Hosts\": 90,\n \"Internet Users\": 37100,\n \"Phones (Mobile)\": 1100000,\n \"Phones (Landline)\": 5000,\n \"GDP\": 880000000\n },\n {\n \"Country Name\": \"Guyana\",\n \"ISO2\": \"GY\",\n \"ISO3\": \"GUY\",\n \"Top Level Domain\": \"gy\",\n \"FIPS\": \"GY\",\n \"ISO Numeric\": 328,\n \"GeoNameID\": 3378535,\n \"E164\": 592,\n \"Phone Code\": 592,\n \"Continent\": \"South America\",\n \"Capital\": \"Georgetown\",\n \"Time Zone in Capital\": \"America/Guyana\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-GY\",\n \"Languages\": \"English, Amerindian dialects, Creole, Caribbean Hindustani (a dialect of Hindi), Urdu\",\n \"Area KM2\": 214970,\n \"Internet Hosts\": 24936,\n \"Internet Users\": 189600,\n \"Phones (Mobile)\": 547000,\n \"Phones (Landline)\": 154200,\n \"GDP\": 3020000000\n },\n {\n \"Country Name\": \"Haiti\",\n \"ISO2\": \"HT\",\n \"ISO3\": \"HTI\",\n \"Top Level Domain\": \"ht\",\n \"FIPS\": \"HA\",\n \"ISO Numeric\": 332,\n \"GeoNameID\": 3723988,\n \"E164\": 509,\n \"Phone Code\": 509,\n \"Continent\": \"North America\",\n \"Capital\": \"Port-au-Prince\",\n \"Time Zone in Capital\": \"America/Port-au-Prince\",\n \"Currency\": \"Gourde\",\n \"Language Codes\": \"ht,fr-HT\",\n \"Languages\": \"French (official), Creole (official)\",\n \"Area KM2\": 27750,\n \"Internet Hosts\": 555,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 6095000,\n \"Phones (Landline)\": 50000,\n \"GDP\": 8287000000\n },\n {\n \"Country Name\": \"Honduras\",\n \"ISO2\": \"HN\",\n \"ISO3\": \"HND\",\n \"Top Level Domain\": \"hn\",\n \"FIPS\": \"HO\",\n \"ISO Numeric\": 340,\n \"GeoNameID\": 3608932,\n \"E164\": 504,\n \"Phone Code\": 504,\n \"Continent\": \"North America\",\n \"Capital\": \"Tegucigalpa\",\n \"Time Zone in Capital\": \"America/Tegucigalpa\",\n \"Currency\": \"Lempira\",\n \"Language Codes\": \"es-HN\",\n \"Languages\": \"Spanish (official), Amerindian dialects\",\n \"Area KM2\": 112090,\n \"Internet Hosts\": 30955,\n \"Internet Users\": 731700,\n \"Phones (Mobile)\": 7370000,\n \"Phones (Landline)\": 610000,\n \"GDP\": 18880000000\n },\n {\n \"Country Name\": \"Hong Kong\",\n \"ISO2\": \"HK\",\n \"ISO3\": \"HKG\",\n \"Top Level Domain\": \"hk\",\n \"FIPS\": \"HK\",\n \"ISO Numeric\": 344,\n \"GeoNameID\": 1819730,\n \"E164\": 852,\n \"Phone Code\": 852,\n \"Continent\": \"Asia\",\n \"Capital\": \"Hong Kong\",\n \"Time Zone in Capital\": \"Asia/Hong_Kong\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"zh-HK,yue,zh,en\",\n \"Languages\": \"Cantonese (official) 89.5%, English (official) 3.5%, Putonghua (Mandarin) 1.4%, other Chinese dialects 4%, other 1.6% (2011 est.)\",\n \"Area KM2\": 1092,\n \"Internet Hosts\": 870041,\n \"Internet Users\": 4873000,\n \"Phones (Mobile)\": 16403000,\n \"Phones (Landline)\": 4362000,\n \"GDP\": 272100000000\n },\n {\n \"Country Name\": \"Hungary\",\n \"ISO2\": \"HU\",\n \"ISO3\": \"HUN\",\n \"Top Level Domain\": \"hu\",\n \"FIPS\": \"HU\",\n \"ISO Numeric\": 348,\n \"GeoNameID\": 719819,\n \"E164\": 36,\n \"Phone Code\": 36,\n \"Continent\": \"Europe\",\n \"Capital\": \"Budapest\",\n \"Time Zone in Capital\": \"Europe/Budapest\",\n \"Currency\": \"Forint\",\n \"Language Codes\": \"hu-HU\",\n \"Languages\": \"Hungarian (official) 99.6%, English 16%, German 11.2%, Russian 1.6%, Romanian 1.3%, French 1.2%, other 4.2%\",\n \"Area KM2\": 93030,\n \"Internet Hosts\": 3145000,\n \"Internet Users\": 6176000,\n \"Phones (Mobile)\": 11580000,\n \"Phones (Landline)\": 2960000,\n \"GDP\": 130600000000\n },\n {\n \"Country Name\": \"Iceland\",\n \"ISO2\": \"IS\",\n \"ISO3\": \"ISL\",\n \"Top Level Domain\": \"is\",\n \"FIPS\": \"IC\",\n \"ISO Numeric\": 352,\n \"GeoNameID\": 2629691,\n \"E164\": 354,\n \"Phone Code\": 354,\n \"Continent\": \"Europe\",\n \"Capital\": \"Reykjavik\",\n \"Time Zone in Capital\": \"Atlantic/Reykjavik\",\n \"Currency\": \"Krona\",\n \"Language Codes\": \"is,en,de,da,sv,no\",\n \"Languages\": \"Icelandic, English, Nordic languages, German widely spoken\",\n \"Area KM2\": 103000,\n \"Internet Hosts\": 369969,\n \"Internet Users\": 301600,\n \"Phones (Mobile)\": 346000,\n \"Phones (Landline)\": 189000,\n \"GDP\": 14590000000\n },\n {\n \"Country Name\": \"India\",\n \"ISO2\": \"IN\",\n \"ISO3\": \"IND\",\n \"Top Level Domain\": \"in\",\n \"FIPS\": \"IN\",\n \"ISO Numeric\": 356,\n \"GeoNameID\": 1269750,\n \"E164\": 91,\n \"Phone Code\": 91,\n \"Continent\": \"Asia\",\n \"Capital\": \"New Delhi\",\n \"Time Zone in Capital\": \"Asia/Kolkata\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc\",\n \"Languages\": \"Hindi 41%, Bengali 8.1%, Telugu 7.2%, Marathi 7%, Tamil 5.9%, Urdu 5%, Gujarati 4.5%, Kannada 3.7%, Malayalam 3.2%, Oriya 3.2%, Punjabi 2.8%, Assamese 1.3%, Maithili 1.2%, other 5.9%\",\n \"Area KM2\": 3287590,\n \"Internet Hosts\": 6746000,\n \"Internet Users\": 61338000,\n \"Phones (Mobile)\": 893862000,\n \"Phones (Landline)\": 31080000,\n \"GDP\": 1670000000000\n },\n {\n \"Country Name\": \"Indonesia\",\n \"ISO2\": \"ID\",\n \"ISO3\": \"IDN\",\n \"Top Level Domain\": \"id\",\n \"FIPS\": \"ID\",\n \"ISO Numeric\": 360,\n \"GeoNameID\": 1643084,\n \"E164\": 62,\n \"Phone Code\": 62,\n \"Continent\": \"Asia\",\n \"Capital\": \"Jakarta\",\n \"Time Zone in Capital\": \"Asia/Jakarta\",\n \"Currency\": \"Rupiah\",\n \"Language Codes\": \"id,en,nl,jv\",\n \"Languages\": \"Bahasa Indonesia (official, modified form of Malay), English, Dutch, local dialects (of which the most widely spoken is Javanese)\",\n \"Area KM2\": 1919440,\n \"Internet Hosts\": 1344000,\n \"Internet Users\": 20000000,\n \"Phones (Mobile)\": 281960000,\n \"Phones (Landline)\": 37983000,\n \"GDP\": 867500000000\n },\n {\n \"Country Name\": \"Iran\",\n \"ISO2\": \"IR\",\n \"ISO3\": \"IRN\",\n \"Top Level Domain\": \"ir\",\n \"FIPS\": \"IR\",\n \"ISO Numeric\": 364,\n \"GeoNameID\": 130758,\n \"E164\": 98,\n \"Phone Code\": 98,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tehran\",\n \"Time Zone in Capital\": \"Asia/Tehran\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"fa-IR,ku\",\n \"Languages\": \"Persian (official) 53%, Azeri Turkic and Turkic dialects 18%, Kurdish 10%, Gilaki and Mazandarani 7%, Luri 6%, Balochi 2%, Arabic 2%, other 2%\",\n \"Area KM2\": 1648000,\n \"Internet Hosts\": 197804,\n \"Internet Users\": 8214000,\n \"Phones (Mobile)\": 58160000,\n \"Phones (Landline)\": 28760000,\n \"GDP\": 411900000000\n },\n {\n \"Country Name\": \"Iraq\",\n \"ISO2\": \"IQ\",\n \"ISO3\": \"IRQ\",\n \"Top Level Domain\": \"iq\",\n \"FIPS\": \"IZ\",\n \"ISO Numeric\": 368,\n \"GeoNameID\": 99237,\n \"E164\": 964,\n \"Phone Code\": 964,\n \"Continent\": \"Asia\",\n \"Capital\": \"Baghdad\",\n \"Time Zone in Capital\": \"Asia/Baghdad\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-IQ,ku,hy\",\n \"Languages\": \"Arabic (official), Kurdish (official), Turkmen (a Turkish dialect) and Assyrian (Neo-Aramaic) are official in areas where they constitute a majority of the population), Armenian\",\n \"Area KM2\": 437072,\n \"Internet Hosts\": 26,\n \"Internet Users\": 325900,\n \"Phones (Mobile)\": 26760000,\n \"Phones (Landline)\": 1870000,\n \"GDP\": 221800000000\n },\n {\n \"Country Name\": \"Ireland\",\n \"ISO2\": \"IE\",\n \"ISO3\": \"IRL\",\n \"Top Level Domain\": \"ie\",\n \"FIPS\": \"EI\",\n \"ISO Numeric\": 372,\n \"GeoNameID\": 2963597,\n \"E164\": 353,\n \"Phone Code\": 353,\n \"Continent\": \"Europe\",\n \"Capital\": \"Dublin\",\n \"Time Zone in Capital\": \"Europe/Dublin\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"en-IE,ga-IE\",\n \"Languages\": \"English (official, the language generally used), Irish (Gaelic or Gaeilge) (official, spoken mainly in areas along the western coast)\",\n \"Area KM2\": 70280,\n \"Internet Hosts\": 1387000,\n \"Internet Users\": 3042000,\n \"Phones (Mobile)\": 4906000,\n \"Phones (Landline)\": 2007000,\n \"GDP\": 220900000000\n },\n {\n \"Country Name\": \"Isle of Man\",\n \"ISO2\": \"IM\",\n \"ISO3\": \"IMN\",\n \"Top Level Domain\": \"im\",\n \"FIPS\": \"IM\",\n \"ISO Numeric\": 833,\n \"GeoNameID\": 3042225,\n \"E164\": 44,\n \"Phone Code\": \"44-1624\",\n \"Continent\": \"Europe\",\n \"Capital\": \"Douglas, Isle of Man\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en,gv\",\n \"Languages\": \"English, Manx Gaelic (about 2% of the population has some knowledge)\",\n \"Area KM2\": 572,\n \"Internet Hosts\": 895,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 4076000000\n },\n {\n \"Country Name\": \"Israel\",\n \"ISO2\": \"IL\",\n \"ISO3\": \"ISR\",\n \"Top Level Domain\": \"il\",\n \"FIPS\": \"IS\",\n \"ISO Numeric\": 376,\n \"GeoNameID\": 294640,\n \"E164\": 972,\n \"Phone Code\": 972,\n \"Continent\": \"Asia\",\n \"Capital\": \"Jerusalem\",\n \"Time Zone in Capital\": \"Asia/Jerusalem\",\n \"Currency\": \"Shekel\",\n \"Language Codes\": \"he,ar-IL,en-IL,\",\n \"Languages\": \"Hebrew (official), Arabic (used officially for Arab minority), English (most commonly used foreign language)\",\n \"Area KM2\": 20770,\n \"Internet Hosts\": 2483000,\n \"Internet Users\": 4525000,\n \"Phones (Mobile)\": 9225000,\n \"Phones (Landline)\": 3594000,\n \"GDP\": 272700000000\n },\n {\n \"Country Name\": \"Italy\",\n \"ISO2\": \"IT\",\n \"ISO3\": \"ITA\",\n \"Top Level Domain\": \"it\",\n \"FIPS\": \"IT\",\n \"ISO Numeric\": 380,\n \"GeoNameID\": 3175395,\n \"E164\": 39,\n \"Phone Code\": 39,\n \"Continent\": \"Europe\",\n \"Capital\": \"Rome\",\n \"Time Zone in Capital\": \"Europe/Rome\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"it-IT,de-IT,fr-IT,sc,ca,co,sl\",\n \"Languages\": \"Italian (official), German (parts of Trentino-Alto Adige region are predominantly German-speaking), French (small French-speaking minority in Valle d'Aosta region), Slovene (Slovene-speaking minority in the Trieste-Gorizia area)\",\n \"Area KM2\": 301230,\n \"Internet Hosts\": 25662000,\n \"Internet Users\": 29235000,\n \"Phones (Mobile)\": 97225000,\n \"Phones (Landline)\": 21656000,\n \"GDP\": 2068000000000\n },\n {\n \"Country Name\": \"Ivory Coast\",\n \"ISO2\": \"CI\",\n \"ISO3\": \"CIV\",\n \"Top Level Domain\": \"ci\",\n \"FIPS\": \"IV\",\n \"ISO Numeric\": 384,\n \"GeoNameID\": 2287781,\n \"E164\": 225,\n \"Phone Code\": 225,\n \"Continent\": \"Africa\",\n \"Capital\": \"Yamoussoukro\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CI\",\n \"Languages\": \"French (official), 60 native dialects of which Dioula is the most widely spoken\",\n \"Area KM2\": 322460,\n \"Internet Hosts\": 9115,\n \"Internet Users\": 967300,\n \"Phones (Mobile)\": 19827000,\n \"Phones (Landline)\": 268000,\n \"GDP\": 28280000000\n },\n {\n \"Country Name\": \"Jamaica\",\n \"ISO2\": \"JM\",\n \"ISO3\": \"JAM\",\n \"Top Level Domain\": \"jm\",\n \"FIPS\": \"JM\",\n \"ISO Numeric\": 388,\n \"GeoNameID\": 3489940,\n \"E164\": 1,\n \"Phone Code\": \"1-876\",\n \"Continent\": \"North America\",\n \"Capital\": \"Kingston\",\n \"Time Zone in Capital\": \"America/Jamaica\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-JM\",\n \"Languages\": \"English, English patois\",\n \"Area KM2\": 10991,\n \"Internet Hosts\": 3906,\n \"Internet Users\": 1581000,\n \"Phones (Mobile)\": 2665000,\n \"Phones (Landline)\": 265000,\n \"GDP\": 14390000000\n },\n {\n \"Country Name\": \"Japan\",\n \"ISO2\": \"JP\",\n \"ISO3\": \"JPN\",\n \"Top Level Domain\": \"jp\",\n \"FIPS\": \"JA\",\n \"ISO Numeric\": 392,\n \"GeoNameID\": 1861060,\n \"E164\": 81,\n \"Phone Code\": 81,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tokyo\",\n \"Time Zone in Capital\": \"Asia/Tokyo\",\n \"Currency\": \"Yen\",\n \"Language Codes\": \"ja\",\n \"Languages\": \"Japanese\",\n \"Area KM2\": 377835,\n \"Internet Hosts\": 64453000,\n \"Internet Users\": 99182000,\n \"Phones (Mobile)\": 138363000,\n \"Phones (Landline)\": 64273000,\n \"GDP\": 5007000000000\n },\n {\n \"Country Name\": \"Jersey\",\n \"ISO2\": \"JE\",\n \"ISO3\": \"JEY\",\n \"Top Level Domain\": \"je\",\n \"FIPS\": \"JE\",\n \"ISO Numeric\": 832,\n \"GeoNameID\": 3042142,\n \"E164\": 44,\n \"Phone Code\": \"44-1534\",\n \"Continent\": \"Europe\",\n \"Capital\": \"Saint Helier\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en,pt\",\n \"Languages\": \"English 94.5% (official), Portuguese 4.6%, other 0.9% (2001 census)\",\n \"Area KM2\": 116,\n \"Internet Hosts\": 264,\n \"Internet Users\": 29500,\n \"Phones (Mobile)\": 108000,\n \"Phones (Landline)\": 73800,\n \"GDP\": 5100000000\n },\n {\n \"Country Name\": \"Jordan\",\n \"ISO2\": \"JO\",\n \"ISO3\": \"JOR\",\n \"Top Level Domain\": \"jo\",\n \"FIPS\": \"JO\",\n \"ISO Numeric\": 400,\n \"GeoNameID\": 248816,\n \"E164\": 962,\n \"Phone Code\": 962,\n \"Continent\": \"Asia\",\n \"Capital\": \"Amman\",\n \"Time Zone in Capital\": \"Asia/Amman\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-JO,en\",\n \"Languages\": \"Arabic (official), English (widely understood among upper and middle classes)\",\n \"Area KM2\": 92300,\n \"Internet Hosts\": 69473,\n \"Internet Users\": 1642000,\n \"Phones (Mobile)\": 8984000,\n \"Phones (Landline)\": 435000,\n \"GDP\": 34080000000\n },\n {\n \"Country Name\": \"Kazakhstan\",\n \"ISO2\": \"KZ\",\n \"ISO3\": \"KAZ\",\n \"Top Level Domain\": \"kz\",\n \"FIPS\": \"KZ\",\n \"ISO Numeric\": 398,\n \"GeoNameID\": 1522867,\n \"E164\": 7,\n \"Phone Code\": 7,\n \"Continent\": \"Asia\",\n \"Capital\": \"Astana\",\n \"Time Zone in Capital\": \"Asia/Almaty\",\n \"Currency\": \"Tenge\",\n \"Language Codes\": \"kk,ru\",\n \"Languages\": \"Kazakh (official, Qazaq) 64.4%, Russian (official, used in everyday business, designated the \\\"language of interethnic communication\\\") 95% (2001 est.)\",\n \"Area KM2\": 2717300,\n \"Internet Hosts\": 67464,\n \"Internet Users\": 5299000,\n \"Phones (Mobile)\": 28731000,\n \"Phones (Landline)\": 4340000,\n \"GDP\": 224900000000\n },\n {\n \"Country Name\": \"Kenya\",\n \"ISO2\": \"KE\",\n \"ISO3\": \"KEN\",\n \"Top Level Domain\": \"ke\",\n \"FIPS\": \"KE\",\n \"ISO Numeric\": 404,\n \"GeoNameID\": 192950,\n \"E164\": 254,\n \"Phone Code\": 254,\n \"Continent\": \"Africa\",\n \"Capital\": \"Nairobi\",\n \"Time Zone in Capital\": \"Africa/Nairobi\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"en-KE,sw-KE\",\n \"Languages\": \"English (official), Kiswahili (official), numerous indigenous languages\",\n \"Area KM2\": 582650,\n \"Internet Hosts\": 71018,\n \"Internet Users\": 3996000,\n \"Phones (Mobile)\": 30732000,\n \"Phones (Landline)\": 251600,\n \"GDP\": 45310000000\n },\n {\n \"Country Name\": \"Kiribati\",\n \"ISO2\": \"KI\",\n \"ISO3\": \"KIR\",\n \"Top Level Domain\": \"ki\",\n \"FIPS\": \"KR\",\n \"ISO Numeric\": 296,\n \"GeoNameID\": 4030945,\n \"E164\": 686,\n \"Phone Code\": 686,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Tarawa\",\n \"Time Zone in Capital\": \"Pacific/Tarawa\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-KI,gil\",\n \"Languages\": \"I-Kiribati, English (official)\",\n \"Area KM2\": 811,\n \"Internet Hosts\": 327,\n \"Internet Users\": 7800,\n \"Phones (Mobile)\": 16000,\n \"Phones (Landline)\": 9000,\n \"GDP\": 173000000\n },\n {\n \"Country Name\": \"Kosovo\",\n \"ISO2\": \"XK\",\n \"ISO3\": \"XKX\",\n \"Top Level Domain\": \"\",\n \"FIPS\": \"KV\",\n \"ISO Numeric\": 0,\n \"GeoNameID\": 831053,\n \"E164\": 383,\n \"Phone Code\": 383,\n \"Continent\": \"Europe\",\n \"Capital\": \"Pristina\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sq,sr\",\n \"Languages\": \"Albanian (official), Serbian (official), Bosnian, Turkish, Roma\",\n \"Area KM2\": 10887,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 562000,\n \"Phones (Landline)\": 106300,\n \"GDP\": 7150000000\n },\n {\n \"Country Name\": \"Kuwait\",\n \"ISO2\": \"KW\",\n \"ISO3\": \"KWT\",\n \"Top Level Domain\": \"kw\",\n \"FIPS\": \"KU\",\n \"ISO Numeric\": 414,\n \"GeoNameID\": 285570,\n \"E164\": 965,\n \"Phone Code\": 965,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kuwait City\",\n \"Time Zone in Capital\": \"Asia/Kuwait\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-KW,en\",\n \"Languages\": \"Arabic (official), English widely spoken\",\n \"Area KM2\": 17820,\n \"Internet Hosts\": 2771,\n \"Internet Users\": 1100000,\n \"Phones (Mobile)\": 5526000,\n \"Phones (Landline)\": 510000,\n \"GDP\": 179500000000\n },\n {\n \"Country Name\": \"Kyrgyzstan\",\n \"ISO2\": \"KG\",\n \"ISO3\": \"KGZ\",\n \"Top Level Domain\": \"kg\",\n \"FIPS\": \"KG\",\n \"ISO Numeric\": 417,\n \"GeoNameID\": 1527747,\n \"E164\": 996,\n \"Phone Code\": 996,\n \"Continent\": \"Asia\",\n \"Capital\": \"Bishkek\",\n \"Time Zone in Capital\": \"Asia/Bishkek\",\n \"Currency\": \"Som\",\n \"Language Codes\": \"ky,uz,ru\",\n \"Languages\": \"Kyrgyz (official) 64.7%, Uzbek 13.6%, Russian (official) 12.5%, Dungun 1%, other 8.2% (1999 census)\",\n \"Area KM2\": 198500,\n \"Internet Hosts\": 115573,\n \"Internet Users\": 2195000,\n \"Phones (Mobile)\": 6800000,\n \"Phones (Landline)\": 489000,\n \"GDP\": 7234000000\n },\n {\n \"Country Name\": \"Laos\",\n \"ISO2\": \"LA\",\n \"ISO3\": \"LAO\",\n \"Top Level Domain\": \"la\",\n \"FIPS\": \"LA\",\n \"ISO Numeric\": 418,\n \"GeoNameID\": 1655842,\n \"E164\": 856,\n \"Phone Code\": 856,\n \"Continent\": \"Asia\",\n \"Capital\": \"Vientiane\",\n \"Time Zone in Capital\": \"Asia/Vientiane\",\n \"Currency\": \"Kip\",\n \"Language Codes\": \"lo,fr,en\",\n \"Languages\": \"Lao (official), French, English, various ethnic languages\",\n \"Area KM2\": 236800,\n \"Internet Hosts\": 1532,\n \"Internet Users\": 300000,\n \"Phones (Mobile)\": 6492000,\n \"Phones (Landline)\": 112000,\n \"GDP\": 10100000000\n },\n {\n \"Country Name\": \"Latvia\",\n \"ISO2\": \"LV\",\n \"ISO3\": \"LVA\",\n \"Top Level Domain\": \"lv\",\n \"FIPS\": \"LG\",\n \"ISO Numeric\": 428,\n \"GeoNameID\": 458258,\n \"E164\": 371,\n \"Phone Code\": 371,\n \"Continent\": \"Europe\",\n \"Capital\": \"Riga\",\n \"Time Zone in Capital\": \"Europe/Riga\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"lv,ru,lt\",\n \"Languages\": \"Latvian (official) 56.3%, Russian 33.8%, other 0.6% (includes Polish, Ukrainian, and Belarusian), unspecified 9.4% (2011 est.)\",\n \"Area KM2\": 64589,\n \"Internet Hosts\": 359604,\n \"Internet Users\": 1504000,\n \"Phones (Mobile)\": 2310000,\n \"Phones (Landline)\": 501000,\n \"GDP\": 30380000000\n },\n {\n \"Country Name\": \"Lebanon\",\n \"ISO2\": \"LB\",\n \"ISO3\": \"LBN\",\n \"Top Level Domain\": \"lb\",\n \"FIPS\": \"LE\",\n \"ISO Numeric\": 422,\n \"GeoNameID\": 272103,\n \"E164\": 961,\n \"Phone Code\": 961,\n \"Continent\": \"Asia\",\n \"Capital\": \"Beirut\",\n \"Time Zone in Capital\": \"Asia/Beirut\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-LB,fr-LB,en,hy\",\n \"Languages\": \"Arabic (official), French, English, Armenian\",\n \"Area KM2\": 10400,\n \"Internet Hosts\": 64926,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 4000000,\n \"Phones (Landline)\": 878000,\n \"GDP\": 43490000000\n },\n {\n \"Country Name\": \"Lesotho\",\n \"ISO2\": \"LS\",\n \"ISO3\": \"LSO\",\n \"Top Level Domain\": \"ls\",\n \"FIPS\": \"LT\",\n \"ISO Numeric\": 426,\n \"GeoNameID\": 932692,\n \"E164\": 266,\n \"Phone Code\": 266,\n \"Continent\": \"Africa\",\n \"Capital\": \"Maseru\",\n \"Time Zone in Capital\": \"Africa/Johannesburg\",\n \"Currency\": \"Loti\",\n \"Language Codes\": \"en-LS,st,zu,xh\",\n \"Languages\": \"Sesotho (official) (southern Sotho), English (official), Zulu, Xhosa\",\n \"Area KM2\": 30355,\n \"Internet Hosts\": 11030,\n \"Internet Users\": 76800,\n \"Phones (Mobile)\": 1312000,\n \"Phones (Landline)\": 43100,\n \"GDP\": 2457000000\n },\n {\n \"Country Name\": \"Liberia\",\n \"ISO2\": \"LR\",\n \"ISO3\": \"LBR\",\n \"Top Level Domain\": \"lr\",\n \"FIPS\": \"LI\",\n \"ISO Numeric\": 430,\n \"GeoNameID\": 2275384,\n \"E164\": 231,\n \"Phone Code\": 231,\n \"Continent\": \"Africa\",\n \"Capital\": \"Monrovia\",\n \"Time Zone in Capital\": \"Africa/Monrovia\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-LR\",\n \"Languages\": \"English 20% (official), some 20 ethnic group languages few of which can be written or used in correspondence\",\n \"Area KM2\": 111370,\n \"Internet Hosts\": 7,\n \"Internet Users\": 20000,\n \"Phones (Mobile)\": 2394000,\n \"Phones (Landline)\": 3200,\n \"GDP\": 1977000000\n },\n {\n \"Country Name\": \"Libya\",\n \"ISO2\": \"LY\",\n \"ISO3\": \"LBY\",\n \"Top Level Domain\": \"ly\",\n \"FIPS\": \"LY\",\n \"ISO Numeric\": 434,\n \"GeoNameID\": 2215636,\n \"E164\": 218,\n \"Phone Code\": 218,\n \"Continent\": \"Africa\",\n \"Capital\": \"Tripolis\",\n \"Time Zone in Capital\": \"Africa/Tripoli\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-LY,it,en\",\n \"Languages\": \"Arabic (official), Italian, English (all widely understood in the major cities); Berber (Nafusi, Ghadamis, Suknah, Awjilah, Tamasheq)\",\n \"Area KM2\": 1759540,\n \"Internet Hosts\": 17926,\n \"Internet Users\": 353900,\n \"Phones (Mobile)\": 9590000,\n \"Phones (Landline)\": 814000,\n \"GDP\": 70920000000\n },\n {\n \"Country Name\": \"Liechtenstein\",\n \"ISO2\": \"LI\",\n \"ISO3\": \"LIE\",\n \"Top Level Domain\": \"li\",\n \"FIPS\": \"LS\",\n \"ISO Numeric\": 438,\n \"GeoNameID\": 3042058,\n \"E164\": 423,\n \"Phone Code\": 423,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vaduz\",\n \"Time Zone in Capital\": \"Europe/Zurich\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"de-LI\",\n \"Languages\": \"German 94.5% (official) (Alemannic is the main dialect), Italian 1.1%, other 4.3% (2010 est.)\",\n \"Area KM2\": 160,\n \"Internet Hosts\": 14278,\n \"Internet Users\": 23000,\n \"Phones (Mobile)\": 38000,\n \"Phones (Landline)\": 20000,\n \"GDP\": 5113000000\n },\n {\n \"Country Name\": \"Lithuania\",\n \"ISO2\": \"LT\",\n \"ISO3\": \"LTU\",\n \"Top Level Domain\": \"lt\",\n \"FIPS\": \"LH\",\n \"ISO Numeric\": 440,\n \"GeoNameID\": 597427,\n \"E164\": 370,\n \"Phone Code\": 370,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vilnius\",\n \"Time Zone in Capital\": \"Europe/Vilnius\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"lt,ru,pl\",\n \"Languages\": \"Lithuanian (official) 82%, Russian 8%, Polish 5.6%, other 0.9%, unspecified 3.5% (2011 est.)\",\n \"Area KM2\": 65200,\n \"Internet Hosts\": 1205000,\n \"Internet Users\": 1964000,\n \"Phones (Mobile)\": 5000000,\n \"Phones (Landline)\": 667300,\n \"GDP\": 46710000000\n },\n {\n \"Country Name\": \"Luxembourg\",\n \"ISO2\": \"LU\",\n \"ISO3\": \"LUX\",\n \"Top Level Domain\": \"lu\",\n \"FIPS\": \"LU\",\n \"ISO Numeric\": 442,\n \"GeoNameID\": 2960313,\n \"E164\": 352,\n \"Phone Code\": 352,\n \"Continent\": \"Europe\",\n \"Capital\": \"Luxembourg\",\n \"Time Zone in Capital\": \"Europe/Luxembourg\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"lb,de-LU,fr-LU\",\n \"Languages\": \"Luxembourgish (official administrative language and national language (spoken vernacular)), French (official administrative language), German (official administrative language)\",\n \"Area KM2\": 2586,\n \"Internet Hosts\": 250900,\n \"Internet Users\": 424500,\n \"Phones (Mobile)\": 761300,\n \"Phones (Landline)\": 266700,\n \"GDP\": 60540000000\n },\n {\n \"Country Name\": \"Macau\",\n \"ISO2\": \"MO\",\n \"ISO3\": \"MAC\",\n \"Top Level Domain\": \"mo\",\n \"FIPS\": \"MC\",\n \"ISO Numeric\": 446,\n \"GeoNameID\": 1821275,\n \"E164\": 853,\n \"Phone Code\": 853,\n \"Continent\": \"Asia\",\n \"Capital\": \"Macao\",\n \"Time Zone in Capital\": \"Asia/Macau\",\n \"Currency\": \"Pataca\",\n \"Language Codes\": \"zh,zh-MO,pt\",\n \"Languages\": \"Cantonese 83.3%, Mandarin 5%, Hokkien 3.7%, English 2.3%, other Chinese dialects 2%, Tagalog 1.7%, Portuguese 0.7%, other 1.3%\",\n \"Area KM2\": 254,\n \"Internet Hosts\": 327,\n \"Internet Users\": 270200,\n \"Phones (Mobile)\": 1613000,\n \"Phones (Landline)\": 162500,\n \"GDP\": 51680000000\n },\n {\n \"Country Name\": \"Macedonia\",\n \"ISO2\": \"MK\",\n \"ISO3\": \"MKD\",\n \"Top Level Domain\": \"mk\",\n \"FIPS\": \"MK\",\n \"ISO Numeric\": 807,\n \"GeoNameID\": 718075,\n \"E164\": 389,\n \"Phone Code\": 389,\n \"Continent\": \"Europe\",\n \"Capital\": \"Skopje\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Denar\",\n \"Language Codes\": \"mk,sq,tr,rmm,sr\",\n \"Languages\": \"Macedonian (official) 66.5%, Albanian (official) 25.1%, Turkish 3.5%, Roma 1.9%, Serbian 1.2%, other 1.8% (2002 census)\",\n \"Area KM2\": 25333,\n \"Internet Hosts\": 62826,\n \"Internet Users\": 1057000,\n \"Phones (Mobile)\": 2235000,\n \"Phones (Landline)\": 407900,\n \"GDP\": 10650000000\n },\n {\n \"Country Name\": \"Madagascar\",\n \"ISO2\": \"MG\",\n \"ISO3\": \"MDG\",\n \"Top Level Domain\": \"mg\",\n \"FIPS\": \"MA\",\n \"ISO Numeric\": 450,\n \"GeoNameID\": 1062947,\n \"E164\": 261,\n \"Phone Code\": 261,\n \"Continent\": \"Africa\",\n \"Capital\": \"Antananarivo\",\n \"Time Zone in Capital\": \"Indian/Antananarivo\",\n \"Currency\": \"Ariary\",\n \"Language Codes\": \"fr-MG,mg\",\n \"Languages\": \"French (official), Malagasy (official), English\",\n \"Area KM2\": 587040,\n \"Internet Hosts\": 38392,\n \"Internet Users\": 319900,\n \"Phones (Mobile)\": 8564000,\n \"Phones (Landline)\": 143700,\n \"GDP\": 10530000000\n },\n {\n \"Country Name\": \"Malawi\",\n \"ISO2\": \"MW\",\n \"ISO3\": \"MWI\",\n \"Top Level Domain\": \"mw\",\n \"FIPS\": \"MI\",\n \"ISO Numeric\": 454,\n \"GeoNameID\": 927384,\n \"E164\": 265,\n \"Phone Code\": 265,\n \"Continent\": \"Africa\",\n \"Capital\": \"Lilongwe\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Kwacha\",\n \"Language Codes\": \"ny,yao,tum,swk\",\n \"Languages\": \"English (official), Chichewa (common), Chinyanja, Chiyao, Chitumbuka, Chilomwe, Chinkhonde, Chingoni, Chisena, Chitonga, Chinyakyusa, Chilambya\",\n \"Area KM2\": 118480,\n \"Internet Hosts\": 1099,\n \"Internet Users\": 716400,\n \"Phones (Mobile)\": 4420000,\n \"Phones (Landline)\": 227300,\n \"GDP\": 3683000000\n },\n {\n \"Country Name\": \"Malaysia\",\n \"ISO2\": \"MY\",\n \"ISO3\": \"MYS\",\n \"Top Level Domain\": \"my\",\n \"FIPS\": \"MY\",\n \"ISO Numeric\": 458,\n \"GeoNameID\": 1733045,\n \"E164\": 60,\n \"Phone Code\": 60,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kuala Lumpur\",\n \"Time Zone in Capital\": \"Asia/Kuala_Lumpur\",\n \"Currency\": \"Ringgit\",\n \"Language Codes\": \"ms-MY,en,zh,ta,te,ml,pa,th\",\n \"Languages\": \"Bahasa Malaysia (official), English, Chinese (Cantonese, Mandarin, Hokkien, Hakka, Hainan, Foochow), Tamil, Telugu, Malayalam, Panjabi, Thai\",\n \"Area KM2\": 329750,\n \"Internet Hosts\": 422470,\n \"Internet Users\": 15355000,\n \"Phones (Mobile)\": 41325000,\n \"Phones (Landline)\": 4589000,\n \"GDP\": 312400000000\n },\n {\n \"Country Name\": \"Maldives\",\n \"ISO2\": \"MV\",\n \"ISO3\": \"MDV\",\n \"Top Level Domain\": \"mv\",\n \"FIPS\": \"MV\",\n \"ISO Numeric\": 462,\n \"GeoNameID\": 1282028,\n \"E164\": 960,\n \"Phone Code\": 960,\n \"Continent\": \"Asia\",\n \"Capital\": \"Male\",\n \"Time Zone in Capital\": \"Indian/Maldives\",\n \"Currency\": \"Rufiyaa\",\n \"Language Codes\": \"dv,en\",\n \"Languages\": \"Dhivehi (official, dialect of Sinhala, script derived from Arabic), English (spoken by most government officials)\",\n \"Area KM2\": 300,\n \"Internet Hosts\": 3296,\n \"Internet Users\": 86400,\n \"Phones (Mobile)\": 560000,\n \"Phones (Landline)\": 23140,\n \"GDP\": 2270000000\n },\n {\n \"Country Name\": \"Mali\",\n \"ISO2\": \"ML\",\n \"ISO3\": \"MLI\",\n \"Top Level Domain\": \"ml\",\n \"FIPS\": \"ML\",\n \"ISO Numeric\": 466,\n \"GeoNameID\": 2453866,\n \"E164\": 223,\n \"Phone Code\": 223,\n \"Continent\": \"Africa\",\n \"Capital\": \"Bamako\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-ML,bm\",\n \"Languages\": \"French (official), Bambara 46.3%, Peul/foulfoulbe 9.4%, Dogon 7.2%, Maraka/soninke 6.4%, Malinke 5.6%, Sonrhai/djerma 5.6%, Minianka 4.3%, Tamacheq 3.5%, Senoufo 2.6%, unspecified 0.6%, other 8.5%\",\n \"Area KM2\": 1240000,\n \"Internet Hosts\": 437,\n \"Internet Users\": 249800,\n \"Phones (Mobile)\": 14613000,\n \"Phones (Landline)\": 112000,\n \"GDP\": 11370000000\n },\n {\n \"Country Name\": \"Malta\",\n \"ISO2\": \"MT\",\n \"ISO3\": \"MLT\",\n \"Top Level Domain\": \"mt\",\n \"FIPS\": \"MT\",\n \"ISO Numeric\": 470,\n \"GeoNameID\": 2562770,\n \"E164\": 356,\n \"Phone Code\": 356,\n \"Continent\": \"Europe\",\n \"Capital\": \"Valletta\",\n \"Time Zone in Capital\": \"Europe/Malta\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"mt,en-MT\",\n \"Languages\": \"Maltese (official) 90.1%, English (official) 6%, multilingual 3%, other 0.9% (2005 est.)\",\n \"Area KM2\": 316,\n \"Internet Hosts\": 14754,\n \"Internet Users\": 240600,\n \"Phones (Mobile)\": 539500,\n \"Phones (Landline)\": 229700,\n \"GDP\": 9541000000\n },\n {\n \"Country Name\": \"Marshall Islands\",\n \"ISO2\": \"MH\",\n \"ISO3\": \"MHL\",\n \"Top Level Domain\": \"mh\",\n \"FIPS\": \"RM\",\n \"ISO Numeric\": 584,\n \"GeoNameID\": 2080185,\n \"E164\": 692,\n \"Phone Code\": 692,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Majuro\",\n \"Time Zone in Capital\": \"Pacific/Majuro\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"mh,en-MH\",\n \"Languages\": \"Marshallese (official) 98.2%, other languages 1.8% (1999 census)\",\n \"Area KM2\": 181,\n \"Internet Hosts\": 3,\n \"Internet Users\": 2200,\n \"Phones (Mobile)\": 3800,\n \"Phones (Landline)\": 4400,\n \"GDP\": 193000000\n },\n {\n \"Country Name\": \"Mauritania\",\n \"ISO2\": \"MR\",\n \"ISO3\": \"MRT\",\n \"Top Level Domain\": \"mr\",\n \"FIPS\": \"MR\",\n \"ISO Numeric\": 478,\n \"GeoNameID\": 2378080,\n \"E164\": 222,\n \"Phone Code\": 222,\n \"Continent\": \"Africa\",\n \"Capital\": \"Nouakchott\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Ouguiya\",\n \"Language Codes\": \"ar-MR,fuc,snk,fr,mey,wo\",\n \"Languages\": \"Arabic (official and national), Pulaar, Soninke, Wolof (all national languages), French, Hassaniya (a variety of Arabic)\",\n \"Area KM2\": 1030700,\n \"Internet Hosts\": 22,\n \"Internet Users\": 75000,\n \"Phones (Mobile)\": 4024000,\n \"Phones (Landline)\": 65100,\n \"GDP\": 4183000000\n },\n {\n \"Country Name\": \"Mauritius\",\n \"ISO2\": \"MU\",\n \"ISO3\": \"MUS\",\n \"Top Level Domain\": \"mu\",\n \"FIPS\": \"MP\",\n \"ISO Numeric\": 480,\n \"GeoNameID\": 934292,\n \"E164\": 230,\n \"Phone Code\": 230,\n \"Continent\": \"Africa\",\n \"Capital\": \"Port Louis\",\n \"Time Zone in Capital\": \"Indian/Mauritius\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"en-MU,bho,fr\",\n \"Languages\": \"Creole 86.5%, Bhojpuri 5.3%, French 4.1%, two languages 1.4%, other 2.6% (includes English, the official language, which is spoken by less than 1% of the population), unspecified 0.1% (2011 est.)\",\n \"Area KM2\": 2040,\n \"Internet Hosts\": 51139,\n \"Internet Users\": 290000,\n \"Phones (Mobile)\": 1485000,\n \"Phones (Landline)\": 349100,\n \"GDP\": 11900000000\n },\n {\n \"Country Name\": \"Mayotte\",\n \"ISO2\": \"YT\",\n \"ISO3\": \"MYT\",\n \"Top Level Domain\": \"yt\",\n \"FIPS\": \"MF\",\n \"ISO Numeric\": 175,\n \"GeoNameID\": 1024031,\n \"E164\": 262,\n \"Phone Code\": 262,\n \"Continent\": \"Africa\",\n \"Capital\": \"Mamoudzou\",\n \"Time Zone in Capital\": \"Indian/Mayotte\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-YT\",\n \"Languages\": \"French\",\n \"Area KM2\": 374,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Mexico\",\n \"ISO2\": \"MX\",\n \"ISO3\": \"MEX\",\n \"Top Level Domain\": \"mx\",\n \"FIPS\": \"MX\",\n \"ISO Numeric\": 484,\n \"GeoNameID\": 3996063,\n \"E164\": 52,\n \"Phone Code\": 52,\n \"Continent\": \"North America\",\n \"Capital\": \"Mexico City\",\n \"Time Zone in Capital\": \"America/Mexico_City\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-MX\",\n \"Languages\": \"Spanish only 92.7%, Spanish and indigenous languages 5.7%, indigenous only 0.8%, unspecified 0.8%\",\n \"Area KM2\": 1972550,\n \"Internet Hosts\": 16233000,\n \"Internet Users\": 31020000,\n \"Phones (Mobile)\": 100786000,\n \"Phones (Landline)\": 20220000,\n \"GDP\": 1327000000000\n },\n {\n \"Country Name\": \"Micronesia\",\n \"ISO2\": \"FM\",\n \"ISO3\": \"FSM\",\n \"Top Level Domain\": \"fm\",\n \"FIPS\": \"FM\",\n \"ISO Numeric\": 583,\n \"GeoNameID\": 2081918,\n \"E164\": 691,\n \"Phone Code\": 691,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Palikir\",\n \"Time Zone in Capital\": \"Pacific/Pohnpei\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg\",\n \"Languages\": \"English (official and common language), Chuukese, Kosrean, Pohnpeian, Yapese, Ulithian, Woleaian, Nukuoro, Kapingamarangi\",\n \"Area KM2\": 702,\n \"Internet Hosts\": 4668,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 27600,\n \"Phones (Landline)\": 8400,\n \"GDP\": 339000000\n },\n {\n \"Country Name\": \"Moldova\",\n \"ISO2\": \"MD\",\n \"ISO3\": \"MDA\",\n \"Top Level Domain\": \"md\",\n \"FIPS\": \"MD\",\n \"ISO Numeric\": 498,\n \"GeoNameID\": 617790,\n \"E164\": 373,\n \"Phone Code\": 373,\n \"Continent\": \"Europe\",\n \"Capital\": \"Chisinau\",\n \"Time Zone in Capital\": \"Europe/Chisinau\",\n \"Currency\": \"Leu\",\n \"Language Codes\": \"ro,ru,gag,tr\",\n \"Languages\": \"Moldovan 58.8% (official; virtually the same as the Romanian language), Romanian 16.4%, Russian 16%, Ukrainian 3.8%, Gagauz 3.1% (a Turkish language), Bulgarian 1.1%, other 0.3%, unspecified 0.4%\",\n \"Area KM2\": 33843,\n \"Internet Hosts\": 711564,\n \"Internet Users\": 1333000,\n \"Phones (Mobile)\": 4080000,\n \"Phones (Landline)\": 1206000,\n \"GDP\": 7932000000\n },\n {\n \"Country Name\": \"Monaco\",\n \"ISO2\": \"MC\",\n \"ISO3\": \"MCO\",\n \"Top Level Domain\": \"mc\",\n \"FIPS\": \"MN\",\n \"ISO Numeric\": 492,\n \"GeoNameID\": 2993457,\n \"E164\": 377,\n \"Phone Code\": 377,\n \"Continent\": \"Europe\",\n \"Capital\": \"Monaco\",\n \"Time Zone in Capital\": \"Europe/Monaco\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-MC,en,it\",\n \"Languages\": \"French (official), English, Italian, Monegasque\",\n \"Area KM2\": 2,\n \"Internet Hosts\": 26009,\n \"Internet Users\": 23000,\n \"Phones (Mobile)\": 33200,\n \"Phones (Landline)\": 44500,\n \"GDP\": 5748000000\n },\n {\n \"Country Name\": \"Mongolia\",\n \"ISO2\": \"MN\",\n \"ISO3\": \"MNG\",\n \"Top Level Domain\": \"mn\",\n \"FIPS\": \"MG\",\n \"ISO Numeric\": 496,\n \"GeoNameID\": 2029969,\n \"E164\": 976,\n \"Phone Code\": 976,\n \"Continent\": \"Asia\",\n \"Capital\": \"Ulan Bator\",\n \"Time Zone in Capital\": \"Asia/Ulaanbaatar\",\n \"Currency\": \"Tugrik\",\n \"Language Codes\": \"mn,ru\",\n \"Languages\": \"Khalkha Mongol 90% (official), Turkic, Russian (1999)\",\n \"Area KM2\": 1565000,\n \"Internet Hosts\": 20084,\n \"Internet Users\": 330000,\n \"Phones (Mobile)\": 3375000,\n \"Phones (Landline)\": 176700,\n \"GDP\": 11140000000\n },\n {\n \"Country Name\": \"Montenegro\",\n \"ISO2\": \"ME\",\n \"ISO3\": \"MNE\",\n \"Top Level Domain\": \"me\",\n \"FIPS\": \"MJ\",\n \"ISO Numeric\": 499,\n \"GeoNameID\": 3194884,\n \"E164\": 382,\n \"Phone Code\": 382,\n \"Continent\": \"Europe\",\n \"Capital\": \"Podgorica\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sr,hu,bs,sq,hr,rom\",\n \"Languages\": \"Serbian 42.9%, Montenegrin (official) 37%, Bosnian 5.3%, Albanian 5.3%, Serbo-Croat 2%, other 3.5%, unspecified 4% (2011 est.)\",\n \"Area KM2\": 14026,\n \"Internet Hosts\": 10088,\n \"Internet Users\": 280000,\n \"Phones (Mobile)\": 1126000,\n \"Phones (Landline)\": 163000,\n \"GDP\": 4518000000\n },\n {\n \"Country Name\": \"Montserrat\",\n \"ISO2\": \"MS\",\n \"ISO3\": \"MSR\",\n \"Top Level Domain\": \"ms\",\n \"FIPS\": \"MH\",\n \"ISO Numeric\": 500,\n \"GeoNameID\": 3578097,\n \"E164\": 1,\n \"Phone Code\": \"1-664\",\n \"Continent\": \"North America\",\n \"Capital\": \"Plymouth\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-MS\",\n \"Languages\": \"English\",\n \"Area KM2\": 102,\n \"Internet Hosts\": 2431,\n \"Internet Users\": 1200,\n \"Phones (Mobile)\": 4000,\n \"Phones (Landline)\": 3000,\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Morocco\",\n \"ISO2\": \"MA\",\n \"ISO3\": \"MAR\",\n \"Top Level Domain\": \"ma\",\n \"FIPS\": \"MO\",\n \"ISO Numeric\": 504,\n \"GeoNameID\": 2542007,\n \"E164\": 212,\n \"Phone Code\": 212,\n \"Continent\": \"Africa\",\n \"Capital\": \"Rabat\",\n \"Time Zone in Capital\": \"Africa/Casablanca\",\n \"Currency\": \"Dirham\",\n \"Language Codes\": \"ar-MA,fr\",\n \"Languages\": \"Arabic (official), Berber languages (Tamazight (official), Tachelhit, Tarifit), French (often the language of business, government, and diplomacy)\",\n \"Area KM2\": 446550,\n \"Internet Hosts\": 277338,\n \"Internet Users\": 13213000,\n \"Phones (Mobile)\": 39016000,\n \"Phones (Landline)\": 3280000,\n \"GDP\": 104800000000\n },\n {\n \"Country Name\": \"Mozambique\",\n \"ISO2\": \"MZ\",\n \"ISO3\": \"MOZ\",\n \"Top Level Domain\": \"mz\",\n \"FIPS\": \"MZ\",\n \"ISO Numeric\": 508,\n \"GeoNameID\": 1036973,\n \"E164\": 258,\n \"Phone Code\": 258,\n \"Continent\": \"Africa\",\n \"Capital\": \"Maputo\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Metical\",\n \"Language Codes\": \"pt-MZ,vmw\",\n \"Languages\": \"Emakhuwa 25.3%, Portuguese (official) 10.7%, Xichangana 10.3%, Cisena 7.5%, Elomwe 7%, Echuwabo 5.1%, other Mozambican languages 30.1%, other 4% (1997 census)\",\n \"Area KM2\": 801590,\n \"Internet Hosts\": 89737,\n \"Internet Users\": 613600,\n \"Phones (Mobile)\": 8108000,\n \"Phones (Landline)\": 88100,\n \"GDP\": 14670000000\n },\n {\n \"Country Name\": \"Myanmar\",\n \"ISO2\": \"MM\",\n \"ISO3\": \"MMR\",\n \"Top Level Domain\": \"mm\",\n \"FIPS\": \"BM\",\n \"ISO Numeric\": 104,\n \"GeoNameID\": 1327865,\n \"E164\": 95,\n \"Phone Code\": 95,\n \"Continent\": \"Asia\",\n \"Capital\": \"Nay Pyi Taw\",\n \"Time Zone in Capital\": \"Asia/Rangoon\",\n \"Currency\": \"Kyat\",\n \"Language Codes\": \"my\",\n \"Languages\": \"Burmese (official)\",\n \"Area KM2\": 678500,\n \"Internet Hosts\": 1055,\n \"Internet Users\": 110000,\n \"Phones (Mobile)\": 5440000,\n \"Phones (Landline)\": 556000,\n \"GDP\": 59430000000\n },\n {\n \"Country Name\": \"Namibia\",\n \"ISO2\": \"NA\",\n \"ISO3\": \"NAM\",\n \"Top Level Domain\": \"na\",\n \"FIPS\": \"WA\",\n \"ISO Numeric\": 516,\n \"GeoNameID\": 3355338,\n \"E164\": 264,\n \"Phone Code\": 264,\n \"Continent\": \"Africa\",\n \"Capital\": \"Windhoek\",\n \"Time Zone in Capital\": \"Africa/Windhoek\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-NA,af,de,hz,naq\",\n \"Languages\": \"Oshiwambo languages 48.9%, Nama/Damara 11.3%, Afrikaans 10.4% (common language of most of the population and about 60% of the white population), Otjiherero languages 8.6%, Kavango languages 8.5%, Caprivi languages 4.8%, English (official) 3.4%, other African languages 2.3%, other 1.7%\",\n \"Area KM2\": 825418,\n \"Internet Hosts\": 78280,\n \"Internet Users\": 127500,\n \"Phones (Mobile)\": 2435000,\n \"Phones (Landline)\": 171000,\n \"GDP\": 12300000000\n },\n {\n \"Country Name\": \"Nauru\",\n \"ISO2\": \"NR\",\n \"ISO3\": \"NRU\",\n \"Top Level Domain\": \"nr\",\n \"FIPS\": \"NR\",\n \"ISO Numeric\": 520,\n \"GeoNameID\": 2110425,\n \"E164\": 674,\n \"Phone Code\": 674,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Yaren\",\n \"Time Zone in Capital\": \"Pacific/Nauru\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"na,en-NR\",\n \"Languages\": \"Nauruan 93% (official, a distinct Pacific Island language), English 2% (widely understood, spoken, and used for most government and commercial purposes), other 5% (includes I-Kiribati 2% and Chinese 2%)\",\n \"Area KM2\": 21,\n \"Internet Hosts\": 8162,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 6800,\n \"Phones (Landline)\": 1900,\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Nepal\",\n \"ISO2\": \"NP\",\n \"ISO3\": \"NPL\",\n \"Top Level Domain\": \"np\",\n \"FIPS\": \"NP\",\n \"ISO Numeric\": 524,\n \"GeoNameID\": 1282988,\n \"E164\": 977,\n \"Phone Code\": 977,\n \"Continent\": \"Asia\",\n \"Capital\": \"Kathmandu\",\n \"Time Zone in Capital\": \"Asia/Kathmandu\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"ne,en\",\n \"Languages\": \"Nepali (official) 44.6%, Maithali 11.7%, Bhojpuri 6%, Tharu 5.8%, Tamang 5.1%, Newar 3.2%, Magar 3%, Bajjika 3%, Urdu 2.6%, Avadhi 1.9%, Limbu 1.3%, Gurung 1.2%, other 10.4%, unspecified 0.2%\",\n \"Area KM2\": 140800,\n \"Internet Hosts\": 41256,\n \"Internet Users\": 577800,\n \"Phones (Mobile)\": 18138000,\n \"Phones (Landline)\": 834000,\n \"GDP\": 19340000000\n },\n {\n \"Country Name\": \"Netherlands\",\n \"ISO2\": \"NL\",\n \"ISO3\": \"NLD\",\n \"Top Level Domain\": \"nl\",\n \"FIPS\": \"NL\",\n \"ISO Numeric\": 528,\n \"GeoNameID\": 2750405,\n \"E164\": 31,\n \"Phone Code\": 31,\n \"Continent\": \"Europe\",\n \"Capital\": \"Amsterdam\",\n \"Time Zone in Capital\": \"Europe/Amsterdam\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"nl-NL,fy-NL\",\n \"Languages\": \"Dutch (official)\",\n \"Area KM2\": 41526,\n \"Internet Hosts\": 13699000,\n \"Internet Users\": 14872000,\n \"Phones (Mobile)\": 19643000,\n \"Phones (Landline)\": 7086000,\n \"GDP\": 722300000000\n },\n {\n \"Country Name\": \"Netherlands Antilles\",\n \"ISO2\": \"AN\",\n \"ISO3\": \"ANT\",\n \"Top Level Domain\": \"an\",\n \"FIPS\": \"NT\",\n \"ISO Numeric\": 530,\n \"GeoNameID\": \"\",\n \"E164\": 599,\n \"Phone Code\": 599,\n \"Continent\": \"North America\",\n \"Capital\": \"Willemstad\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl-AN,en,es\",\n \"Languages\": \"Dutch, English, Spanish\",\n \"Area KM2\": 960,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"New Caledonia\",\n \"ISO2\": \"NC\",\n \"ISO3\": \"NCL\",\n \"Top Level Domain\": \"nc\",\n \"FIPS\": \"NC\",\n \"ISO Numeric\": 540,\n \"GeoNameID\": 2139685,\n \"E164\": 687,\n \"Phone Code\": 687,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Noumea\",\n \"Time Zone in Capital\": \"Pacific/Noumea\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-NC\",\n \"Languages\": \"French (official), 33 Melanesian-Polynesian dialects\",\n \"Area KM2\": 19060,\n \"Internet Hosts\": 34231,\n \"Internet Users\": 85000,\n \"Phones (Mobile)\": 231000,\n \"Phones (Landline)\": 80000,\n \"GDP\": 9280000000\n },\n {\n \"Country Name\": \"New Zealand\",\n \"ISO2\": \"NZ\",\n \"ISO3\": \"NZL\",\n \"Top Level Domain\": \"nz\",\n \"FIPS\": \"NZ\",\n \"ISO Numeric\": 554,\n \"GeoNameID\": 2186224,\n \"E164\": 64,\n \"Phone Code\": 64,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Wellington\",\n \"Time Zone in Capital\": \"Pacific/Auckland\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-NZ,mi\",\n \"Languages\": \"English (de facto official) 89.8%, Maori (de jure official) 3.5%, Samoan 2%, Hindi 1.6%, French 1.2%, Northern Chinese 1.2%, Yue 1%, Other or not stated 20.5%, New Zealand Sign Language (de jure official)\",\n \"Area KM2\": 268680,\n \"Internet Hosts\": 3026000,\n \"Internet Users\": 3400000,\n \"Phones (Mobile)\": 4922000,\n \"Phones (Landline)\": 1880000,\n \"GDP\": 181100000000\n },\n {\n \"Country Name\": \"Nicaragua\",\n \"ISO2\": \"NI\",\n \"ISO3\": \"NIC\",\n \"Top Level Domain\": \"ni\",\n \"FIPS\": \"NU\",\n \"ISO Numeric\": 558,\n \"GeoNameID\": 3617476,\n \"E164\": 505,\n \"Phone Code\": 505,\n \"Continent\": \"North America\",\n \"Capital\": \"Managua\",\n \"Time Zone in Capital\": \"America/Managua\",\n \"Currency\": \"Cordoba\",\n \"Language Codes\": \"es-NI,en\",\n \"Languages\": \"Spanish (official) 95.3%, Miskito 2.2%, Mestizo of the Caribbean coast 2%, other 0.5%\",\n \"Area KM2\": 129494,\n \"Internet Hosts\": 296068,\n \"Internet Users\": 199800,\n \"Phones (Mobile)\": 5346000,\n \"Phones (Landline)\": 320000,\n \"GDP\": 11260000000\n },\n {\n \"Country Name\": \"Niger\",\n \"ISO2\": \"NE\",\n \"ISO3\": \"NER\",\n \"Top Level Domain\": \"ne\",\n \"FIPS\": \"NG\",\n \"ISO Numeric\": 562,\n \"GeoNameID\": 2440476,\n \"E164\": 227,\n \"Phone Code\": 227,\n \"Continent\": \"Africa\",\n \"Capital\": \"Niamey\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-NE,ha,kr,dje\",\n \"Languages\": \"French (official), Hausa, Djerma\",\n \"Area KM2\": 1267000,\n \"Internet Hosts\": 454,\n \"Internet Users\": 115900,\n \"Phones (Mobile)\": 5400000,\n \"Phones (Landline)\": 100500,\n \"GDP\": 7304000000\n },\n {\n \"Country Name\": \"Nigeria\",\n \"ISO2\": \"NG\",\n \"ISO3\": \"NGA\",\n \"Top Level Domain\": \"ng\",\n \"FIPS\": \"NI\",\n \"ISO Numeric\": 566,\n \"GeoNameID\": 2328926,\n \"E164\": 234,\n \"Phone Code\": 234,\n \"Continent\": \"Africa\",\n \"Capital\": \"Abuja\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Naira\",\n \"Language Codes\": \"en-NG,ha,yo,ig,ff\",\n \"Languages\": \"English (official), Hausa, Yoruba, Igbo (Ibo), Fulani, over 500 additional indigenous languages\",\n \"Area KM2\": 923768,\n \"Internet Hosts\": 1234,\n \"Internet Users\": 43989000,\n \"Phones (Mobile)\": 112780000,\n \"Phones (Landline)\": 418200,\n \"GDP\": 502000000000\n },\n {\n \"Country Name\": \"Niue\",\n \"ISO2\": \"NU\",\n \"ISO3\": \"NIU\",\n \"Top Level Domain\": \"nu\",\n \"FIPS\": \"NE\",\n \"ISO Numeric\": 570,\n \"GeoNameID\": 4036232,\n \"E164\": 683,\n \"Phone Code\": 683,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Alofi\",\n \"Time Zone in Capital\": \"Pacific/Niue\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"niu,en-NU\",\n \"Languages\": \"Niuean (official) 46% (a Polynesian language closely related to Tongan and Samoan), Niuean and English 32%, English (official) 11%, Niuean and others 5%, other 6% (2011 est.)\",\n \"Area KM2\": 260,\n \"Internet Hosts\": 79508,\n \"Internet Users\": 1100,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 10010000\n },\n {\n \"Country Name\": \"North Korea\",\n \"ISO2\": \"KP\",\n \"ISO3\": \"PRK\",\n \"Top Level Domain\": \"kp\",\n \"FIPS\": \"KN\",\n \"ISO Numeric\": 408,\n \"GeoNameID\": 1873107,\n \"E164\": 850,\n \"Phone Code\": 850,\n \"Continent\": \"Asia\",\n \"Capital\": \"Pyongyang\",\n \"Time Zone in Capital\": \"Asia/Pyongyang\",\n \"Currency\": \"Won\",\n \"Language Codes\": \"ko-KP\",\n \"Languages\": \"Korean\",\n \"Area KM2\": 120540,\n \"Internet Hosts\": 8,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 1700000,\n \"Phones (Landline)\": 1180000,\n \"GDP\": 28000000000\n },\n {\n \"Country Name\": \"Northern Mariana Islands\",\n \"ISO2\": \"MP\",\n \"ISO3\": \"MNP\",\n \"Top Level Domain\": \"mp\",\n \"FIPS\": \"CQ\",\n \"ISO Numeric\": 580,\n \"GeoNameID\": 4041468,\n \"E164\": 1,\n \"Phone Code\": \"1-670\",\n \"Continent\": \"Oceania\",\n \"Capital\": \"Saipan\",\n \"Time Zone in Capital\": \"Pacific/Saipan\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"fil,tl,zh,ch-MP,en-MP\",\n \"Languages\": \"Philippine languages 32.8%, Chamorro (official) 24.1%, English (official) 17%, other Pacific island languages 10.1%, Chinese 6.8%, other Asian languages 7.3%, other 1.9% (2010 est.)\",\n \"Area KM2\": 477,\n \"Internet Hosts\": 17,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 733000000\n },\n {\n \"Country Name\": \"Norway\",\n \"ISO2\": \"NO\",\n \"ISO3\": \"NOR\",\n \"Top Level Domain\": \"no\",\n \"FIPS\": \"NO\",\n \"ISO Numeric\": 578,\n \"GeoNameID\": 3144096,\n \"E164\": 47,\n \"Phone Code\": 47,\n \"Continent\": \"Europe\",\n \"Capital\": \"Oslo\",\n \"Time Zone in Capital\": \"Europe/Oslo\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"no,nb,nn,se,fi\",\n \"Languages\": \"Bokmal Norwegian (official), Nynorsk Norwegian (official), small Sami- and Finnish-speaking minorities\",\n \"Area KM2\": 324220,\n \"Internet Hosts\": 3588000,\n \"Internet Users\": 4431000,\n \"Phones (Mobile)\": 5732000,\n \"Phones (Landline)\": 1465000,\n \"GDP\": 515800000000\n },\n {\n \"Country Name\": \"Oman\",\n \"ISO2\": \"OM\",\n \"ISO3\": \"OMN\",\n \"Top Level Domain\": \"om\",\n \"FIPS\": \"MU\",\n \"ISO Numeric\": 512,\n \"GeoNameID\": 286963,\n \"E164\": 968,\n \"Phone Code\": 968,\n \"Continent\": \"Asia\",\n \"Capital\": \"Muscat\",\n \"Time Zone in Capital\": \"Asia/Muscat\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-OM,en,bal,ur\",\n \"Languages\": \"Arabic (official), English, Baluchi, Urdu, Indian dialects\",\n \"Area KM2\": 212460,\n \"Internet Hosts\": 14531,\n \"Internet Users\": 1465000,\n \"Phones (Mobile)\": 5278000,\n \"Phones (Landline)\": 305000,\n \"GDP\": 81950000000\n },\n {\n \"Country Name\": \"Pakistan\",\n \"ISO2\": \"PK\",\n \"ISO3\": \"PAK\",\n \"Top Level Domain\": \"pk\",\n \"FIPS\": \"PK\",\n \"ISO Numeric\": 586,\n \"GeoNameID\": 1168579,\n \"E164\": 92,\n \"Phone Code\": 92,\n \"Continent\": \"Asia\",\n \"Capital\": \"Islamabad\",\n \"Time Zone in Capital\": \"Asia/Karachi\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"ur-PK,en-PK,pa,sd,ps,brh\",\n \"Languages\": \"Punjabi 48%, Sindhi 12%, Saraiki (a Punjabi variant) 10%, Pashto (alternate name, Pashtu) 8%, Urdu (official) 8%, Balochi 3%, Hindko 2%, Brahui 1%, English (official; lingua franca of Pakistani elite and most government ministries), Burushaski, and other 8%\",\n \"Area KM2\": 803940,\n \"Internet Hosts\": 365813,\n \"Internet Users\": 20431000,\n \"Phones (Mobile)\": 125000000,\n \"Phones (Landline)\": 5803000,\n \"GDP\": 236500000000\n },\n {\n \"Country Name\": \"Palau\",\n \"ISO2\": \"PW\",\n \"ISO3\": \"PLW\",\n \"Top Level Domain\": \"pw\",\n \"FIPS\": \"PS\",\n \"ISO Numeric\": 585,\n \"GeoNameID\": 1559582,\n \"E164\": 680,\n \"Phone Code\": 680,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Melekeok\",\n \"Time Zone in Capital\": \"Pacific/Palau\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"pau,sov,en-PW,tox,ja,fil,zh\",\n \"Languages\": \"Palauan (official on most islands) 66.6%, Carolinian 0.7%, other Micronesian 0.7%, English (official) 15.5%, Filipino 10.8%, Chinese 1.8%, other Asian 2.6%, other 1.3%\",\n \"Area KM2\": 458,\n \"Internet Hosts\": 4,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 17150,\n \"Phones (Landline)\": 7300,\n \"GDP\": 221000000\n },\n {\n \"Country Name\": \"Palestine\",\n \"ISO2\": \"PS\",\n \"ISO3\": \"PSE\",\n \"Top Level Domain\": \"ps\",\n \"FIPS\": \"WE\",\n \"ISO Numeric\": 275,\n \"GeoNameID\": 6254930,\n \"E164\": 970,\n \"Phone Code\": 970,\n \"Continent\": \"Asia\",\n \"Capital\": \"East Jerusalem\",\n \"Time Zone in Capital\": \"Asia/Hebron\",\n \"Currency\": \"Shekel\",\n \"Language Codes\": \"ar-PS\",\n \"Languages\": \"Arabic, Hebrew, English\",\n \"Area KM2\": 5970,\n \"Internet Hosts\": \"\",\n \"Internet Users\": 1379000,\n \"Phones (Mobile)\": 3041000,\n \"Phones (Landline)\": 406000,\n \"GDP\": 6641000000\n },\n {\n \"Country Name\": \"Panama\",\n \"ISO2\": \"PA\",\n \"ISO3\": \"PAN\",\n \"Top Level Domain\": \"pa\",\n \"FIPS\": \"PM\",\n \"ISO Numeric\": 591,\n \"GeoNameID\": 3703430,\n \"E164\": 507,\n \"Phone Code\": 507,\n \"Continent\": \"North America\",\n \"Capital\": \"Panama City\",\n \"Time Zone in Capital\": \"America/Panama\",\n \"Currency\": \"Balboa\",\n \"Language Codes\": \"es-PA,en\",\n \"Languages\": \"Spanish (official), English 14%\",\n \"Area KM2\": 78200,\n \"Internet Hosts\": 11022,\n \"Internet Users\": 959800,\n \"Phones (Mobile)\": 6770000,\n \"Phones (Landline)\": 640000,\n \"GDP\": 40620000000\n },\n {\n \"Country Name\": \"Papua New Guinea\",\n \"ISO2\": \"PG\",\n \"ISO3\": \"PNG\",\n \"Top Level Domain\": \"pg\",\n \"FIPS\": \"PP\",\n \"ISO Numeric\": 598,\n \"GeoNameID\": 2088628,\n \"E164\": 675,\n \"Phone Code\": 675,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Port Moresby\",\n \"Time Zone in Capital\": \"Pacific/Port_Moresby\",\n \"Currency\": \"Kina\",\n \"Language Codes\": \"en-PG,ho,meu,tpi\",\n \"Languages\": \"Tok Pisin (official), English (official), Hiri Motu (official), some 836 indigenous languages spoken (about 12% of the world's total); most languages have fewer than 1,000 speakers\",\n \"Area KM2\": 462840,\n \"Internet Hosts\": 5006,\n \"Internet Users\": 125000,\n \"Phones (Mobile)\": 2709000,\n \"Phones (Landline)\": 139000,\n \"GDP\": 16100000000\n },\n {\n \"Country Name\": \"Paraguay\",\n \"ISO2\": \"PY\",\n \"ISO3\": \"PRY\",\n \"Top Level Domain\": \"py\",\n \"FIPS\": \"PA\",\n \"ISO Numeric\": 600,\n \"GeoNameID\": 3437598,\n \"E164\": 595,\n \"Phone Code\": 595,\n \"Continent\": \"South America\",\n \"Capital\": \"Asuncion\",\n \"Time Zone in Capital\": \"America/Asuncion\",\n \"Currency\": \"Guarani\",\n \"Language Codes\": \"es-PY,gn\",\n \"Languages\": \"Spanish (official), Guarani (official)\",\n \"Area KM2\": 406750,\n \"Internet Hosts\": 280658,\n \"Internet Users\": 1105000,\n \"Phones (Mobile)\": 6790000,\n \"Phones (Landline)\": 376000,\n \"GDP\": 30560000000\n },\n {\n \"Country Name\": \"Peru\",\n \"ISO2\": \"PE\",\n \"ISO3\": \"PER\",\n \"Top Level Domain\": \"pe\",\n \"FIPS\": \"PE\",\n \"ISO Numeric\": 604,\n \"GeoNameID\": 3932488,\n \"E164\": 51,\n \"Phone Code\": 51,\n \"Continent\": \"South America\",\n \"Capital\": \"Lima\",\n \"Time Zone in Capital\": \"America/Lima\",\n \"Currency\": \"Sol\",\n \"Language Codes\": \"es-PE,qu,ay\",\n \"Languages\": \"Spanish (official) 84.1%, Quechua (official) 13%, Aymara (official) 1.7%, Ashaninka 0.3%, other native languages (includes a large number of minor Amazonian languages) 0.7%, other (includes foreign languages and sign language) 0.2% (2007 est.)\",\n \"Area KM2\": 1285220,\n \"Internet Hosts\": 234102,\n \"Internet Users\": 9158000,\n \"Phones (Mobile)\": 29400000,\n \"Phones (Landline)\": 3420000,\n \"GDP\": 210300000000\n },\n {\n \"Country Name\": \"Philippines\",\n \"ISO2\": \"PH\",\n \"ISO3\": \"PHL\",\n \"Top Level Domain\": \"ph\",\n \"FIPS\": \"RP\",\n \"ISO Numeric\": 608,\n \"GeoNameID\": 1694008,\n \"E164\": 63,\n \"Phone Code\": 63,\n \"Continent\": \"Asia\",\n \"Capital\": \"Manila\",\n \"Time Zone in Capital\": \"Asia/Manila\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"tl,en-PH,fil\",\n \"Languages\": \"Filipino (official; based on Tagalog) and English (official); eight major dialects - Tagalog, Cebuano, Ilocano, Hiligaynon or Ilonggo, Bicol, Waray, Pampango, and Pangasinan\",\n \"Area KM2\": 300000,\n \"Internet Hosts\": 425812,\n \"Internet Users\": 8278000,\n \"Phones (Mobile)\": 103000000,\n \"Phones (Landline)\": 3939000,\n \"GDP\": 272200000000\n },\n {\n \"Country Name\": \"Pitcairn\",\n \"ISO2\": \"PN\",\n \"ISO3\": \"PCN\",\n \"Top Level Domain\": \"pn\",\n \"FIPS\": \"PC\",\n \"ISO Numeric\": 612,\n \"GeoNameID\": 4030699,\n \"E164\": 64,\n \"Phone Code\": 64,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Adamstown\",\n \"Time Zone in Capital\": \"Pacific/Pitcairn\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-PN\",\n \"Languages\": \"English\",\n \"Area KM2\": 47,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Poland\",\n \"ISO2\": \"PL\",\n \"ISO3\": \"POL\",\n \"Top Level Domain\": \"pl\",\n \"FIPS\": \"PL\",\n \"ISO Numeric\": 616,\n \"GeoNameID\": 798544,\n \"E164\": 48,\n \"Phone Code\": 48,\n \"Continent\": \"Europe\",\n \"Capital\": \"Warsaw\",\n \"Time Zone in Capital\": \"Europe/Warsaw\",\n \"Currency\": \"Zloty\",\n \"Language Codes\": \"pl\",\n \"Languages\": \"Polish (official) 96.2%, Polish and non-Polish 2%, non-Polish 0.5%, unspecified 1.3%\",\n \"Area KM2\": 312685,\n \"Internet Hosts\": 13265000,\n \"Internet Users\": 22452000,\n \"Phones (Mobile)\": 50840000,\n \"Phones (Landline)\": 6125000,\n \"GDP\": 513900000000\n },\n {\n \"Country Name\": \"Portugal\",\n \"ISO2\": \"PT\",\n \"ISO3\": \"PRT\",\n \"Top Level Domain\": \"pt\",\n \"FIPS\": \"PO\",\n \"ISO Numeric\": 620,\n \"GeoNameID\": 2264397,\n \"E164\": 351,\n \"Phone Code\": 351,\n \"Continent\": \"Europe\",\n \"Capital\": \"Lisbon\",\n \"Time Zone in Capital\": \"Europe/Lisbon\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"pt-PT,mwl\",\n \"Languages\": \"Portuguese (official), Mirandese (official, but locally used)\",\n \"Area KM2\": 92391,\n \"Internet Hosts\": 3748000,\n \"Internet Users\": 5168000,\n \"Phones (Mobile)\": 12312000,\n \"Phones (Landline)\": 4558000,\n \"GDP\": 219300000000\n },\n {\n \"Country Name\": \"Puerto Rico\",\n \"ISO2\": \"PR\",\n \"ISO3\": \"PRI\",\n \"Top Level Domain\": \"pr\",\n \"FIPS\": \"RQ\",\n \"ISO Numeric\": 630,\n \"GeoNameID\": 4566966,\n \"E164\": 1,\n \"Phone Code\": \"1-787, 1-939\",\n \"Continent\": \"North America\",\n \"Capital\": \"San Juan\",\n \"Time Zone in Capital\": \"America/Puerto_Rico\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-PR,es-PR\",\n \"Languages\": \"Spanish, English\",\n \"Area KM2\": 9104,\n \"Internet Hosts\": 469,\n \"Internet Users\": 1000000,\n \"Phones (Mobile)\": 3060000,\n \"Phones (Landline)\": 780200,\n \"GDP\": 93520000000\n },\n {\n \"Country Name\": \"Qatar\",\n \"ISO2\": \"QA\",\n \"ISO3\": \"QAT\",\n \"Top Level Domain\": \"qa\",\n \"FIPS\": \"QA\",\n \"ISO Numeric\": 634,\n \"GeoNameID\": 289688,\n \"E164\": 974,\n \"Phone Code\": 974,\n \"Continent\": \"Asia\",\n \"Capital\": \"Doha\",\n \"Time Zone in Capital\": \"Asia/Qatar\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-QA,es\",\n \"Languages\": \"Arabic (official), English commonly used as a second language\",\n \"Area KM2\": 11437,\n \"Internet Hosts\": 897,\n \"Internet Users\": 563800,\n \"Phones (Mobile)\": 2600000,\n \"Phones (Landline)\": 327000,\n \"GDP\": 213100000000\n },\n {\n \"Country Name\": \"Republic of the Congo\",\n \"ISO2\": \"CG\",\n \"ISO3\": \"COG\",\n \"Top Level Domain\": \"cg\",\n \"FIPS\": \"CF\",\n \"ISO Numeric\": 178,\n \"GeoNameID\": 2260494,\n \"E164\": 242,\n \"Phone Code\": 242,\n \"Continent\": \"Africa\",\n \"Capital\": \"Brazzaville\",\n \"Time Zone in Capital\": \"Africa/Lagos\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-CG,kg,ln-CG\",\n \"Languages\": \"French (official), Lingala and Monokutuba (lingua franca trade languages), many local languages and dialects (of which Kikongo is the most widespread)\",\n \"Area KM2\": 342000,\n \"Internet Hosts\": 45,\n \"Internet Users\": 245200,\n \"Phones (Mobile)\": 4283000,\n \"Phones (Landline)\": 14900,\n \"GDP\": 14250000000\n },\n {\n \"Country Name\": \"Reunion\",\n \"ISO2\": \"RE\",\n \"ISO3\": \"REU\",\n \"Top Level Domain\": \"re\",\n \"FIPS\": \"RE\",\n \"ISO Numeric\": 638,\n \"GeoNameID\": 935317,\n \"E164\": 262,\n \"Phone Code\": 262,\n \"Continent\": \"Africa\",\n \"Capital\": \"Saint-Denis\",\n \"Time Zone in Capital\": \"Indian/Reunion\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-RE\",\n \"Languages\": \"French\",\n \"Area KM2\": 2517,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Romania\",\n \"ISO2\": \"RO\",\n \"ISO3\": \"ROU\",\n \"Top Level Domain\": \"ro\",\n \"FIPS\": \"RO\",\n \"ISO Numeric\": 642,\n \"GeoNameID\": 798549,\n \"E164\": 40,\n \"Phone Code\": 40,\n \"Continent\": \"Europe\",\n \"Capital\": \"Bucharest\",\n \"Time Zone in Capital\": \"Europe/Bucharest\",\n \"Currency\": \"Leu\",\n \"Language Codes\": \"ro,hu,rom\",\n \"Languages\": \"Romanian (official) 85.4%, Hungarian 6.3%, Romany (Gypsy) 1.2%, other 1%, unspecified 6.1% (2011 est.)\",\n \"Area KM2\": 237500,\n \"Internet Hosts\": 2667000,\n \"Internet Users\": 7787000,\n \"Phones (Mobile)\": 22700000,\n \"Phones (Landline)\": 4680000,\n \"GDP\": 188900000000\n },\n {\n \"Country Name\": \"Russia\",\n \"ISO2\": \"RU\",\n \"ISO3\": \"RUS\",\n \"Top Level Domain\": \"ru\",\n \"FIPS\": \"RS\",\n \"ISO Numeric\": 643,\n \"GeoNameID\": 2017370,\n \"E164\": 7,\n \"Phone Code\": 7,\n \"Continent\": \"Europe\",\n \"Capital\": \"Moscow\",\n \"Time Zone in Capital\": \"Europe/Moscow\",\n \"Currency\": \"Ruble\",\n \"Language Codes\": \"ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,tut,kbd,krc,ava,sah,nog\",\n \"Languages\": \"Russian (official) 96.3%, Dolgang 5.3%, German 1.5%, Chechen 1%, Tatar 3%, other 10.3%\",\n \"Area KM2\": 17100000,\n \"Internet Hosts\": 14865000,\n \"Internet Users\": 40853000,\n \"Phones (Mobile)\": 261900000,\n \"Phones (Landline)\": 42900000,\n \"GDP\": 2113000000000\n },\n {\n \"Country Name\": \"Rwanda\",\n \"ISO2\": \"RW\",\n \"ISO3\": \"RWA\",\n \"Top Level Domain\": \"rw\",\n \"FIPS\": \"RW\",\n \"ISO Numeric\": 646,\n \"GeoNameID\": 49518,\n \"E164\": 250,\n \"Phone Code\": 250,\n \"Continent\": \"Africa\",\n \"Capital\": \"Kigali\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"rw,en-RW,fr-RW,sw\",\n \"Languages\": \"Kinyarwanda only (official, universal Bantu vernacular) 93.2%, Kinyarwanda and other language(s) 6.2%, French (official) and other language(s) 0.1%, English (official) and other language(s) 0.1%, Swahili (or Kiswahili, used in commercial centers) 0.02%, other 0.03%, unspecified 0.3% (2002 est.)\",\n \"Area KM2\": 26338,\n \"Internet Hosts\": 1447,\n \"Internet Users\": 450000,\n \"Phones (Mobile)\": 5690000,\n \"Phones (Landline)\": 44400,\n \"GDP\": 7700000000\n },\n {\n \"Country Name\": \"Saint Barthelemy\",\n \"ISO2\": \"BL\",\n \"ISO3\": \"BLM\",\n \"Top Level Domain\": \"gp\",\n \"FIPS\": \"TB\",\n \"ISO Numeric\": 652,\n \"GeoNameID\": 3578476,\n \"E164\": 590,\n \"Phone Code\": 590,\n \"Continent\": \"North America\",\n \"Capital\": \"Gustavia\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr\",\n \"Languages\": \"French (primary), English\",\n \"Area KM2\": 21,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Saint Helena\",\n \"ISO2\": \"SH\",\n \"ISO3\": \"SHN\",\n \"Top Level Domain\": \"sh\",\n \"FIPS\": \"SH\",\n \"ISO Numeric\": 654,\n \"GeoNameID\": 3370751,\n \"E164\": 290,\n \"Phone Code\": 290,\n \"Continent\": \"Africa\",\n \"Capital\": \"Jamestown\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-SH\",\n \"Languages\": \"English\",\n \"Area KM2\": 410,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Saint Kitts and Nevis\",\n \"ISO2\": \"KN\",\n \"ISO3\": \"KNA\",\n \"Top Level Domain\": \"kn\",\n \"FIPS\": \"SC\",\n \"ISO Numeric\": 659,\n \"GeoNameID\": 3575174,\n \"E164\": 1,\n \"Phone Code\": \"1-869\",\n \"Continent\": \"North America\",\n \"Capital\": \"Basseterre\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-KN\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 261,\n \"Internet Hosts\": 54,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 84000,\n \"Phones (Landline)\": 20000,\n \"GDP\": 767000000\n },\n {\n \"Country Name\": \"Saint Lucia\",\n \"ISO2\": \"LC\",\n \"ISO3\": \"LCA\",\n \"Top Level Domain\": \"lc\",\n \"FIPS\": \"ST\",\n \"ISO Numeric\": 662,\n \"GeoNameID\": 3576468,\n \"E164\": 1,\n \"Phone Code\": \"1-758\",\n \"Continent\": \"North America\",\n \"Capital\": \"Castries\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-LC\",\n \"Languages\": \"English (official), French patois\",\n \"Area KM2\": 616,\n \"Internet Hosts\": 100,\n \"Internet Users\": 142900,\n \"Phones (Mobile)\": 227000,\n \"Phones (Landline)\": 36800,\n \"GDP\": 1377000000\n },\n {\n \"Country Name\": \"Saint Martin\",\n \"ISO2\": \"MF\",\n \"ISO3\": \"MAF\",\n \"Top Level Domain\": \"gp\",\n \"FIPS\": \"RN\",\n \"ISO Numeric\": 663,\n \"GeoNameID\": 3578421,\n \"E164\": 1,\n \"Phone Code\": 590,\n \"Continent\": \"North America\",\n \"Capital\": \"Marigot\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr\",\n \"Languages\": \"French (official), English, Dutch, French Patois, Spanish, Papiamento (dialect of Netherlands Antilles)\",\n \"Area KM2\": 53,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 561500000\n },\n {\n \"Country Name\": \"Saint Pierre and Miquelon\",\n \"ISO2\": \"PM\",\n \"ISO3\": \"SPM\",\n \"Top Level Domain\": \"pm\",\n \"FIPS\": \"SB\",\n \"ISO Numeric\": 666,\n \"GeoNameID\": 3424932,\n \"E164\": 508,\n \"Phone Code\": 508,\n \"Continent\": \"North America\",\n \"Capital\": \"Saint-Pierre\",\n \"Time Zone in Capital\": \"America/Miquelon\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"fr-PM\",\n \"Languages\": \"French (official)\",\n \"Area KM2\": 242,\n \"Internet Hosts\": 15,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": 4800,\n \"GDP\": 215300000\n },\n {\n \"Country Name\": \"Saint Vincent and the Grenadines\",\n \"ISO2\": \"VC\",\n \"ISO3\": \"VCT\",\n \"Top Level Domain\": \"vc\",\n \"FIPS\": \"VC\",\n \"ISO Numeric\": 670,\n \"GeoNameID\": 3577815,\n \"E164\": 1,\n \"Phone Code\": \"1-784\",\n \"Continent\": \"North America\",\n \"Capital\": \"Kingstown\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-VC,fr\",\n \"Languages\": \"English, French patois\",\n \"Area KM2\": 389,\n \"Internet Hosts\": 305,\n \"Internet Users\": 76000,\n \"Phones (Mobile)\": 135500,\n \"Phones (Landline)\": 19400,\n \"GDP\": 742000000\n },\n {\n \"Country Name\": \"Samoa\",\n \"ISO2\": \"WS\",\n \"ISO3\": \"WSM\",\n \"Top Level Domain\": \"ws\",\n \"FIPS\": \"WS\",\n \"ISO Numeric\": 882,\n \"GeoNameID\": 4034894,\n \"E164\": 685,\n \"Phone Code\": 685,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Apia\",\n \"Time Zone in Capital\": \"Pacific/Apia\",\n \"Currency\": \"Tala\",\n \"Language Codes\": \"sm,en-WS\",\n \"Languages\": \"Samoan (Polynesian) (official), English\",\n \"Area KM2\": 2944,\n \"Internet Hosts\": 18013,\n \"Internet Users\": 9000,\n \"Phones (Mobile)\": 167400,\n \"Phones (Landline)\": 35300,\n \"GDP\": 705000000\n },\n {\n \"Country Name\": \"San Marino\",\n \"ISO2\": \"SM\",\n \"ISO3\": \"SMR\",\n \"Top Level Domain\": \"sm\",\n \"FIPS\": \"SM\",\n \"ISO Numeric\": 674,\n \"GeoNameID\": 3168068,\n \"E164\": 378,\n \"Phone Code\": 378,\n \"Continent\": \"Europe\",\n \"Capital\": \"San Marino\",\n \"Time Zone in Capital\": \"Europe/Rome\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"it-SM\",\n \"Languages\": \"Italian\",\n \"Area KM2\": 61,\n \"Internet Hosts\": 11015,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 36000,\n \"Phones (Landline)\": 18700,\n \"GDP\": 1866000000\n },\n {\n \"Country Name\": \"Sao Tome and Principe\",\n \"ISO2\": \"ST\",\n \"ISO3\": \"STP\",\n \"Top Level Domain\": \"st\",\n \"FIPS\": \"TP\",\n \"ISO Numeric\": 678,\n \"GeoNameID\": 2410758,\n \"E164\": 239,\n \"Phone Code\": 239,\n \"Continent\": \"Africa\",\n \"Capital\": \"Sao Tome\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Dobra\",\n \"Language Codes\": \"pt-ST\",\n \"Languages\": \"Portuguese 98.4% (official), Forro 36.2%, Cabo Verdian 8.5%, French 6.8%, Angolar 6.6%, English 4.9%, Lunguie 1%, other (including sign language) 2.4%\",\n \"Area KM2\": 1001,\n \"Internet Hosts\": 1678,\n \"Internet Users\": 26700,\n \"Phones (Mobile)\": 122000,\n \"Phones (Landline)\": 8000,\n \"GDP\": 311000000\n },\n {\n \"Country Name\": \"Saudi Arabia\",\n \"ISO2\": \"SA\",\n \"ISO3\": \"SAU\",\n \"Top Level Domain\": \"sa\",\n \"FIPS\": \"SA\",\n \"ISO Numeric\": 682,\n \"GeoNameID\": 102358,\n \"E164\": 966,\n \"Phone Code\": 966,\n \"Continent\": \"Asia\",\n \"Capital\": \"Riyadh\",\n \"Time Zone in Capital\": \"Asia/Riyadh\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-SA\",\n \"Languages\": \"Arabic (official)\",\n \"Area KM2\": 1960582,\n \"Internet Hosts\": 145941,\n \"Internet Users\": 9774000,\n \"Phones (Mobile)\": 53000000,\n \"Phones (Landline)\": 4800000,\n \"GDP\": 718500000000\n },\n {\n \"Country Name\": \"Senegal\",\n \"ISO2\": \"SN\",\n \"ISO3\": \"SEN\",\n \"Top Level Domain\": \"sn\",\n \"FIPS\": \"SG\",\n \"ISO Numeric\": 686,\n \"GeoNameID\": 2245662,\n \"E164\": 221,\n \"Phone Code\": 221,\n \"Continent\": \"Africa\",\n \"Capital\": \"Dakar\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-SN,wo,fuc,mnk\",\n \"Languages\": \"French (official), Wolof, Pulaar, Jola, Mandinka\",\n \"Area KM2\": 196190,\n \"Internet Hosts\": 237,\n \"Internet Users\": 1818000,\n \"Phones (Mobile)\": 11470000,\n \"Phones (Landline)\": 338200,\n \"GDP\": 15360000000\n },\n {\n \"Country Name\": \"Serbia\",\n \"ISO2\": \"RS\",\n \"ISO3\": \"SRB\",\n \"Top Level Domain\": \"rs\",\n \"FIPS\": \"RI\",\n \"ISO Numeric\": 688,\n \"GeoNameID\": 6290252,\n \"E164\": 381,\n \"Phone Code\": 381,\n \"Continent\": \"Europe\",\n \"Capital\": \"Belgrade\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"sr,hu,bs,rom\",\n \"Languages\": \"Serbian (official) 88.1%, Hungarian 3.4%, Bosnian 1.9%, Romany 1.4%, other 3.4%, undeclared or unknown 1.8%\",\n \"Area KM2\": 88361,\n \"Internet Hosts\": 1102000,\n \"Internet Users\": 4107000,\n \"Phones (Mobile)\": 9138000,\n \"Phones (Landline)\": 2977000,\n \"GDP\": 43680000000\n },\n {\n \"Country Name\": \"Seychelles\",\n \"ISO2\": \"SC\",\n \"ISO3\": \"SYC\",\n \"Top Level Domain\": \"sc\",\n \"FIPS\": \"SE\",\n \"ISO Numeric\": 690,\n \"GeoNameID\": 241170,\n \"E164\": 248,\n \"Phone Code\": 248,\n \"Continent\": \"Africa\",\n \"Capital\": \"Victoria\",\n \"Time Zone in Capital\": \"Indian/Mahe\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"en-SC,fr-SC\",\n \"Languages\": \"Seychellois Creole (official) 89.1%, English (official) 5.1%, French (official) 0.7%, other 3.8%, unspecified 1.4% (2010 est.)\",\n \"Area KM2\": 455,\n \"Internet Hosts\": 247,\n \"Internet Users\": 32000,\n \"Phones (Mobile)\": 138300,\n \"Phones (Landline)\": 28900,\n \"GDP\": 1271000000\n },\n {\n \"Country Name\": \"Sierra Leone\",\n \"ISO2\": \"SL\",\n \"ISO3\": \"SLE\",\n \"Top Level Domain\": \"sl\",\n \"FIPS\": \"SL\",\n \"ISO Numeric\": 694,\n \"GeoNameID\": 2403846,\n \"E164\": 232,\n \"Phone Code\": 232,\n \"Continent\": \"Africa\",\n \"Capital\": \"Freetown\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Leone\",\n \"Language Codes\": \"en-SL,men,tem\",\n \"Languages\": \"English (official, regular use limited to literate minority), Mende (principal vernacular in the south), Temne (principal vernacular in the north), Krio (English-based Creole, spoken by the descendants of freed Jamaican slaves who were settled in the Freetown area, a lingua franca and a first language for 10% of the population but understood by 95%)\",\n \"Area KM2\": 71740,\n \"Internet Hosts\": 282,\n \"Internet Users\": 14900,\n \"Phones (Mobile)\": 2210000,\n \"Phones (Landline)\": 18000,\n \"GDP\": 4607000000\n },\n {\n \"Country Name\": \"Singapore\",\n \"ISO2\": \"SG\",\n \"ISO3\": \"SGP\",\n \"Top Level Domain\": \"sg\",\n \"FIPS\": \"SN\",\n \"ISO Numeric\": 702,\n \"GeoNameID\": 1880251,\n \"E164\": 65,\n \"Phone Code\": 65,\n \"Continent\": \"Asia\",\n \"Capital\": \"Singapore\",\n \"Time Zone in Capital\": \"Asia/Singapore\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"cmn,en-SG,ms-SG,ta-SG,zh-SG\",\n \"Languages\": \"Mandarin (official) 36.3%, English (official) 29.8%, Malay (official) 11.9%, Hokkien 8.1%, Tamil (official) 4.4%, Cantonese 4.1%, Teochew 3.2%, other Indian languages 1.2%, other Chinese dialects 1.1%, other 1.1% (2010 est.)\",\n \"Area KM2\": 693,\n \"Internet Hosts\": 1960000,\n \"Internet Users\": 3235000,\n \"Phones (Mobile)\": 8063000,\n \"Phones (Landline)\": 1990000,\n \"GDP\": 295700000000\n },\n {\n \"Country Name\": \"Sint Maarten\",\n \"ISO2\": \"SX\",\n \"ISO3\": \"SXM\",\n \"Top Level Domain\": \"sx\",\n \"FIPS\": \"NN\",\n \"ISO Numeric\": 534,\n \"GeoNameID\": 7609695,\n \"E164\": 1,\n \"Phone Code\": \"1-721\",\n \"Continent\": \"North America\",\n \"Capital\": \"Philipsburg\",\n \"Time Zone in Capital\": \"America/Curacao\",\n \"Currency\": \"Guilder\",\n \"Language Codes\": \"nl,en\",\n \"Languages\": \"English (official) 67.5%, Spanish 12.9%, Creole 8.2%, Dutch (official) 4.2%, Papiamento (a Spanish-Portuguese-Dutch-English dialect) 2.2%, French 1.5%, other 3.5% (2001 census)\",\n \"Area KM2\": 34,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": 794700000\n },\n {\n \"Country Name\": \"Slovakia\",\n \"ISO2\": \"SK\",\n \"ISO3\": \"SVK\",\n \"Top Level Domain\": \"sk\",\n \"FIPS\": \"LO\",\n \"ISO Numeric\": 703,\n \"GeoNameID\": 3057568,\n \"E164\": 421,\n \"Phone Code\": 421,\n \"Continent\": \"Europe\",\n \"Capital\": \"Bratislava\",\n \"Time Zone in Capital\": \"Europe/Prague\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sk,hu\",\n \"Languages\": \"Slovak (official) 78.6%, Hungarian 9.4%, Roma 2.3%, Ruthenian 1%, other or unspecified 8.8% (2011 est.)\",\n \"Area KM2\": 48845,\n \"Internet Hosts\": 1384000,\n \"Internet Users\": 4063000,\n \"Phones (Mobile)\": 6095000,\n \"Phones (Landline)\": 975000,\n \"GDP\": 96960000000\n },\n {\n \"Country Name\": \"Slovenia\",\n \"ISO2\": \"SI\",\n \"ISO3\": \"SVN\",\n \"Top Level Domain\": \"si\",\n \"FIPS\": \"SI\",\n \"ISO Numeric\": 705,\n \"GeoNameID\": 3190538,\n \"E164\": 386,\n \"Phone Code\": 386,\n \"Continent\": \"Europe\",\n \"Capital\": \"Ljubljana\",\n \"Time Zone in Capital\": \"Europe/Belgrade\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"sl,sh\",\n \"Languages\": \"Slovenian (official) 91.1%, Serbo-Croatian 4.5%, other or unspecified 4.4%, Italian (official, only in municipalities where Italian national communities reside), Hungarian (official, only in municipalities where Hungarian national communities reside) (2002 census)\",\n \"Area KM2\": 20273,\n \"Internet Hosts\": 415581,\n \"Internet Users\": 1298000,\n \"Phones (Mobile)\": 2246000,\n \"Phones (Landline)\": 825000,\n \"GDP\": 46820000000\n },\n {\n \"Country Name\": \"Solomon Islands\",\n \"ISO2\": \"SB\",\n \"ISO3\": \"SLB\",\n \"Top Level Domain\": \"sb\",\n \"FIPS\": \"BP\",\n \"ISO Numeric\": \"090\",\n \"GeoNameID\": 2103350,\n \"E164\": 677,\n \"Phone Code\": 677,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Honiara\",\n \"Time Zone in Capital\": \"Pacific/Guadalcanal\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-SB,tpi\",\n \"Languages\": \"Melanesian pidgin (in much of the country is lingua franca), English (official but spoken by only 1%-2% of the population), 120 indigenous languages\",\n \"Area KM2\": 28450,\n \"Internet Hosts\": 4370,\n \"Internet Users\": 10000,\n \"Phones (Mobile)\": 302100,\n \"Phones (Landline)\": 8060,\n \"GDP\": 1099000000\n },\n {\n \"Country Name\": \"Somalia\",\n \"ISO2\": \"SO\",\n \"ISO3\": \"SOM\",\n \"Top Level Domain\": \"so\",\n \"FIPS\": \"SO\",\n \"ISO Numeric\": 706,\n \"GeoNameID\": 51537,\n \"E164\": 252,\n \"Phone Code\": 252,\n \"Continent\": \"Africa\",\n \"Capital\": \"Mogadishu\",\n \"Time Zone in Capital\": \"Africa/Mogadishu\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"so-SO,ar-SO,it,en-SO\",\n \"Languages\": \"Somali (official), Arabic (official, according to the Transitional Federal Charter), Italian, English\",\n \"Area KM2\": 637657,\n \"Internet Hosts\": 186,\n \"Internet Users\": 106000,\n \"Phones (Mobile)\": 658000,\n \"Phones (Landline)\": 100000,\n \"GDP\": 2372000000\n },\n {\n \"Country Name\": \"South Africa\",\n \"ISO2\": \"ZA\",\n \"ISO3\": \"ZAF\",\n \"Top Level Domain\": \"za\",\n \"FIPS\": \"SF\",\n \"ISO Numeric\": 710,\n \"GeoNameID\": 953987,\n \"E164\": 27,\n \"Phone Code\": 27,\n \"Continent\": \"Africa\",\n \"Capital\": \"Pretoria\",\n \"Time Zone in Capital\": \"Africa/Johannesburg\",\n \"Currency\": \"Rand\",\n \"Language Codes\": \"zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr\",\n \"Languages\": \"IsiZulu (official) 22.7%, IsiXhosa (official) 16%, Afrikaans (official) 13.5%, English (official) 9.6%, Sepedi (official) 9.1%, Setswana (official) 8%, Sesotho (official) 7.6%, Xitsonga (official) 4.5%, siSwati (official) 2.5%, Tshivenda (official) 2.4%, isiNdebele (official) 2.1%, sign language 0.5%, other 1.6% (2011 est.)\",\n \"Area KM2\": 1219912,\n \"Internet Hosts\": 4761000,\n \"Internet Users\": 4420000,\n \"Phones (Mobile)\": 68400000,\n \"Phones (Landline)\": 4030000,\n \"GDP\": 353900000000\n },\n {\n \"Country Name\": \"South Korea\",\n \"ISO2\": \"KR\",\n \"ISO3\": \"KOR\",\n \"Top Level Domain\": \"kr\",\n \"FIPS\": \"KS\",\n \"ISO Numeric\": 410,\n \"GeoNameID\": 1835841,\n \"E164\": 82,\n \"Phone Code\": 82,\n \"Continent\": \"Asia\",\n \"Capital\": \"Seoul\",\n \"Time Zone in Capital\": \"Asia/Seoul\",\n \"Currency\": \"Won\",\n \"Language Codes\": \"ko-KR,en\",\n \"Languages\": \"Korean, English (widely taught in junior high and high school)\",\n \"Area KM2\": 98480,\n \"Internet Hosts\": 315697,\n \"Internet Users\": 39400000,\n \"Phones (Mobile)\": 53625000,\n \"Phones (Landline)\": 30100000,\n \"GDP\": 1198000000000\n },\n {\n \"Country Name\": \"South Sudan\",\n \"ISO2\": \"SS\",\n \"ISO3\": \"SSD\",\n \"Top Level Domain\": \"ss\",\n \"FIPS\": \"OD\",\n \"ISO Numeric\": 728,\n \"GeoNameID\": 7909807,\n \"E164\": 211,\n \"Phone Code\": 211,\n \"Continent\": \"Africa\",\n \"Capital\": \"Juba\",\n \"Time Zone in Capital\": \"Africa/Khartoum\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en\",\n \"Languages\": \"English (official), Arabic (includes Juba and Sudanese variants), regional languages include Dinka, Nuer, Bari, Zande, Shilluk\",\n \"Area KM2\": 644329,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": 2000000,\n \"Phones (Landline)\": 2200,\n \"GDP\": 11770000000\n },\n {\n \"Country Name\": \"Spain\",\n \"ISO2\": \"ES\",\n \"ISO3\": \"ESP\",\n \"Top Level Domain\": \"es\",\n \"FIPS\": \"SP\",\n \"ISO Numeric\": 724,\n \"GeoNameID\": 2510769,\n \"E164\": 34,\n \"Phone Code\": 34,\n \"Continent\": \"Europe\",\n \"Capital\": \"Madrid\",\n \"Time Zone in Capital\": \"Europe/Madrid\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"es-ES,ca,gl,eu,oc\",\n \"Languages\": \"Castilian Spanish (official) 74%, Catalan 17%, Galician 7%, and Basque 2%\",\n \"Area KM2\": 504782,\n \"Internet Hosts\": 4228000,\n \"Internet Users\": 28119000,\n \"Phones (Mobile)\": 50663000,\n \"Phones (Landline)\": 19220000,\n \"GDP\": 1356000000000\n },\n {\n \"Country Name\": \"Sri Lanka\",\n \"ISO2\": \"LK\",\n \"ISO3\": \"LKA\",\n \"Top Level Domain\": \"lk\",\n \"FIPS\": \"CE\",\n \"ISO Numeric\": 144,\n \"GeoNameID\": 1227603,\n \"E164\": 94,\n \"Phone Code\": 94,\n \"Continent\": \"Asia\",\n \"Capital\": \"Colombo\",\n \"Time Zone in Capital\": \"Asia/Colombo\",\n \"Currency\": \"Rupee\",\n \"Language Codes\": \"si,ta,en\",\n \"Languages\": \"Sinhala (official and national language) 74%, Tamil (national language) 18%, other 8%\",\n \"Area KM2\": 65610,\n \"Internet Hosts\": 9552,\n \"Internet Users\": 1777000,\n \"Phones (Mobile)\": 19533000,\n \"Phones (Landline)\": 2796000,\n \"GDP\": 65120000000\n },\n {\n \"Country Name\": \"Sudan\",\n \"ISO2\": \"SD\",\n \"ISO3\": \"SDN\",\n \"Top Level Domain\": \"sd\",\n \"FIPS\": \"SU\",\n \"ISO Numeric\": 729,\n \"GeoNameID\": 366755,\n \"E164\": 249,\n \"Phone Code\": 249,\n \"Continent\": \"Africa\",\n \"Capital\": \"Khartoum\",\n \"Time Zone in Capital\": \"Africa/Khartoum\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-SD,en,fia\",\n \"Languages\": \"Arabic (official), English (official), Nubian, Ta Bedawie, Fur\",\n \"Area KM2\": 1861484,\n \"Internet Hosts\": 99,\n \"Internet Users\": 4200000,\n \"Phones (Mobile)\": 27659000,\n \"Phones (Landline)\": 425000,\n \"GDP\": 52500000000\n },\n {\n \"Country Name\": \"Suriname\",\n \"ISO2\": \"SR\",\n \"ISO3\": \"SUR\",\n \"Top Level Domain\": \"sr\",\n \"FIPS\": \"NS\",\n \"ISO Numeric\": 740,\n \"GeoNameID\": 3382998,\n \"E164\": 597,\n \"Phone Code\": 597,\n \"Continent\": \"South America\",\n \"Capital\": \"Paramaribo\",\n \"Time Zone in Capital\": \"America/Paramaribo\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"nl-SR,en,srn,hns,jv\",\n \"Languages\": \"Dutch (official), English (widely spoken), Sranang Tongo (Surinamese, sometimes called Taki-Taki, is native language of Creoles and much of the younger population and is lingua franca among others), Caribbean Hindustani (a dialect of Hindi), Javanese\",\n \"Area KM2\": 163270,\n \"Internet Hosts\": 188,\n \"Internet Users\": 163000,\n \"Phones (Mobile)\": 977000,\n \"Phones (Landline)\": 83000,\n \"GDP\": 5009000000\n },\n {\n \"Country Name\": \"Svalbard and Jan Mayen\",\n \"ISO2\": \"SJ\",\n \"ISO3\": \"SJM\",\n \"Top Level Domain\": \"sj\",\n \"FIPS\": \"SV\",\n \"ISO Numeric\": 744,\n \"GeoNameID\": 607072,\n \"E164\": 47,\n \"Phone Code\": 47,\n \"Continent\": \"Europe\",\n \"Capital\": \"Longyearbyen\",\n \"Time Zone in Capital\": \"Europe/Oslo\",\n \"Currency\": \"Krone\",\n \"Language Codes\": \"no,ru\",\n \"Languages\": \"Norwegian, Russian\",\n \"Area KM2\": 62049,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Swaziland\",\n \"ISO2\": \"SZ\",\n \"ISO3\": \"SWZ\",\n \"Top Level Domain\": \"sz\",\n \"FIPS\": \"WZ\",\n \"ISO Numeric\": 748,\n \"GeoNameID\": 934841,\n \"E164\": 268,\n \"Phone Code\": 268,\n \"Continent\": \"Africa\",\n \"Capital\": \"Mbabane\",\n \"Time Zone in Capital\": \"Africa/Johannesburg\",\n \"Currency\": \"Lilangeni\",\n \"Language Codes\": \"en-SZ,ss-SZ\",\n \"Languages\": \"English (official, used for government business), siSwati (official)\",\n \"Area KM2\": 17363,\n \"Internet Hosts\": 2744,\n \"Internet Users\": 90100,\n \"Phones (Mobile)\": 805000,\n \"Phones (Landline)\": 48600,\n \"GDP\": 3807000000\n },\n {\n \"Country Name\": \"Sweden\",\n \"ISO2\": \"SE\",\n \"ISO3\": \"SWE\",\n \"Top Level Domain\": \"se\",\n \"FIPS\": \"SW\",\n \"ISO Numeric\": 752,\n \"GeoNameID\": 2661886,\n \"E164\": 46,\n \"Phone Code\": 46,\n \"Continent\": \"Europe\",\n \"Capital\": \"Stockholm\",\n \"Time Zone in Capital\": \"Europe/Stockholm\",\n \"Currency\": \"Krona\",\n \"Language Codes\": \"sv-SE,se,sma,fi-SE\",\n \"Languages\": \"Swedish (official), small Sami- and Finnish-speaking minorities\",\n \"Area KM2\": 449964,\n \"Internet Hosts\": 5978000,\n \"Internet Users\": 8398000,\n \"Phones (Mobile)\": 11643000,\n \"Phones (Landline)\": 4321000,\n \"GDP\": 552000000000\n },\n {\n \"Country Name\": \"Switzerland\",\n \"ISO2\": \"CH\",\n \"ISO3\": \"CHE\",\n \"Top Level Domain\": \"ch\",\n \"FIPS\": \"SZ\",\n \"ISO Numeric\": 756,\n \"GeoNameID\": 2658434,\n \"E164\": 41,\n \"Phone Code\": 41,\n \"Continent\": \"Europe\",\n \"Capital\": \"Berne\",\n \"Time Zone in Capital\": \"Europe/Zurich\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"de-CH,fr-CH,it-CH,rm\",\n \"Languages\": \"German (official) 64.9%, French (official) 22.6%, Italian (official) 8.3%, Serbo-Croatian 2.5%, Albanian 2.6%, Portuguese 3.4%, Spanish 2.2%, English 4.6%, Romansch (official) 0.5%, other 5.1%\",\n \"Area KM2\": 41290,\n \"Internet Hosts\": 5301000,\n \"Internet Users\": 6152000,\n \"Phones (Mobile)\": 10460000,\n \"Phones (Landline)\": 4382000,\n \"GDP\": 646200000000\n },\n {\n \"Country Name\": \"Syria\",\n \"ISO2\": \"SY\",\n \"ISO3\": \"SYR\",\n \"Top Level Domain\": \"sy\",\n \"FIPS\": \"SY\",\n \"ISO Numeric\": 760,\n \"GeoNameID\": 163843,\n \"E164\": 963,\n \"Phone Code\": 963,\n \"Continent\": \"Asia\",\n \"Capital\": \"Damascus\",\n \"Time Zone in Capital\": \"Asia/Damascus\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"ar-SY,ku,hy,arc,fr,en\",\n \"Languages\": \"Arabic (official), Kurdish, Armenian, Aramaic, Circassian (widely understood); French, English (somewhat understood)\",\n \"Area KM2\": 185180,\n \"Internet Hosts\": 416,\n \"Internet Users\": 4469000,\n \"Phones (Mobile)\": 12928000,\n \"Phones (Landline)\": 4425000,\n \"GDP\": 64700000000\n },\n {\n \"Country Name\": \"Taiwan\",\n \"ISO2\": \"TW\",\n \"ISO3\": \"TWN\",\n \"Top Level Domain\": \"tw\",\n \"FIPS\": \"TW\",\n \"ISO Numeric\": 158,\n \"GeoNameID\": 1668284,\n \"E164\": 886,\n \"Phone Code\": 886,\n \"Continent\": \"Asia\",\n \"Capital\": \"Taipei\",\n \"Time Zone in Capital\": \"Asia/Taipei\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"zh-TW,zh,nan,hak\",\n \"Languages\": \"Mandarin Chinese (official), Taiwanese (Min), Hakka dialects\",\n \"Area KM2\": 35980,\n \"Internet Hosts\": 6272000,\n \"Internet Users\": 16147000,\n \"Phones (Mobile)\": 29455000,\n \"Phones (Landline)\": 15998000,\n \"GDP\": 484700000000\n },\n {\n \"Country Name\": \"Tajikistan\",\n \"ISO2\": \"TJ\",\n \"ISO3\": \"TJK\",\n \"Top Level Domain\": \"tj\",\n \"FIPS\": \"TI\",\n \"ISO Numeric\": 762,\n \"GeoNameID\": 1220409,\n \"E164\": 992,\n \"Phone Code\": 992,\n \"Continent\": \"Asia\",\n \"Capital\": \"Dushanbe\",\n \"Time Zone in Capital\": \"Asia/Dushanbe\",\n \"Currency\": \"Somoni\",\n \"Language Codes\": \"tg,ru\",\n \"Languages\": \"Tajik (official), Russian widely used in government and business\",\n \"Area KM2\": 143100,\n \"Internet Hosts\": 6258,\n \"Internet Users\": 700000,\n \"Phones (Mobile)\": 6528000,\n \"Phones (Landline)\": 393000,\n \"GDP\": 8513000000\n },\n {\n \"Country Name\": \"Tanzania\",\n \"ISO2\": \"TZ\",\n \"ISO3\": \"TZA\",\n \"Top Level Domain\": \"tz\",\n \"FIPS\": \"TZ\",\n \"ISO Numeric\": 834,\n \"GeoNameID\": 149590,\n \"E164\": 255,\n \"Phone Code\": 255,\n \"Continent\": \"Africa\",\n \"Capital\": \"Dodoma\",\n \"Time Zone in Capital\": \"Africa/Dar_es_Salaam\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"sw-TZ,en,ar\",\n \"Languages\": \"Kiswahili or Swahili (official), Kiunguja (name for Swahili in Zanzibar), English (official, primary language of commerce, administration, and higher education), Arabic (widely spoken in Zanzibar), many local languages\",\n \"Area KM2\": 945087,\n \"Internet Hosts\": 26074,\n \"Internet Users\": 678000,\n \"Phones (Mobile)\": 27220000,\n \"Phones (Landline)\": 161100,\n \"GDP\": 31940000000\n },\n {\n \"Country Name\": \"Thailand\",\n \"ISO2\": \"TH\",\n \"ISO3\": \"THA\",\n \"Top Level Domain\": \"th\",\n \"FIPS\": \"TH\",\n \"ISO Numeric\": 764,\n \"GeoNameID\": 1605651,\n \"E164\": 66,\n \"Phone Code\": 66,\n \"Continent\": \"Asia\",\n \"Capital\": \"Bangkok\",\n \"Time Zone in Capital\": \"Asia/Bangkok\",\n \"Currency\": \"Baht\",\n \"Language Codes\": \"th,en\",\n \"Languages\": \"Thai (official) 90.7%, Burmese 1.3%, other 8%\",\n \"Area KM2\": 514000,\n \"Internet Hosts\": 3399000,\n \"Internet Users\": 17483000,\n \"Phones (Mobile)\": 84075000,\n \"Phones (Landline)\": 6391000,\n \"GDP\": 400900000000\n },\n {\n \"Country Name\": \"Togo\",\n \"ISO2\": \"TG\",\n \"ISO3\": \"TGO\",\n \"Top Level Domain\": \"tg\",\n \"FIPS\": \"TO\",\n \"ISO Numeric\": 768,\n \"GeoNameID\": 2363686,\n \"E164\": 228,\n \"Phone Code\": 228,\n \"Continent\": \"Africa\",\n \"Capital\": \"Lome\",\n \"Time Zone in Capital\": \"Africa/Abidjan\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"fr-TG,ee,hna,kbp,dag,ha\",\n \"Languages\": \"French (official, the language of commerce), Ewe and Mina (the two major African languages in the south), Kabye (sometimes spelled Kabiye) and Dagomba (the two major African languages in the north)\",\n \"Area KM2\": 56785,\n \"Internet Hosts\": 1168,\n \"Internet Users\": 356300,\n \"Phones (Mobile)\": 3518000,\n \"Phones (Landline)\": 225000,\n \"GDP\": 4299000000\n },\n {\n \"Country Name\": \"Tokelau\",\n \"ISO2\": \"TK\",\n \"ISO3\": \"TKL\",\n \"Top Level Domain\": \"tk\",\n \"FIPS\": \"TL\",\n \"ISO Numeric\": 772,\n \"GeoNameID\": 4031074,\n \"E164\": 690,\n \"Phone Code\": 690,\n \"Continent\": \"Oceania\",\n \"Capital\": \"\",\n \"Time Zone in Capital\": \"Pacific/Fakaofo\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"tkl,en-TK\",\n \"Languages\": \"Tokelauan 93.5% (a Polynesian language), English 58.9%, Samoan 45.5%, Tuvaluan 11.6%, Kiribati 2.7%, other 2.5%, none 4.1%, unspecified 0.6%\",\n \"Area KM2\": 10,\n \"Internet Hosts\": 2069,\n \"Internet Users\": 800,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Tonga\",\n \"ISO2\": \"TO\",\n \"ISO3\": \"TON\",\n \"Top Level Domain\": \"to\",\n \"FIPS\": \"TN\",\n \"ISO Numeric\": 776,\n \"GeoNameID\": 4032283,\n \"E164\": 676,\n \"Phone Code\": 676,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Nuku'alofa\",\n \"Time Zone in Capital\": \"Pacific/Tongatapu\",\n \"Currency\": \"Pa'anga\",\n \"Language Codes\": \"to,en-TO\",\n \"Languages\": \"English and Tongan 87%, Tongan (official) 10.7%, English (official) 1.2%, other 1.1%, uspecified 0.03% (2006 est.)\",\n \"Area KM2\": 748,\n \"Internet Hosts\": 5367,\n \"Internet Users\": 8400,\n \"Phones (Mobile)\": 56000,\n \"Phones (Landline)\": 30000,\n \"GDP\": 477000000\n },\n {\n \"Country Name\": \"Trinidad and Tobago\",\n \"ISO2\": \"TT\",\n \"ISO3\": \"TTO\",\n \"Top Level Domain\": \"tt\",\n \"FIPS\": \"TD\",\n \"ISO Numeric\": 780,\n \"GeoNameID\": 3573591,\n \"E164\": 1,\n \"Phone Code\": \"1-868\",\n \"Continent\": \"North America\",\n \"Capital\": \"Port of Spain\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-TT,hns,fr,es,zh\",\n \"Languages\": \"English (official), Caribbean Hindustani (a dialect of Hindi), French, Spanish, Chinese\",\n \"Area KM2\": 5128,\n \"Internet Hosts\": 241690,\n \"Internet Users\": 593000,\n \"Phones (Mobile)\": 1884000,\n \"Phones (Landline)\": 287000,\n \"GDP\": 27130000000\n },\n {\n \"Country Name\": \"Tunisia\",\n \"ISO2\": \"TN\",\n \"ISO3\": \"TUN\",\n \"Top Level Domain\": \"tn\",\n \"FIPS\": \"TS\",\n \"ISO Numeric\": 788,\n \"GeoNameID\": 2464461,\n \"E164\": 216,\n \"Phone Code\": 216,\n \"Continent\": \"Africa\",\n \"Capital\": \"Tunis\",\n \"Time Zone in Capital\": \"Africa/Tunis\",\n \"Currency\": \"Dinar\",\n \"Language Codes\": \"ar-TN,fr\",\n \"Languages\": \"Arabic (official, one of the languages of commerce), French (commerce), Berber (Tamazight)\",\n \"Area KM2\": 163610,\n \"Internet Hosts\": 576,\n \"Internet Users\": 3500000,\n \"Phones (Mobile)\": 12840000,\n \"Phones (Landline)\": 1105000,\n \"GDP\": 48380000000\n },\n {\n \"Country Name\": \"Turkey\",\n \"ISO2\": \"TR\",\n \"ISO3\": \"TUR\",\n \"Top Level Domain\": \"tr\",\n \"FIPS\": \"TU\",\n \"ISO Numeric\": 792,\n \"GeoNameID\": 298795,\n \"E164\": 90,\n \"Phone Code\": 90,\n \"Continent\": \"Asia\",\n \"Capital\": \"Ankara\",\n \"Time Zone in Capital\": \"Europe/Istanbul\",\n \"Currency\": \"Lira\",\n \"Language Codes\": \"tr-TR,ku,diq,az,av\",\n \"Languages\": \"Turkish (official), Kurdish, other minority languages\",\n \"Area KM2\": 780580,\n \"Internet Hosts\": 7093000,\n \"Internet Users\": 27233000,\n \"Phones (Mobile)\": 67680000,\n \"Phones (Landline)\": 13860000,\n \"GDP\": 821800000000\n },\n {\n \"Country Name\": \"Turkmenistan\",\n \"ISO2\": \"TM\",\n \"ISO3\": \"TKM\",\n \"Top Level Domain\": \"tm\",\n \"FIPS\": \"TX\",\n \"ISO Numeric\": 795,\n \"GeoNameID\": 1218197,\n \"E164\": 993,\n \"Phone Code\": 993,\n \"Continent\": \"Asia\",\n \"Capital\": \"Ashgabat\",\n \"Time Zone in Capital\": \"Asia/Ashgabat\",\n \"Currency\": \"Manat\",\n \"Language Codes\": \"tk,ru,uz\",\n \"Languages\": \"Turkmen (official) 72%, Russian 12%, Uzbek 9%, other 7%\",\n \"Area KM2\": 488100,\n \"Internet Hosts\": 714,\n \"Internet Users\": 80400,\n \"Phones (Mobile)\": 3953000,\n \"Phones (Landline)\": 575000,\n \"GDP\": 40560000000\n },\n {\n \"Country Name\": \"Turks and Caicos Islands\",\n \"ISO2\": \"TC\",\n \"ISO3\": \"TCA\",\n \"Top Level Domain\": \"tc\",\n \"FIPS\": \"TK\",\n \"ISO Numeric\": 796,\n \"GeoNameID\": 3576916,\n \"E164\": 1,\n \"Phone Code\": \"1-649\",\n \"Continent\": \"North America\",\n \"Capital\": \"Cockburn Town\",\n \"Time Zone in Capital\": \"America/Grand_Turk\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-TC\",\n \"Languages\": \"English (official)\",\n \"Area KM2\": 430,\n \"Internet Hosts\": 73217,\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Tuvalu\",\n \"ISO2\": \"TV\",\n \"ISO3\": \"TUV\",\n \"Top Level Domain\": \"tv\",\n \"FIPS\": \"TV\",\n \"ISO Numeric\": 798,\n \"GeoNameID\": 2110297,\n \"E164\": 688,\n \"Phone Code\": 688,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Funafuti\",\n \"Time Zone in Capital\": \"Pacific/Funafuti\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"tvl,en,sm,gil\",\n \"Languages\": \"Tuvaluan (official), English (official), Samoan, Kiribati (on the island of Nui)\",\n \"Area KM2\": 26,\n \"Internet Hosts\": 145158,\n \"Internet Users\": 4200,\n \"Phones (Mobile)\": 2800,\n \"Phones (Landline)\": 1450,\n \"GDP\": 38000000\n },\n {\n \"Country Name\": \"U.S. Virgin Islands\",\n \"ISO2\": \"VI\",\n \"ISO3\": \"VIR\",\n \"Top Level Domain\": \"vi\",\n \"FIPS\": \"VQ\",\n \"ISO Numeric\": 850,\n \"GeoNameID\": 4796775,\n \"E164\": 1,\n \"Phone Code\": \"1-340\",\n \"Continent\": \"North America\",\n \"Capital\": \"Charlotte Amalie\",\n \"Time Zone in Capital\": \"America/Port_of_Spain\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-VI\",\n \"Languages\": \"English 74.7%, Spanish or Spanish Creole 16.8%, French or French Creole 6.6%, other 1.9% (2000 census)\",\n \"Area KM2\": 352,\n \"Internet Hosts\": 4790,\n \"Internet Users\": 30000,\n \"Phones (Mobile)\": 80300,\n \"Phones (Landline)\": 75800,\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Uganda\",\n \"ISO2\": \"UG\",\n \"ISO3\": \"UGA\",\n \"Top Level Domain\": \"ug\",\n \"FIPS\": \"UG\",\n \"ISO Numeric\": 800,\n \"GeoNameID\": 226074,\n \"E164\": 256,\n \"Phone Code\": 256,\n \"Continent\": \"Africa\",\n \"Capital\": \"Kampala\",\n \"Time Zone in Capital\": \"Africa/Kampala\",\n \"Currency\": \"Shilling\",\n \"Language Codes\": \"en-UG,lg,sw,ar\",\n \"Languages\": \"English (official national language, taught in grade schools, used in courts of law and by most newspapers and some radio broadcasts), Ganda or Luganda (most widely used of the Niger-Congo languages, preferred for native language publications in the capital and may be taught in school), other Niger-Congo languages, Nilo-Saharan languages, Swahili, Arabic\",\n \"Area KM2\": 236040,\n \"Internet Hosts\": 32683,\n \"Internet Users\": 3200000,\n \"Phones (Mobile)\": 16355000,\n \"Phones (Landline)\": 315000,\n \"GDP\": 22600000000\n },\n {\n \"Country Name\": \"Ukraine\",\n \"ISO2\": \"UA\",\n \"ISO3\": \"UKR\",\n \"Top Level Domain\": \"ua\",\n \"FIPS\": \"UP\",\n \"ISO Numeric\": 804,\n \"GeoNameID\": 690791,\n \"E164\": 380,\n \"Phone Code\": 380,\n \"Continent\": \"Europe\",\n \"Capital\": \"Kiev\",\n \"Time Zone in Capital\": \"Europe/Kiev\",\n \"Currency\": \"Hryvnia\",\n \"Language Codes\": \"uk,ru-UA,rom,pl,hu\",\n \"Languages\": \"Ukrainian (official) 67%, Russian (regional language) 24%, other (includes small Romanian-, Polish-, and Hungarian-speaking minorities) 9%\",\n \"Area KM2\": 603700,\n \"Internet Hosts\": 2173000,\n \"Internet Users\": 7770000,\n \"Phones (Mobile)\": 59344000,\n \"Phones (Landline)\": 12182000,\n \"GDP\": 175500000000\n },\n {\n \"Country Name\": \"United Arab Emirates\",\n \"ISO2\": \"AE\",\n \"ISO3\": \"ARE\",\n \"Top Level Domain\": \"ae\",\n \"FIPS\": \"AE\",\n \"ISO Numeric\": 784,\n \"GeoNameID\": 290557,\n \"E164\": 971,\n \"Phone Code\": 971,\n \"Continent\": \"Asia\",\n \"Capital\": \"Abu Dhabi\",\n \"Time Zone in Capital\": \"Asia/Dubai\",\n \"Currency\": \"Dirham\",\n \"Language Codes\": \"ar-AE,fa,en,hi,ur\",\n \"Languages\": \"Arabic (official), Persian, English, Hindi, Urdu\",\n \"Area KM2\": 82880,\n \"Internet Hosts\": 337804,\n \"Internet Users\": 3449000,\n \"Phones (Mobile)\": 13775000,\n \"Phones (Landline)\": 1967000,\n \"GDP\": 390000000000\n },\n {\n \"Country Name\": \"United Kingdom\",\n \"ISO2\": \"GB\",\n \"ISO3\": \"GBR\",\n \"Top Level Domain\": \"uk\",\n \"FIPS\": \"UK\",\n \"ISO Numeric\": 826,\n \"GeoNameID\": 2635167,\n \"E164\": 44,\n \"Phone Code\": 44,\n \"Continent\": \"Europe\",\n \"Capital\": \"London\",\n \"Time Zone in Capital\": \"Europe/London\",\n \"Currency\": \"Pound\",\n \"Language Codes\": \"en-GB,cy-GB,gd\",\n \"Languages\": \"English\",\n \"Area KM2\": 244820,\n \"Internet Hosts\": 8107000,\n \"Internet Users\": 51444000,\n \"Phones (Mobile)\": 82109000,\n \"Phones (Landline)\": 33010000,\n \"GDP\": 2490000000000\n },\n {\n \"Country Name\": \"United States\",\n \"ISO2\": \"US\",\n \"ISO3\": \"USA\",\n \"Top Level Domain\": \"us\",\n \"FIPS\": \"US\",\n \"ISO Numeric\": 840,\n \"GeoNameID\": 6252001,\n \"E164\": 1,\n \"Phone Code\": 1,\n \"Continent\": \"North America\",\n \"Capital\": \"Washington\",\n \"Time Zone in Capital\": \"America/New_York\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-US,es-US,haw,fr\",\n \"Languages\": \"English 82.1%, Spanish 10.7%, other Indo-European 3.8%, Asian and Pacific island 2.7%, other 0.7% (2000 census)\",\n \"Area KM2\": 9629091,\n \"Internet Hosts\": 505000000,\n \"Internet Users\": 245000000,\n \"Phones (Mobile)\": 310000000,\n \"Phones (Landline)\": 139000000,\n \"GDP\": 16720000000000\n },\n {\n \"Country Name\": \"Uruguay\",\n \"ISO2\": \"UY\",\n \"ISO3\": \"URY\",\n \"Top Level Domain\": \"uy\",\n \"FIPS\": \"UY\",\n \"ISO Numeric\": 858,\n \"GeoNameID\": 3439705,\n \"E164\": 598,\n \"Phone Code\": 598,\n \"Continent\": \"South America\",\n \"Capital\": \"Montevideo\",\n \"Time Zone in Capital\": \"America/Montevideo\",\n \"Currency\": \"Peso\",\n \"Language Codes\": \"es-UY\",\n \"Languages\": \"Spanish (official), Portunol, Brazilero (Portuguese-Spanish mix on the Brazilian frontier)\",\n \"Area KM2\": 176220,\n \"Internet Hosts\": 1036000,\n \"Internet Users\": 1405000,\n \"Phones (Mobile)\": 5000000,\n \"Phones (Landline)\": 1010000,\n \"GDP\": 57110000000\n },\n {\n \"Country Name\": \"Uzbekistan\",\n \"ISO2\": \"UZ\",\n \"ISO3\": \"UZB\",\n \"Top Level Domain\": \"uz\",\n \"FIPS\": \"UZ\",\n \"ISO Numeric\": 860,\n \"GeoNameID\": 1512440,\n \"E164\": 998,\n \"Phone Code\": 998,\n \"Continent\": \"Asia\",\n \"Capital\": \"Tashkent\",\n \"Time Zone in Capital\": \"Asia/Tashkent\",\n \"Currency\": \"Som\",\n \"Language Codes\": \"uz,ru,tg\",\n \"Languages\": \"Uzbek (official) 74.3%, Russian 14.2%, Tajik 4.4%, other 7.1%\",\n \"Area KM2\": 447400,\n \"Internet Hosts\": 56075,\n \"Internet Users\": 4689000,\n \"Phones (Mobile)\": 20274000,\n \"Phones (Landline)\": 1963000,\n \"GDP\": 55180000000\n },\n {\n \"Country Name\": \"Vanuatu\",\n \"ISO2\": \"VU\",\n \"ISO3\": \"VUT\",\n \"Top Level Domain\": \"vu\",\n \"FIPS\": \"NH\",\n \"ISO Numeric\": 548,\n \"GeoNameID\": 2134431,\n \"E164\": 678,\n \"Phone Code\": 678,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Port Vila\",\n \"Time Zone in Capital\": \"Pacific/Efate\",\n \"Currency\": \"Vatu\",\n \"Language Codes\": \"bi,en-VU,fr-VU\",\n \"Languages\": \"local languages (more than 100) 63.2%, Bislama (official; creole) 33.7%, English (official) 2%, French (official) 0.6%, other 0.5% (2009 est.)\",\n \"Area KM2\": 12200,\n \"Internet Hosts\": 5655,\n \"Internet Users\": 17000,\n \"Phones (Mobile)\": 137000,\n \"Phones (Landline)\": 5800,\n \"GDP\": 828000000\n },\n {\n \"Country Name\": \"Vatican\",\n \"ISO2\": \"VA\",\n \"ISO3\": \"VAT\",\n \"Top Level Domain\": \"va\",\n \"FIPS\": \"VT\",\n \"ISO Numeric\": 336,\n \"GeoNameID\": 3164670,\n \"E164\": 39,\n \"Phone Code\": 379,\n \"Continent\": \"Europe\",\n \"Capital\": \"Vatican City\",\n \"Time Zone in Capital\": \"Europe/Rome\",\n \"Currency\": \"Euro\",\n \"Language Codes\": \"la,it,fr\",\n \"Languages\": \"Latin, Italian, French\",\n \"Area KM2\": 0,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Venezuela\",\n \"ISO2\": \"VE\",\n \"ISO3\": \"VEN\",\n \"Top Level Domain\": \"ve\",\n \"FIPS\": \"VE\",\n \"ISO Numeric\": 862,\n \"GeoNameID\": 3625428,\n \"E164\": 58,\n \"Phone Code\": 58,\n \"Continent\": \"South America\",\n \"Capital\": \"Caracas\",\n \"Time Zone in Capital\": \"America/Caracas\",\n \"Currency\": \"Bolivar\",\n \"Language Codes\": \"es-VE\",\n \"Languages\": \"Spanish (official), numerous indigenous dialects\",\n \"Area KM2\": 912050,\n \"Internet Hosts\": 1016000,\n \"Internet Users\": 8918000,\n \"Phones (Mobile)\": 30520000,\n \"Phones (Landline)\": 7650000,\n \"GDP\": 367500000000\n },\n {\n \"Country Name\": \"Vietnam\",\n \"ISO2\": \"VN\",\n \"ISO3\": \"VNM\",\n \"Top Level Domain\": \"vn\",\n \"FIPS\": \"VM\",\n \"ISO Numeric\": 704,\n \"GeoNameID\": 1562822,\n \"E164\": 84,\n \"Phone Code\": 84,\n \"Continent\": \"Asia\",\n \"Capital\": \"Hanoi\",\n \"Time Zone in Capital\": \"Asia/Ho_Chi_Minh\",\n \"Currency\": \"Dong\",\n \"Language Codes\": \"vi,en,fr,zh,km\",\n \"Languages\": \"Vietnamese (official), English (increasingly favored as a second language), some French, Chinese, and Khmer, mountain area languages (Mon-Khmer and Malayo-Polynesian)\",\n \"Area KM2\": 329560,\n \"Internet Hosts\": 189553,\n \"Internet Users\": 23382000,\n \"Phones (Mobile)\": 134066000,\n \"Phones (Landline)\": 10191000,\n \"GDP\": 170000000000\n },\n {\n \"Country Name\": \"Wallis and Futuna\",\n \"ISO2\": \"WF\",\n \"ISO3\": \"WLF\",\n \"Top Level Domain\": \"wf\",\n \"FIPS\": \"WF\",\n \"ISO Numeric\": 876,\n \"GeoNameID\": 4034749,\n \"E164\": 681,\n \"Phone Code\": 681,\n \"Continent\": \"Oceania\",\n \"Capital\": \"Mata Utu\",\n \"Time Zone in Capital\": \"Pacific/Wallis\",\n \"Currency\": \"Franc\",\n \"Language Codes\": \"wls,fud,fr-WF\",\n \"Languages\": \"Wallisian (indigenous Polynesian language) 58.9%, Futunian 30.1%, French (official) 10.8%, other 0.2% (2003 census)\",\n \"Area KM2\": 274,\n \"Internet Hosts\": 2760,\n \"Internet Users\": 1300,\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Western Sahara\",\n \"ISO2\": \"EH\",\n \"ISO3\": \"ESH\",\n \"Top Level Domain\": \"eh\",\n \"FIPS\": \"WI\",\n \"ISO Numeric\": 732,\n \"GeoNameID\": 2461445,\n \"E164\": 212,\n \"Phone Code\": 212,\n \"Continent\": \"Africa\",\n \"Capital\": \"El-Aaiun\",\n \"Time Zone in Capital\": \"Africa/El_Aaiun\",\n \"Currency\": \"Dirham\",\n \"Language Codes\": \"ar,mey\",\n \"Languages\": \"Standard Arabic (national), Hassaniya Arabic, Moroccan Arabic\",\n \"Area KM2\": 266000,\n \"Internet Hosts\": \"\",\n \"Internet Users\": \"\",\n \"Phones (Mobile)\": \"\",\n \"Phones (Landline)\": \"\",\n \"GDP\": \"\"\n },\n {\n \"Country Name\": \"Yemen\",\n \"ISO2\": \"YE\",\n \"ISO3\": \"YEM\",\n \"Top Level Domain\": \"ye\",\n \"FIPS\": \"YM\",\n \"ISO Numeric\": 887,\n \"GeoNameID\": 69543,\n \"E164\": 967,\n \"Phone Code\": 967,\n \"Continent\": \"Asia\",\n \"Capital\": \"Sanaa\",\n \"Time Zone in Capital\": \"Asia/Aden\",\n \"Currency\": \"Rial\",\n \"Language Codes\": \"ar-YE\",\n \"Languages\": \"Arabic (official)\",\n \"Area KM2\": 527970,\n \"Internet Hosts\": 33206,\n \"Internet Users\": 2349000,\n \"Phones (Mobile)\": 13900000,\n \"Phones (Landline)\": 1100000,\n \"GDP\": 43890000000\n },\n {\n \"Country Name\": \"Zambia\",\n \"ISO2\": \"ZM\",\n \"ISO3\": \"ZMB\",\n \"Top Level Domain\": \"zm\",\n \"FIPS\": \"ZA\",\n \"ISO Numeric\": 894,\n \"GeoNameID\": 895949,\n \"E164\": 260,\n \"Phone Code\": 260,\n \"Continent\": \"Africa\",\n \"Capital\": \"Lusaka\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Kwacha\",\n \"Language Codes\": \"en-ZM,bem,loz,lun,lue,ny,toi\",\n \"Languages\": \"Bembe 33.4%, Nyanja 14.7%, Tonga 11.4%, Lozi 5.5%, Chewa 4.5%, Nsenga 2.9%, Tumbuka 2.5%, Lunda (North Western) 1.9%, Kaonde 1.8%, Lala 1.8%, Lamba 1.8%, English (official) 1.7%, Luvale 1.5%, Mambwe 1.3%, Namwanga 1.2%, Lenje 1.1%, Bisa 1%, other 9.2%, unspecified 0.4%\",\n \"Area KM2\": 752614,\n \"Internet Hosts\": 16571,\n \"Internet Users\": 816200,\n \"Phones (Mobile)\": 10525000,\n \"Phones (Landline)\": 82500,\n \"GDP\": 22240000000\n },\n {\n \"Country Name\": \"Zimbabwe\",\n \"ISO2\": \"ZW\",\n \"ISO3\": \"ZWE\",\n \"Top Level Domain\": \"zw\",\n \"FIPS\": \"ZI\",\n \"ISO Numeric\": 716,\n \"GeoNameID\": 878675,\n \"E164\": 263,\n \"Phone Code\": 263,\n \"Continent\": \"Africa\",\n \"Capital\": \"Harare\",\n \"Time Zone in Capital\": \"Africa/Maputo\",\n \"Currency\": \"Dollar\",\n \"Language Codes\": \"en-ZW,sn,nr,nd\",\n \"Languages\": \"English (official), Shona, Sindebele (the language of the Ndebele, sometimes called Ndebele), numerous but minor tribal dialects\",\n \"Area KM2\": 390580,\n \"Internet Hosts\": 30615,\n \"Internet Users\": 1423000,\n \"Phones (Mobile)\": 12614000,\n \"Phones (Landline)\": 301600,\n \"GDP\": 10480000000\n }\n]","import countries from \"./countries.json\";\nimport axios from \"axios\";\nimport { UpdatePhonePayload, UpdatePhoneResponse } from \"./phoneModal.types\";\n\nconst phoneButtons = document.querySelectorAll(\".modal--phone-button\") as NodeListOf;\nconst phoneModals = document.querySelectorAll(\".modal--phone\") as NodeListOf;\nconst phoneLabels = document.querySelectorAll(\".values--phone\") as NodeListOf;\nconst readOnlyPhoneInput = document.querySelector(\".phone-input.readonly\") as HTMLInputElement;\nconst amanacardNumber = document.getElementById(\"cardNumber\") as HTMLParagraphElement;\nconst phoneNumberHiddenInput = document.querySelector('input[name=\"newPhoneNumber\"]') as HTMLInputElement;\n\nconst getCountryCode = (countryName: string) => {\n const country = countries.find(country => country[\"Country Name\"].toLowerCase() === countryName.toLowerCase());\n return country ? country[\"ISO2\"] : \"\";\n}\n\nconst updatePhoneNumber = async (payload: UpdatePhonePayload): Promise => {\n try {\n // For development:\n // const response = await axios.post(\"https://localhost:44323/api/recipients/updateRecipientPhoneNumber\", payload);\n\n if (phoneNumberHiddenInput && payload.newNumber !== null && payload.newNumber !== undefined) {\n phoneNumberHiddenInput.value = payload.newNumber;\n return {\n success: true,\n message: \"Phone number updated successfully.\"\n };\n }else {\n const response = await axios.post(\"/api/recipients/updateRecipientPhoneNumber\", payload);\n return response.data;\n }\n \n } catch (exception: any) {\n console.error(exception);\n\n return {\n success: false,\n message: \"An error occurred while updating the phone number.\"\n }\n }\n}\n\nif (phoneButtons.length > 0 && phoneModals.length > 0 && phoneButtons.length === phoneModals.length) {\n phoneButtons.forEach((button, index) => {\n button.addEventListener(\"click\", (e) => {\n phoneModals[index].classList.add(\"active\");\n readOnlyPhoneInput.dispatchEvent(new Event('input'));\n });\n });\n\n phoneModals.forEach((modal) => {\n const { allowedCountry, currentNumber, successMessage, errorMessage, loadingMessage, uid } = modal.dataset;\n const modalButton = modal.querySelector(\".modal-button\") as HTMLButtonElement;\n const oldButtonHtml = modalButton.innerHTML;\n const closeButton = modal.querySelector(\".close\") as HTMLButtonElement;\n // 'State' variables\n let isLoading = false;\n let newNumber: string | null = null;\n\n const resetButton = () => {\n modalButton.innerHTML = oldButtonHtml;\n modalButton.disabled = false;\n }\n\n modal.addEventListener(\"click\", (event) => {\n if (event.target === modal) {\n modal.classList.remove(\"active\");\n }\n });\n\n if (closeButton) {\n closeButton.addEventListener(\"click\", () => {\n modal.classList.remove(\"active\");\n });\n }\n\n // Init intlTelInput\n const phoneInputs = modal.querySelectorAll(\".phone-input\") as NodeListOf;\n\n phoneInputs.forEach((input) => {\n // @ts-expect-error\n const iti = window.intlTelInput(input, {\n utilsScript: \"https://cdn.jsdelivr.net/npm/intl-tel-input@23.0.4/build/js/utils.js\",\n // onlyCountries: [getCountryCode(allowedCountry)],\n autoHideDialCode: false,\n nationalMode: false\n });\n\n // Set the country\n iti.setCountry(getCountryCode(allowedCountry));\n\n if (input.classList.contains('readonly')) {\n input.disabled = true;\n input.value = currentNumber;\n //manually triggering the input event to update the current number\n //as this is pre-populated in the cshtml\n input.dispatchEvent(new Event('input'));\n }\n\n input.addEventListener('input', () => {\n newNumber = iti.getNumber();\n\n modalButton.disabled = !iti.isValidNumber();\n });\n\n const updateUI = (success: boolean | null = null) => {\n input.disabled = isLoading;\n if (isLoading) {\n modalButton.disabled = true;\n modalButton.textContent = loadingMessage;\n input.classList.add(\"readonly\");\n }\n else if (success === true) {\n modalButton.textContent = successMessage;\n input.disabled = true;\n input.classList.add(\"readonly\");\n\n phoneLabels.forEach((label) => {\n label.textContent = newNumber;\n });\n\n setTimeout(() => {\n modal.classList.remove(\"active\");\n phoneInputs.forEach((input) => {\n input.value = newNumber;\n });\n resetButton();\n }, 2500);\n }\n else if (success === false) {\n modalButton.textContent = errorMessage;\n input.disabled = true;\n input.classList.add(\"readonly\");\n\n setTimeout(() => {\n modal.classList.remove(\"active\");\n resetButton();\n }, 2500);\n }\n }\n\n modalButton.addEventListener(\"click\", async () => {\n if (isLoading) return;\n\n isLoading = true;\n updateUI();\n\n const payload: UpdatePhonePayload = {\n uid: parseInt(uid),\n newNumber: newNumber,\n amanacardNumber: amanacardNumber?.textContent.trim() as string ?? \"\"\n };\n\n const response = await updatePhoneNumber(payload);\n isLoading = false;\n\n updateUI(response.success);\n });\n });\n });\n}","const video: HTMLVideoElement | null = document.querySelector(\".quote__video\");\nlet alreadyActive = false;\n\nif (video) {\n const observer: IntersectionObserver = new IntersectionObserver((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\n entries.forEach((entry: IntersectionObserverEntry) => {\n if (entry.isIntersecting && !alreadyActive) {\n video.play();\n alreadyActive = true;\n }\n });\n }, { threshold: 0.5 });\n\n observer.observe(video);\n}","const registerAccountType = document.querySelector(\".register__wrapper\") as HTMLDivElement;\nconst registerAccountTypeLink = document.querySelector(\".register__link\") as HTMLLinkElement;\n\nif (registerAccountType) {\n const registerAccountTypeCards: NodeListOf = document.querySelectorAll(\".register__card\");\n\n const resetRegisterCards = () => {\n registerAccountTypeCards.forEach(card => {\n card.classList.remove(\"register__card--active\")\n })\n }\n\n const setActiveCard = (item: HTMLDivElement) => {\n resetRegisterCards()\n item.classList.add(\"register__card--active\")\n registerAccountTypeLink.href=item.getAttribute(\"data-link\")\n }\n\n if(registerAccountTypeCards.length > 0) {\n const firstCardLink = registerAccountTypeCards[0].getAttribute(\"data-link\");\n registerAccountTypeCards[0].classList.add(\"register__card--active\");\n registerAccountTypeLink.href= firstCardLink\n \n registerAccountTypeCards.forEach((card: HTMLDivElement) => {\n card.addEventListener(\"click\", () => {\n setActiveCard(card)\n })\n \n card.addEventListener(\"keydown\", e => {\n const keyboardEvent = e;\n \n if(keyboardEvent.key === \"Enter\"){\n setActiveCard(card)\n }\n })\n })\n }\n}","const sendFundsOverlay = document.querySelector(\".send-funds__overlay\") as HTMLElement\n\nif(sendFundsOverlay){\n const sendFundsCards: NodeListOf = document.querySelectorAll(\".send-funds__card\");\n const sendFundsNested: NodeListOf = document.querySelectorAll(\".send-funds__nested\");\n const sendFundsMain = document.querySelector(\".send-funds__main\") as HTMLElement\n const sendFundsBack = document.querySelector(\".send-funds__back\") as HTMLElement\n const sendFundsCloseButton = document.querySelector(\".send-funds__close\") as HTMLElement\n const sendFundsCloseButtonMobile = document.querySelector(\".send-funds__close-mobile\") as HTMLElement\n const sendFundsShareButton = document.querySelector(\".send-funds__share\") as HTMLElement\n const sendFundsBackButton = document.querySelector(\".send-funds__back\") as HTMLElement\n const sendFundsButtons = document.querySelector(\".send-funds__buttons\") as HTMLElement\n const mobileMenu = document.querySelector(\".menu-mobile__overlay\") as HTMLElement\n const menuMobileIcon = document.querySelector(\".menu-mobile__icon\") as HTMLElement\n const htmlEl: HTMLElement | null = document.documentElement;\n\n const closeSendFunds = () => {\n sendFundsOverlay.classList.remove(\"send-funds__overlay--active\")\n htmlEl.style.overflow=\"auto\"\n \n setTimeout(() => {\n sendFundsNested.forEach(item => {\n item.classList.remove(\"send-funds__nested--active\")\n })\n \n sendFundsMain.classList.remove(\"send-funds__main--hidden\")\n sendFundsButtons.classList.remove(\"send-funds__buttons--border\")\n sendFundsBackButton.classList.remove(\"send-funds__back--active\")\n sendFundsShareButton.classList.remove(\"send-funds__share--active\")\n }, 500)\n }\n\n const openSendFunds = (index: number) => {\n if(mobileMenu?.classList.contains(\"menu-mobile__overlay--active\")){\n mobileMenu.classList.remove(\"menu-mobile__overlay--active\")\n menuMobileIcon.classList.remove(\"menu-mobile__icon--open\")\n }\n\n sendFundsMain.classList.add(\"send-funds__main--hidden\")\n sendFundsNested[index].classList.add(\"send-funds__nested--active\")\n sendFundsButtons.classList.add(\"send-funds__buttons--border\")\n sendFundsBackButton.classList.add(\"send-funds__back--active\")\n sendFundsShareButton.classList.add(\"send-funds__share--active\")\n }\n\n const goBackFunds = () => {\n sendFundsNested.forEach(item => {\n item.classList.remove(\"send-funds__nested--active\")\n })\n\n sendFundsMain.classList.remove(\"send-funds__main--hidden\")\n sendFundsButtons.classList.remove(\"send-funds__buttons--border\")\n sendFundsBackButton.classList.remove(\"send-funds__back--active\")\n sendFundsShareButton.classList.remove(\"send-funds__share--active\")\n }\n\n if(sendFundsCards.length > 0){\n sendFundsCards.forEach((card, i) => {\n card.addEventListener(\"click\", () => openSendFunds(i))\n });\n\n sendFundsCards.forEach((card, i) => {\n card.addEventListener(\"keydown\", e => {\n const keyboardEvent = e;\n\n if(keyboardEvent.key === \"Enter\"){\n openSendFunds(i)\n }\n })\n });\n }\n\n if(sendFundsBack) {\n sendFundsBack.addEventListener(\"click\", () => goBackFunds())\n }\n\n if(sendFundsCloseButton){\n sendFundsCloseButton.addEventListener(\"click\", closeSendFunds)\n }\n\n if(sendFundsCloseButtonMobile){\n sendFundsCloseButtonMobile.addEventListener(\"click\", closeSendFunds)\n }\n\n if(sendFundsOverlay){\n sendFundsOverlay.addEventListener(\"keydown\", e => {\n if(e.key === \"Escape\"){\n closeSendFunds()\n }\n })\n\n sendFundsOverlay.addEventListener(\"click\", e => {\n const targetElement = e.target as HTMLElement;\n\n if(targetElement.classList.contains(\"send-funds__overlay--active\")){\n closeSendFunds();\n }\n });\n }\n}","import Glide from '@glidejs/glide';\n\nconst teamGridCarousels: NodeListOf = document.querySelectorAll(\".team-grid__carousel-inner\");\nlet teamGridComponents: NodeListOf;\n\nif (window.innerWidth > 480) {\n teamGridComponents = document.querySelectorAll(\".team-grid__grid\");\n} else {\n teamGridComponents = document.querySelectorAll(\".team-grid__carousel\");\n}\n\nif (teamGridCarousels.length > 0) {\n const setRangeMax = (arr: NodeListOf, input: HTMLInputElement) => {\n const slidesLength = arr.length;\n const rangeMax = (slidesLength - 2).toString();\n \n input.max = rangeMax;\n \n setRangeThumbWidth(rangeMax, input);\n };\n \n const setRangeThumbWidth = (max: string, input: HTMLInputElement) => {\n const width = 200 / +max;\n input.style.setProperty('--thumb-size', width.toString() + \"px\");\n \n if (max === \"1\") {\n input.style.setProperty('--thumb-size', \"100px\");\n }\n };\n \n teamGridCarousels.forEach((item) => {\n const glide = new Glide(item, {\n type: 'slider',\n perView: 1.7,\n gap: 10,\n rewind: true,\n bound: true,\n breakpoints: {\n 480: {\n perView: 2.065,\n },\n }\n });\n\n glide.mount();\n\n const carouselRange = item.querySelector(\".team-grid__carousel-range\") as HTMLInputElement;\n const slides: NodeListOf = item.querySelectorAll(\".team-grid__card\");\n\n carouselRange.addEventListener(\"input\", e => {\n setTimeout(() => {\n glide.go(`=${carouselRange.value}`);\n }, 500);\n });\n\n glide.on('move.after', () => {\n const currentIndex = glide.index;\n carouselRange.value = currentIndex.toString();\n });\n\n setRangeMax(slides, carouselRange);\n });\n}\n\nif (teamGridComponents.length > 0) {\n teamGridComponents.forEach(item => {\n\n const teamGridCards: NodeListOf = item.querySelectorAll(\".team-grid__card\");\n const teamGridModals: NodeListOf = item.querySelectorAll(\".team-grid__modal\");\n\n teamGridCards.forEach((card, i) => {\n\n card.addEventListener(\"click\", () => {\n modalIndex = i;\n const modal = teamGridModals[modalIndex] as HTMLDialogElement;\n \n modal.showModal();\n \n setActiveModal(modal);\n attachModalEventListeners(); \n });\n\n let activeModal: HTMLDialogElement | null = null;\n let modalIndex = 0;\n\n const handlePrev = (modals: NodeListOf, index: number) => {\n closeAllModals()\n\n if (index === 0) {\n modalIndex = modals.length - 1;\n } else {\n modalIndex--;\n }\n\n const newModal = modals[modalIndex] as HTMLDialogElement;\n\n setActiveModal(newModal);\n newModal?.showModal();\n };\n\n const handleNext = (modals: NodeListOf, index: number) => {\n closeAllModals()\n\n if (index === modals.length - 1) {\n modalIndex = 0;\n } else {\n modalIndex++;\n }\n\n const newModal = modals[modalIndex] as HTMLDialogElement;\n\n setActiveModal(newModal);\n newModal?.showModal();\n };\n\n const attachModalEventListeners = () => {\n const modalPrevButton = activeModal?.querySelector(\".team-grid__modal-prev\") as HTMLButtonElement | null;\n const modalNextButton = activeModal?.querySelector(\".team-grid__modal-next\") as HTMLButtonElement | null;\n const modalCloseButton = activeModal?.querySelector(\".team-grid__modal-close\") as HTMLButtonElement;\n\n modalCloseButton.blur();\n activeModal.focus()\n\n modalCloseButton.addEventListener(\"click\", () => activeModal?.close());\n\n activeModal.addEventListener(\"click\", e => {\n const target = e.target as Element;\n\n if(target.classList.contains(\"team-grid__modal\")){\n activeModal.close()\n }\n })\n\n modalPrevButton?.removeEventListener(\"click\", handlePrevEvent);\n modalNextButton?.removeEventListener(\"click\", handleNextEvent);\n\n modalPrevButton?.addEventListener(\"click\", handlePrevEvent);\n modalNextButton?.addEventListener(\"click\", handleNextEvent);\n };\n\n const handlePrevEvent: EventListener = () => {\n handlePrev(teamGridModals, modalIndex);\n\n const prevButton = activeModal?.querySelector(\".team-grid__modal-prev\") as HTMLButtonElement | null;\n\n prevButton.focus()\n };\n\n const handleNextEvent: EventListener = () => {\n handleNext(teamGridModals, modalIndex);\n\n const nextButton = activeModal?.querySelector(\".team-grid__modal-next\") as HTMLButtonElement | null;\n\n nextButton.focus()\n };\n\n const onActiveModalChange = () => {\n attachModalEventListeners();\n };\n\n const setActiveModal = (modal: HTMLDialogElement | null) => {\n activeModal = modal;\n onActiveModalChange();\n };\n\n const closeAllModals = () => {\n teamGridModals.forEach((modal: HTMLDialogElement) => {\n modal.close()\n })\n }\n });\n })\n}","const transferSummaryComponent = document.querySelector(\".transfer-summary__wrapper\") as HTMLDivElement;\n\nif (transferSummaryComponent) {\n const transferSummaryLeft = transferSummaryComponent.querySelector(\".transfer-summary__left\") as HTMLDivElement;\n const transferSummaryNextButton = transferSummaryComponent.querySelector(\".transfer-summary__button\") as HTMLButtonElement;\n\n const showTransferSummary = () => {\n transferSummaryLeft.classList.remove(\"transfer-summary__left--active\")\n\n const currentPayoutMethod = (document.querySelector(\"input[name='payment-method']:checked\") as HTMLInputElement).value;\n document.querySelector(`.transfer-summary__right[data-type='${currentPayoutMethod}']`)?.classList.add(\"transfer-summary__right--active\");\n\n document.querySelector\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }\n\n transferSummaryNextButton.addEventListener(\"click\", () => {\n showTransferSummary()\n })\n}","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","module.exports={\n \"_args\": [\n [\n \"axios@0.21.4\",\n \"/home/vsts/work/1/s/src/Amanacard.Frontend\"\n ]\n ],\n \"_from\": \"axios@0.21.4\",\n \"_id\": \"axios@0.21.4\",\n \"_inBundle\": false,\n \"_integrity\": \"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==\",\n \"_location\": \"/axios\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"version\",\n \"registry\": true,\n \"raw\": \"axios@0.21.4\",\n \"name\": \"axios\",\n \"escapedName\": \"axios\",\n \"rawSpec\": \"0.21.4\",\n \"saveSpec\": null,\n \"fetchSpec\": \"0.21.4\"\n },\n \"_requiredBy\": [\n \"/\",\n \"/localtunnel\",\n \"/paged-request\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz\",\n \"_spec\": \"0.21.4\",\n \"_where\": \"/home/vsts/work/1/s/src/Amanacard.Frontend\",\n \"author\": {\n \"name\": \"Matt Zabriskie\"\n },\n \"browser\": {\n \"./lib/adapters/http.js\": \"./lib/adapters/xhr.js\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/axios/axios/issues\"\n },\n \"bundlesize\": [\n {\n \"path\": \"./dist/axios.min.js\",\n \"threshold\": \"5kB\"\n }\n ],\n \"dependencies\": {\n \"follow-redirects\": \"^1.14.0\"\n },\n \"description\": \"Promise based HTTP client for the browser and node.js\",\n \"devDependencies\": {\n \"coveralls\": \"^3.0.0\",\n \"es6-promise\": \"^4.2.4\",\n \"grunt\": \"^1.3.0\",\n \"grunt-banner\": \"^0.6.0\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-contrib-clean\": \"^1.1.0\",\n \"grunt-contrib-watch\": \"^1.0.0\",\n \"grunt-eslint\": \"^23.0.0\",\n \"grunt-karma\": \"^4.0.0\",\n \"grunt-mocha-test\": \"^0.13.3\",\n \"grunt-ts\": \"^6.0.0-beta.19\",\n \"grunt-webpack\": \"^4.0.2\",\n \"istanbul-instrumenter-loader\": \"^1.0.0\",\n \"jasmine-core\": \"^2.4.1\",\n \"karma\": \"^6.3.2\",\n \"karma-chrome-launcher\": \"^3.1.0\",\n \"karma-firefox-launcher\": \"^2.1.0\",\n \"karma-jasmine\": \"^1.1.1\",\n \"karma-jasmine-ajax\": \"^0.1.13\",\n \"karma-safari-launcher\": \"^1.0.0\",\n \"karma-sauce-launcher\": \"^4.3.6\",\n \"karma-sinon\": \"^1.0.5\",\n \"karma-sourcemap-loader\": \"^0.3.8\",\n \"karma-webpack\": \"^4.0.2\",\n \"load-grunt-tasks\": \"^3.5.2\",\n \"minimist\": \"^1.2.0\",\n \"mocha\": \"^8.2.1\",\n \"sinon\": \"^4.5.0\",\n \"terser-webpack-plugin\": \"^4.2.3\",\n \"typescript\": \"^4.0.5\",\n \"url-search-params\": \"^0.10.0\",\n \"webpack\": \"^4.44.2\",\n \"webpack-dev-server\": \"^3.11.0\"\n },\n \"homepage\": \"https://axios-http.com\",\n \"jsdelivr\": \"dist/axios.min.js\",\n \"keywords\": [\n \"xhr\",\n \"http\",\n \"ajax\",\n \"promise\",\n \"node\"\n ],\n \"license\": \"MIT\",\n \"main\": \"index.js\",\n \"name\": \"axios\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/axios/axios.git\"\n },\n \"scripts\": {\n \"build\": \"NODE_ENV=production grunt build\",\n \"coveralls\": \"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\n \"examples\": \"node ./examples/server.js\",\n \"fix\": \"eslint --fix lib/**/*.js\",\n \"postversion\": \"git push && git push --tags\",\n \"preversion\": \"npm test\",\n \"start\": \"node ./sandbox/server.js\",\n \"test\": \"grunt test\",\n \"version\": \"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\"\n },\n \"typings\": \"./index.d.ts\",\n \"unpkg\": \"dist/axios.min.js\",\n \"version\": \"0.21.4\"\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n"]}