@vantagepay/vantagepay 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/apiTokens.ts","../src/eventTypes.ts","../src/apiError.ts","../src/baseApi.ts","../src/authentication/index.ts","../src/lookups/types.ts","../src/lookups/index.ts","../src/payments/types.ts","../src/payments/index.ts","../src/log/types.ts","../src/consumers/index.ts","../src/qr/index.ts","../src/merchants/index.ts","../src/log/messageTemplate.ts","../src/log/index.ts","../src/common/types.ts","../src/consumers/types.ts","../src/devices/types.ts","../src/merchants/types.ts","../src/system/index.ts","../src/content/index.ts","../src/reports/index.ts","../src/index.ts","../src/tokens/types.ts","../src/authentication/types.ts","../src/reports/types.ts"],"sourcesContent":["// Using this from React requires the following to be applied in the application somewhere.\r\n// import { Buffer } from 'buffer'\r\n// global.Buffer = Buffer\r\n\r\nclass ApiTokens {\r\n public accessToken: string | null = null;\r\n public refreshToken: string | null = null;\r\n\r\n public decodeToken(token?: string): any {\r\n if (token) {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n if (isBrowser) {\r\n // Browser compatible version.\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n .join(''),\r\n );\r\n\r\n return JSON.parse(jsonPayload) || {};\r\n } else {\r\n const base64 = Buffer.from(token.split('.')[1], 'base64').toString();\r\n return JSON.parse(base64) || {};\r\n }\r\n }\r\n\r\n return {};\r\n }\r\n}\r\n\r\nexport default new ApiTokens();\r\n","export const OnSessionStarted = Symbol('login.session.started');\r\nexport const OnSessionExpired = Symbol('login.session.expired');\r\nexport const OnAutomaticRefresh = Symbol('login.session.refreshed');\r\nexport const OnApiRetry = Symbol('api.retry');\r\nexport const OnPaymentStatusUpdate = Symbol('payment.status');\r\nexport const OnPaymentComplete = Symbol('payment.complete');\r\nexport const OnRequires3DSecure = Symbol('payment.wait.requires3dSecure');\r\nexport const OnRequiresPin = Symbol('payment.wait.requiresPin');\r\nexport const OnRequiresConfirmation = Symbol('payment.wait.requiresConfirmation');\r\nexport const OnRequiresAddress = Symbol('payment.wait.requiresAddress');\r\nexport const OnComplete3DSecure = Symbol('payment.complete3dSecure');\r\n","export class ApiError extends Error {\r\n public constructor(\r\n public statusCode: number,\r\n public result: any,\r\n message?: string,\r\n ) {\r\n let newMessage = message;\r\n\r\n // Turn the message into a single string if there are multiple validation errors.\r\n if (Array.isArray(result) && result.length > 0) {\r\n newMessage = result.join(' ');\r\n } else if (typeof result === 'string' || result instanceof String) {\r\n newMessage = result.toString();\r\n }\r\n\r\n super(newMessage);\r\n Object.setPrototypeOf(this, ApiError.prototype);\r\n }\r\n}\r\n","import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { ApiError } from './apiError';\r\nimport ApiTokens from './apiTokens';\r\nimport PubSub from 'pubsub-js';\r\n\r\nconst LogSeparator = '-'.repeat(120);\r\n\r\nexport { default as ApiTokens } from './apiTokens';\r\n\r\nexport abstract class BaseApi {\r\n private readonly axiosInstance: AxiosInstance;\r\n\r\n protected readonly consoleLogging: boolean;\r\n protected readonly events = PubSub;\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false) {\r\n this.axiosInstance = axiosInstance;\r\n this.consoleLogging = consoleLogging || false;\r\n }\r\n\r\n protected async request<T>(endpoint: string, method: string, body: any = null, token: string | null = null): Promise<T> {\r\n let response: AxiosResponse<any, any>;\r\n\r\n try {\r\n let config: AxiosRequestConfig<any> = {\r\n method: method,\r\n url: endpoint,\r\n };\r\n\r\n if (token || ApiTokens.accessToken) {\r\n config.headers = { Authorization: 'Bearer ' + (token || ApiTokens.accessToken) };\r\n }\r\n\r\n if (body) {\r\n body = this.convertDatesToIso(body);\r\n config.data = body;\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n' + LogSeparator);\r\n console.debug(`${method}: ${this.axiosInstance.defaults.baseURL}${endpoint}`);\r\n console.debug(LogSeparator);\r\n\r\n if (config.headers) {\r\n console.debug('-- HEADERS --');\r\n console.dir(config.headers);\r\n }\r\n\r\n if (config.data) {\r\n console.debug('-- REQUEST --');\r\n console.dir(config.data, { depth: null });\r\n }\r\n }\r\n\r\n response = await this.axiosInstance(config);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n-- RESPONSE --');\r\n console.dir(response.data, { depth: null });\r\n }\r\n } catch (error) {\r\n if (this.consoleLogging) {\r\n if (error.response) {\r\n console.error(`\\r\\n-- ERROR ${error.response.status} --\\r\\n`, error.response.data);\r\n } else {\r\n console.error(`\\r\\n-- ERROR ${error.errno || error.code} --\\r\\n`, error.code);\r\n }\r\n\r\n console.debug(LogSeparator);\r\n }\r\n\r\n let statusCode = 0;\r\n let result = null;\r\n let message = null;\r\n\r\n if (error.response) {\r\n if (error.response.data) {\r\n result = error.response.data.result || null;\r\n message = error.response.data.message || null;\r\n statusCode = error.response.data.status || error.response.status;\r\n } else {\r\n statusCode = error.response.status;\r\n }\r\n }\r\n\r\n throw new ApiError(statusCode, result, message || error.message);\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug(LogSeparator);\r\n }\r\n\r\n if (response.data) {\r\n if (!response.data.success && typeof response.data !== 'string') {\r\n throw new ApiError(response.data.status || response.status, response.data.result || null, response.data.message || null);\r\n }\r\n\r\n return response.data.result || response.data || null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // *** Generated by AI ***\r\n // AI was too retarded to figure out how to do this in an Axios interceptor.\r\n // Being a superior human being, I moved this into the request method above.\r\n private convertDatesToIso(obj: any): any {\r\n if (obj === null || obj === undefined) {\r\n return obj;\r\n }\r\n\r\n // Handle Date objects.\r\n if (obj instanceof Date) {\r\n if (isNaN(obj.getTime())) {\r\n throw new Error('Invalid date provided');\r\n }\r\n\r\n // Get timezone offset in minutes and convert to hours:minutes format.\r\n const offset = -obj.getTimezoneOffset();\r\n const offsetHours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, '0');\r\n const offsetMinutes = String(Math.abs(offset) % 60).padStart(2, '0');\r\n const offsetSign = offset >= 0 ? '+' : '-';\r\n\r\n // Extract date and time components.\r\n const year = obj.getFullYear();\r\n const month = String(obj.getMonth() + 1).padStart(2, '0');\r\n const day = String(obj.getDate()).padStart(2, '0');\r\n const hours = String(obj.getHours()).padStart(2, '0');\r\n const minutes = String(obj.getMinutes()).padStart(2, '0');\r\n const seconds = String(obj.getSeconds()).padStart(2, '0');\r\n\r\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}${offsetSign}${offsetHours}:${offsetMinutes}`;\r\n }\r\n\r\n // Handle arrays.\r\n if (Array.isArray(obj)) {\r\n return obj.map((item) => this.convertDatesToIso(item));\r\n }\r\n\r\n // Handle plain objects.\r\n if (typeof obj === 'object' && obj.constructor === Object) {\r\n const converted: any = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n converted[key] = this.convertDatesToIso(obj[key]);\r\n }\r\n }\r\n return converted;\r\n }\r\n\r\n return obj;\r\n }\r\n}\r\n","import { BaseApi, ApiTokens } from '../baseApi';\r\nimport { FaceCheckResult } from '../common/types';\r\nimport { OnSessionStarted, OnSessionExpired } from '../eventTypes';\r\nimport { FaceMovementDetectionLevel } from '../lookups/types';\r\nimport { ChangePasswordRequest, ForgotPasswordRequest, LivenessRequest, LoginRequest, OtpVerificationRequest, SelfieRequest, TokenResponse } from './types';\r\n\r\nconst baseAuthEndpoint = '/v1/auth';\r\n\r\nexport class Authentication extends BaseApi {\r\n isLoggedIn(): boolean {\r\n if (ApiTokens.accessToken) {\r\n try {\r\n return new Date().getTime() < ApiTokens.decodeToken(ApiTokens.accessToken).exp * 1000;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n async login(username: string, password: string): Promise<TokenResponse> {\r\n const request: LoginRequest = {\r\n username: username,\r\n password: password,\r\n };\r\n\r\n ApiTokens.accessToken = null;\r\n ApiTokens.refreshToken = null;\r\n\r\n try {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/login`, 'POST', request);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n\r\n return Promise.resolve(tokenResponse);\r\n } catch (loginError) {\r\n // Change the access token if there is a response property for a new token. This may clear the token which is also expected.\r\n if (loginError.result) {\r\n ApiTokens.accessToken =\r\n loginError.result.changePasswordAccessToken || loginError.result.validatePhoneNumberAccessToken || loginError.result.resendEmailVerificationToken;\r\n }\r\n\r\n throw loginError;\r\n }\r\n }\r\n\r\n async logout(): Promise<void> {\r\n const refreshToken = ApiTokens.refreshToken;\r\n\r\n ApiTokens.accessToken = null;\r\n ApiTokens.refreshToken = null;\r\n\r\n if (refreshToken) {\r\n await this.request(`${baseAuthEndpoint}/logout`, 'POST', null, refreshToken);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n async refresh(token?: string): Promise<TokenResponse> {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/refresh`, 'POST', null, token || ApiTokens.refreshToken);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async checkLiveness(base64Images: string[]): Promise<FaceMovementDetectionLevel> {\r\n const request: LivenessRequest = {\r\n base64Images: base64Images,\r\n };\r\n\r\n return this.request<FaceMovementDetectionLevel>(`${baseAuthEndpoint}/liveness`, 'POST', request);\r\n }\r\n\r\n async checkFace(base64Image: string): Promise<FaceCheckResult> {\r\n const request: SelfieRequest = {\r\n base64Image: base64Image,\r\n };\r\n\r\n return this.request<FaceCheckResult>(`${baseAuthEndpoint}/face-check`, 'POST', request);\r\n }\r\n\r\n async changePassword(oldPassword: string, newPassword: string): Promise<TokenResponse> {\r\n const request: ChangePasswordRequest = {\r\n oldPassword: oldPassword,\r\n newPassword: newPassword,\r\n resetCode: null,\r\n userReference: null,\r\n };\r\n\r\n try {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/password/change`, 'POST', request);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n\r\n return Promise.resolve(tokenResponse);\r\n } catch (loginError) {\r\n // Change the access token if there is a response property for a new token. This may clear the token which is also expected.\r\n if (loginError.result) {\r\n ApiTokens.accessToken =\r\n loginError.result.changePasswordAccessToken || loginError.result.validatePhoneNumberAccessToken || loginError.result.resendEmailVerificationToken;\r\n }\r\n\r\n throw loginError;\r\n }\r\n }\r\n\r\n async forgotPassword(username: string): Promise<void> {\r\n const request: ForgotPasswordRequest = {\r\n username: username,\r\n };\r\n\r\n return this.request<void>(`${baseAuthEndpoint}/password/forgot`, 'POST', request);\r\n }\r\n\r\n async validateOtp(otpValue: string): Promise<TokenResponse> {\r\n const request: OtpVerificationRequest = {\r\n otpValue: otpValue,\r\n };\r\n\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/otp/validate`, 'POST', request);\r\n\r\n if (tokenResponse) {\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n }\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async resendOtp(): Promise<void> {\r\n return this.request<void>(`${baseAuthEndpoint}/otp/resend`, 'POST');\r\n }\r\n\r\n async resendEmailAddressVerification(): Promise<void> {\r\n return this.request<void>(`${baseAuthEndpoint}/email/verify/resend`, 'POST', null);\r\n }\r\n\r\n getCurrentConsumerReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).consumer_reference || null;\r\n }\r\n\r\n getCurrentMerchantReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).merchant_reference || null;\r\n }\r\n\r\n getCurrentBusinessReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).business_reference || null;\r\n }\r\n\r\n getCurrentTerminalReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).terminal_reference || null;\r\n }\r\n\r\n getCurrentUserReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).reference || null;\r\n }\r\n\r\n getCurrentUserName(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).user_name || null;\r\n }\r\n\r\n getRedirectAction(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).redirect_action || null;\r\n }\r\n\r\n getMobileNumber(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).mobile_number || null;\r\n }\r\n\r\n getEmailAddress(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).email_address || null;\r\n }\r\n}\r\n","export enum Bank {\r\n None = 'None',\r\n ABD = 'ABD',\r\n ABL = 'ABL',\r\n ACB = 'ACB',\r\n ABS = 'ABS',\r\n ABG = 'ABG',\r\n ADB = 'ADB',\r\n ADS = 'ADS',\r\n ALM = 'ALM',\r\n ANS = 'ANS',\r\n APX = 'APX',\r\n ASL = 'ASL',\r\n BSL = 'BSL',\r\n BOA = 'BOA',\r\n BOG = 'BOG',\r\n BSP = 'BSP',\r\n BPS = 'BPS',\r\n BLM = 'BLM',\r\n BSI = 'BSI',\r\n CAL = 'CAL',\r\n CBG = 'CBG',\r\n CBN = 'CBN',\r\n DFL = 'DFL',\r\n ECO = 'ECO',\r\n EPG = 'EPG',\r\n ETZ = 'ETZ',\r\n EXP = 'EXP',\r\n FPL = 'FPL',\r\n FAB = 'FAB',\r\n FBL = 'FBL',\r\n FDL = 'FDL',\r\n FBO = 'FBO',\r\n FBN = 'FBN',\r\n FCM = 'FCM',\r\n FNB = 'FNB',\r\n GCB = 'GCB',\r\n GPB = 'GPB',\r\n GPG = 'GPG',\r\n GMY = 'GMY',\r\n GTB = 'GTB',\r\n HBN = 'HBN',\r\n HBT = 'HBT',\r\n ITC = 'ITC',\r\n JBN = 'JBN',\r\n JUN = 'JUN',\r\n KOR = 'KOR',\r\n KSB = 'KSB',\r\n MBN = 'MBN',\r\n MLU = 'MLU',\r\n MOL = 'MOL',\r\n NGL = 'NGL',\r\n NIB = 'NIB',\r\n OPI = 'OPI',\r\n NSL = 'NSL',\r\n PSW = 'PSW',\r\n PBL = 'PBL',\r\n PBN = 'PBN',\r\n RBG = 'RBG',\r\n RBL = 'RBL',\r\n SAS = 'SAS',\r\n SBN = 'SBN',\r\n SCB = 'SCB',\r\n SCH = 'SCH',\r\n SIS = 'SIS',\r\n SOG = 'SOG',\r\n STB = 'STB',\r\n TIT = 'TIT',\r\n TRB = 'TRB',\r\n UBA = 'UBA',\r\n UBN = 'UBN',\r\n UMB = 'UMB',\r\n UNB = 'UNB',\r\n UNI = 'UNI',\r\n UNL = 'UNL',\r\n USL = 'USL',\r\n WBN = 'WBN',\r\n ZEN = 'ZEN',\r\n AFB = 'AFB',\r\n NED = 'NED',\r\n STD = 'STD',\r\n CAP = 'CAP',\r\n MER = 'MER',\r\n BID = 'BID',\r\n ALB = 'ALB',\r\n HBZ = 'HBZ',\r\n SAF = 'SAF',\r\n DIS = 'DIS',\r\n RMB = 'RMB',\r\n BZZ = 'BZZ',\r\n INV = 'INV',\r\n TYB = 'TYB',\r\n HOL = 'HOL',\r\n}\r\nexport class BankData {\r\n public isAvailable: boolean;\r\n public bank: Bank;\r\n public bankCode: string;\r\n public routingCode?: string;\r\n public bankName: string;\r\n public country: Country;\r\n}\r\nexport enum Channel {\r\n Unknown = 'Unknown',\r\n Web = 'Web',\r\n USSD = 'USSD',\r\n Callback = 'Callback',\r\n Generated = 'Generated',\r\n Settlement = 'Settlement',\r\n Scheduled = 'Scheduled',\r\n MobileApplication = 'MobileApplication',\r\n SDK = 'SDK',\r\n POS = 'POS',\r\n SuperPOS = 'SuperPOS',\r\n}\r\nexport enum ConsumerFileType {\r\n Unspecified = 'Unspecified',\r\n FaceImage = 'FaceImage',\r\n IdentityDocumentFront = 'IdentityDocumentFront',\r\n IdentityDocumentBack = 'IdentityDocumentBack',\r\n Liveness = 'Liveness',\r\n ProfileImage = 'ProfileImage',\r\n Signature = 'Signature',\r\n ConsumerAgreement = 'ConsumerAgreement',\r\n LoanContract = 'LoanContract',\r\n LoanSettlementQuote = 'LoanSettlementQuote',\r\n LoanPaidUpLetter = 'LoanPaidUpLetter',\r\n LoanStatement = 'LoanStatement',\r\n BankAccountLetter = 'BankAccountLetter',\r\n BankAccountStatement = 'BankAccountStatement',\r\n}\r\nexport enum Country {\r\n None = 'None',\r\n AFG = 'AFG',\r\n ALB = 'ALB',\r\n DZA = 'DZA',\r\n ASM = 'ASM',\r\n AND = 'AND',\r\n AGO = 'AGO',\r\n AIA = 'AIA',\r\n ATA = 'ATA',\r\n ATG = 'ATG',\r\n ARG = 'ARG',\r\n ARM = 'ARM',\r\n ABW = 'ABW',\r\n AUS = 'AUS',\r\n AUT = 'AUT',\r\n AZE = 'AZE',\r\n BHS = 'BHS',\r\n BHR = 'BHR',\r\n BGD = 'BGD',\r\n BRB = 'BRB',\r\n BLR = 'BLR',\r\n BEL = 'BEL',\r\n BLZ = 'BLZ',\r\n BEN = 'BEN',\r\n BMU = 'BMU',\r\n BTN = 'BTN',\r\n BOL = 'BOL',\r\n BES = 'BES',\r\n BIH = 'BIH',\r\n BWA = 'BWA',\r\n BVT = 'BVT',\r\n BRA = 'BRA',\r\n IOT = 'IOT',\r\n VGB = 'VGB',\r\n BRN = 'BRN',\r\n BGR = 'BGR',\r\n BFA = 'BFA',\r\n BDI = 'BDI',\r\n KHM = 'KHM',\r\n CMR = 'CMR',\r\n CAN = 'CAN',\r\n CPV = 'CPV',\r\n CYM = 'CYM',\r\n CAF = 'CAF',\r\n TCD = 'TCD',\r\n CHL = 'CHL',\r\n CHN = 'CHN',\r\n CXR = 'CXR',\r\n CCK = 'CCK',\r\n COL = 'COL',\r\n COM = 'COM',\r\n COG = 'COG',\r\n COK = 'COK',\r\n CRI = 'CRI',\r\n CIV = 'CIV',\r\n HRV = 'HRV',\r\n CUB = 'CUB',\r\n CUW = 'CUW',\r\n CYP = 'CYP',\r\n CZE = 'CZE',\r\n COD = 'COD',\r\n DNK = 'DNK',\r\n DJI = 'DJI',\r\n DMA = 'DMA',\r\n DOM = 'DOM',\r\n ECU = 'ECU',\r\n EGY = 'EGY',\r\n SLV = 'SLV',\r\n GNQ = 'GNQ',\r\n ERI = 'ERI',\r\n EST = 'EST',\r\n ETH = 'ETH',\r\n FLK = 'FLK',\r\n FRO = 'FRO',\r\n FJI = 'FJI',\r\n FIN = 'FIN',\r\n FRA = 'FRA',\r\n FXX = 'FXX',\r\n GUF = 'GUF',\r\n PYF = 'PYF',\r\n ATF = 'ATF',\r\n GAB = 'GAB',\r\n GMB = 'GMB',\r\n GEO = 'GEO',\r\n DEU = 'DEU',\r\n GHA = 'GHA',\r\n GIB = 'GIB',\r\n GRC = 'GRC',\r\n GRL = 'GRL',\r\n GRD = 'GRD',\r\n GLP = 'GLP',\r\n GUM = 'GUM',\r\n GTM = 'GTM',\r\n GIN = 'GIN',\r\n GNB = 'GNB',\r\n GUY = 'GUY',\r\n HTI = 'HTI',\r\n HMD = 'HMD',\r\n VAT = 'VAT',\r\n HND = 'HND',\r\n HKG = 'HKG',\r\n HUN = 'HUN',\r\n ISL = 'ISL',\r\n IND = 'IND',\r\n IDN = 'IDN',\r\n IRN = 'IRN',\r\n IRQ = 'IRQ',\r\n IRL = 'IRL',\r\n IMN = 'IMN',\r\n ISR = 'ISR',\r\n ITA = 'ITA',\r\n JAM = 'JAM',\r\n JPN = 'JPN',\r\n JOR = 'JOR',\r\n KAZ = 'KAZ',\r\n KEN = 'KEN',\r\n KIR = 'KIR',\r\n KOR = 'KOR',\r\n PRK = 'PRK',\r\n KWT = 'KWT',\r\n KGZ = 'KGZ',\r\n LAO = 'LAO',\r\n LVA = 'LVA',\r\n LBN = 'LBN',\r\n LSO = 'LSO',\r\n LBR = 'LBR',\r\n LBY = 'LBY',\r\n LIE = 'LIE',\r\n LTU = 'LTU',\r\n LUX = 'LUX',\r\n MAC = 'MAC',\r\n MKD = 'MKD',\r\n MDG = 'MDG',\r\n MWI = 'MWI',\r\n MYS = 'MYS',\r\n MDV = 'MDV',\r\n MLI = 'MLI',\r\n MLT = 'MLT',\r\n MHL = 'MHL',\r\n MTQ = 'MTQ',\r\n MRT = 'MRT',\r\n MUS = 'MUS',\r\n MYT = 'MYT',\r\n MEX = 'MEX',\r\n FSM = 'FSM',\r\n MDA = 'MDA',\r\n MCO = 'MCO',\r\n MNG = 'MNG',\r\n MSR = 'MSR',\r\n MNE = 'MNE',\r\n MAR = 'MAR',\r\n MOZ = 'MOZ',\r\n MMR = 'MMR',\r\n NAM = 'NAM',\r\n NRU = 'NRU',\r\n NPL = 'NPL',\r\n NLD = 'NLD',\r\n NCL = 'NCL',\r\n NZL = 'NZL',\r\n NIC = 'NIC',\r\n NER = 'NER',\r\n NGA = 'NGA',\r\n NIU = 'NIU',\r\n NFK = 'NFK',\r\n MNP = 'MNP',\r\n NOR = 'NOR',\r\n OMN = 'OMN',\r\n PAK = 'PAK',\r\n PLW = 'PLW',\r\n PSE = 'PSE',\r\n PAN = 'PAN',\r\n PNG = 'PNG',\r\n PRY = 'PRY',\r\n PER = 'PER',\r\n PHL = 'PHL',\r\n PCN = 'PCN',\r\n POL = 'POL',\r\n PRT = 'PRT',\r\n PRI = 'PRI',\r\n QAT = 'QAT',\r\n REU = 'REU',\r\n ROU = 'ROU',\r\n RUS = 'RUS',\r\n RWA = 'RWA',\r\n WSM = 'WSM',\r\n SMR = 'SMR',\r\n STP = 'STP',\r\n SAU = 'SAU',\r\n SEN = 'SEN',\r\n SRB = 'SRB',\r\n SYC = 'SYC',\r\n SLE = 'SLE',\r\n SGP = 'SGP',\r\n SXM = 'SXM',\r\n SVK = 'SVK',\r\n SVN = 'SVN',\r\n SLB = 'SLB',\r\n SOM = 'SOM',\r\n ZAF = 'ZAF',\r\n SGS = 'SGS',\r\n SSD = 'SSD',\r\n ESP = 'ESP',\r\n LKA = 'LKA',\r\n SHN = 'SHN',\r\n KNA = 'KNA',\r\n LCA = 'LCA',\r\n MAF = 'MAF',\r\n SPM = 'SPM',\r\n VCT = 'VCT',\r\n SDN = 'SDN',\r\n SUR = 'SUR',\r\n SJM = 'SJM',\r\n SWZ = 'SWZ',\r\n SWE = 'SWE',\r\n CHE = 'CHE',\r\n SYR = 'SYR',\r\n TWN = 'TWN',\r\n TJK = 'TJK',\r\n TZA = 'TZA',\r\n THA = 'THA',\r\n TLS = 'TLS',\r\n TGO = 'TGO',\r\n TKL = 'TKL',\r\n TON = 'TON',\r\n TTO = 'TTO',\r\n TUN = 'TUN',\r\n TUR = 'TUR',\r\n TKM = 'TKM',\r\n TCA = 'TCA',\r\n TUV = 'TUV',\r\n UGA = 'UGA',\r\n UKR = 'UKR',\r\n ARE = 'ARE',\r\n GBR = 'GBR',\r\n QZZ = 'QZZ',\r\n USA = 'USA',\r\n UMI = 'UMI',\r\n VIR = 'VIR',\r\n URY = 'URY',\r\n UZB = 'UZB',\r\n VUT = 'VUT',\r\n VEN = 'VEN',\r\n VNM = 'VNM',\r\n WLF = 'WLF',\r\n ESH = 'ESH',\r\n YEM = 'YEM',\r\n ZMB = 'ZMB',\r\n ZWE = 'ZWE',\r\n}\r\nexport class CountryData {\r\n public isAvailable: boolean;\r\n public country: Country;\r\n public countryName: string;\r\n public longIsoCode: string;\r\n public shortIsoCode: string;\r\n public numericIsoCode: number;\r\n public dialingCode: string;\r\n}\r\nexport enum Currency {\r\n None = 'None',\r\n AFN = 'AFN',\r\n ALL = 'ALL',\r\n ANG = 'ANG',\r\n ARS = 'ARS',\r\n AUD = 'AUD',\r\n AWG = 'AWG',\r\n AZN = 'AZN',\r\n BAM = 'BAM',\r\n BBD = 'BBD',\r\n BGN = 'BGN',\r\n BMD = 'BMD',\r\n BND = 'BND',\r\n BOB = 'BOB',\r\n BRL = 'BRL',\r\n BSD = 'BSD',\r\n BWP = 'BWP',\r\n BYN = 'BYN',\r\n BZD = 'BZD',\r\n CAD = 'CAD',\r\n CHF = 'CHF',\r\n CLP = 'CLP',\r\n CNY = 'CNY',\r\n COP = 'COP',\r\n CRC = 'CRC',\r\n CUP = 'CUP',\r\n CZK = 'CZK',\r\n DKK = 'DKK',\r\n DOP = 'DOP',\r\n EGP = 'EGP',\r\n EUR = 'EUR',\r\n FJD = 'FJD',\r\n FKP = 'FKP',\r\n GBP = 'GBP',\r\n GHS = 'GHS',\r\n GIP = 'GIP',\r\n GTQ = 'GTQ',\r\n GYD = 'GYD',\r\n HKD = 'HKD',\r\n HNL = 'HNL',\r\n HRK = 'HRK',\r\n HUF = 'HUF',\r\n IDR = 'IDR',\r\n ILS = 'ILS',\r\n INR = 'INR',\r\n IRR = 'IRR',\r\n ISK = 'ISK',\r\n JMD = 'JMD',\r\n JPY = 'JPY',\r\n KGS = 'KGS',\r\n KHR = 'KHR',\r\n KPW = 'KPW',\r\n KRW = 'KRW',\r\n KYD = 'KYD',\r\n KZT = 'KZT',\r\n LAK = 'LAK',\r\n LBP = 'LBP',\r\n LKR = 'LKR',\r\n LRD = 'LRD',\r\n MKD = 'MKD',\r\n MNT = 'MNT',\r\n MUR = 'MUR',\r\n MXN = 'MXN',\r\n MYR = 'MYR',\r\n MZN = 'MZN',\r\n NAD = 'NAD',\r\n NGN = 'NGN',\r\n NIO = 'NIO',\r\n NOK = 'NOK',\r\n NPR = 'NPR',\r\n NZD = 'NZD',\r\n OMR = 'OMR',\r\n PAB = 'PAB',\r\n PEN = 'PEN',\r\n PHP = 'PHP',\r\n PKR = 'PKR',\r\n PLN = 'PLN',\r\n PYG = 'PYG',\r\n QAR = 'QAR',\r\n RON = 'RON',\r\n RSD = 'RSD',\r\n RUB = 'RUB',\r\n SAR = 'SAR',\r\n SBD = 'SBD',\r\n SCR = 'SCR',\r\n SEK = 'SEK',\r\n SGD = 'SGD',\r\n SHP = 'SHP',\r\n SOS = 'SOS',\r\n SRD = 'SRD',\r\n SVC = 'SVC',\r\n SYP = 'SYP',\r\n THB = 'THB',\r\n TRY = 'TRY',\r\n TTD = 'TTD',\r\n TWD = 'TWD',\r\n UAH = 'UAH',\r\n USD = 'USD',\r\n UYU = 'UYU',\r\n UZS = 'UZS',\r\n VES = 'VES',\r\n VND = 'VND',\r\n XCD = 'XCD',\r\n YER = 'YER',\r\n ZAR = 'ZAR',\r\n ZWD = 'ZWD',\r\n}\r\nexport class CurrencyData {\r\n public isAvailable: boolean;\r\n public currency: Currency;\r\n public currencyName: string;\r\n public currencyCode: string;\r\n public symbol: string;\r\n public numericIsoCode: number;\r\n}\r\nexport enum DayOfWeek {\r\n Sunday = 'Sunday',\r\n Monday = 'Monday',\r\n Tuesday = 'Tuesday',\r\n Wednesday = 'Wednesday',\r\n Thursday = 'Thursday',\r\n Friday = 'Friday',\r\n Saturday = 'Saturday',\r\n}\r\nexport enum FaceMovementDetectionLevel {\r\n None = 'None',\r\n OneRangeOfMotion = 'OneRangeOfMotion',\r\n MultipleRangesOfMotion = 'MultipleRangesOfMotion',\r\n AllRangesOfMotion = 'AllRangesOfMotion',\r\n}\r\nexport enum Gender {\r\n Male = 'Male',\r\n Female = 'Female',\r\n}\r\nexport class IdAndDescription {\r\n public id: number;\r\n public description: string;\r\n}\r\nexport enum IdentityDocumentType {\r\n None = 'None',\r\n National = 'National',\r\n Passport = 'Passport',\r\n Drivers = 'Drivers',\r\n Other = 'Other',\r\n GhanaCard = 'GhanaCard',\r\n SocialSecurity = 'SocialSecurity',\r\n Voter = 'Voter',\r\n IdCard = 'IdCard',\r\n}\r\nexport enum KybProvider {\r\n None = 'None',\r\n Manual = 'Manual',\r\n}\r\nexport enum KybStatus {\r\n NotRequired = 'NotRequired',\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n Rejected = 'Rejected',\r\n}\r\n/** The KYC service provider identifier. */\r\nexport enum KycProvider {\r\n None = 'None',\r\n SmileIdentity = 'SmileIdentity',\r\n GMoney = 'GMoney',\r\n NIA = 'NIA',\r\n Manual = 'Manual',\r\n}\r\n/** The KYC verification status. */\r\nexport enum KycStatus {\r\n None = 'None',\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n Rejected = 'Rejected',\r\n Review = 'Review',\r\n}\r\n/** The KYC verification type. */\r\nexport enum KycVerificationType {\r\n Identity = 'Identity',\r\n Liveness = 'Liveness',\r\n Facial = 'Facial',\r\n Other = 'Other',\r\n}\r\nexport enum Language {\r\n None = 'None',\r\n AAR = 'AAR',\r\n AFR = 'AFR',\r\n AGQ = 'AGQ',\r\n AKA = 'AKA',\r\n AMH = 'AMH',\r\n ARA = 'ARA',\r\n ARN = 'ARN',\r\n ASM = 'ASM',\r\n ASA = 'ASA',\r\n AST = 'AST',\r\n AZE = 'AZE',\r\n BAK = 'BAK',\r\n BAS = 'BAS',\r\n BEL = 'BEL',\r\n BEM = 'BEM',\r\n BEZ = 'BEZ',\r\n BUL = 'BUL',\r\n BIN = 'BIN',\r\n BAM = 'BAM',\r\n BEN = 'BEN',\r\n BOD = 'BOD',\r\n BRE = 'BRE',\r\n BRX = 'BRX',\r\n BOS = 'BOS',\r\n BYN = 'BYN',\r\n CAT = 'CAT',\r\n CHE = 'CHE',\r\n CGG = 'CGG',\r\n CHR = 'CHR',\r\n COS = 'COS',\r\n CES = 'CES',\r\n CHU = 'CHU',\r\n CYM = 'CYM',\r\n DAN = 'DAN',\r\n DAV = 'DAV',\r\n DEU = 'DEU',\r\n DJE = 'DJE',\r\n DSB = 'DSB',\r\n DUA = 'DUA',\r\n DIV = 'DIV',\r\n DYO = 'DYO',\r\n DZO = 'DZO',\r\n EBU = 'EBU',\r\n EWE = 'EWE',\r\n ELL = 'ELL',\r\n ENG = 'ENG',\r\n EPO = 'EPO',\r\n SPA = 'SPA',\r\n EST = 'EST',\r\n EUS = 'EUS',\r\n EWO = 'EWO',\r\n FAS = 'FAS',\r\n FUL = 'FUL',\r\n FIN = 'FIN',\r\n FIL = 'FIL',\r\n FAO = 'FAO',\r\n FRA = 'FRA',\r\n FUR = 'FUR',\r\n FRY = 'FRY',\r\n GLE = 'GLE',\r\n GLA = 'GLA',\r\n GLG = 'GLG',\r\n GRN = 'GRN',\r\n GSW = 'GSW',\r\n GUJ = 'GUJ',\r\n GUZ = 'GUZ',\r\n GLV = 'GLV',\r\n HAU = 'HAU',\r\n HAW = 'HAW',\r\n HEB = 'HEB',\r\n HIN = 'HIN',\r\n HRV = 'HRV',\r\n HSB = 'HSB',\r\n HUN = 'HUN',\r\n HYE = 'HYE',\r\n INA = 'INA',\r\n IBB = 'IBB',\r\n IND = 'IND',\r\n IBO = 'IBO',\r\n III = 'III',\r\n ISL = 'ISL',\r\n ITA = 'ITA',\r\n IKU = 'IKU',\r\n JPN = 'JPN',\r\n JGO = 'JGO',\r\n JMC = 'JMC',\r\n JAV = 'JAV',\r\n KAT = 'KAT',\r\n KAB = 'KAB',\r\n KAM = 'KAM',\r\n KDE = 'KDE',\r\n KEA = 'KEA',\r\n KHQ = 'KHQ',\r\n KIK = 'KIK',\r\n KAZ = 'KAZ',\r\n KKJ = 'KKJ',\r\n KAL = 'KAL',\r\n KLN = 'KLN',\r\n KHM = 'KHM',\r\n KAN = 'KAN',\r\n KOR = 'KOR',\r\n KOK = 'KOK',\r\n KAU = 'KAU',\r\n KAS = 'KAS',\r\n KSB = 'KSB',\r\n KSF = 'KSF',\r\n KSH = 'KSH',\r\n KUR = 'KUR',\r\n COR = 'COR',\r\n KIR = 'KIR',\r\n LAT = 'LAT',\r\n LAG = 'LAG',\r\n LTZ = 'LTZ',\r\n LUG = 'LUG',\r\n LKT = 'LKT',\r\n LIN = 'LIN',\r\n LAO = 'LAO',\r\n LRC = 'LRC',\r\n LIT = 'LIT',\r\n LUB = 'LUB',\r\n LUO = 'LUO',\r\n LUY = 'LUY',\r\n LAV = 'LAV',\r\n MAS = 'MAS',\r\n MER = 'MER',\r\n MFE = 'MFE',\r\n MLG = 'MLG',\r\n MGH = 'MGH',\r\n MGO = 'MGO',\r\n MRI = 'MRI',\r\n MKD = 'MKD',\r\n MAL = 'MAL',\r\n MON = 'MON',\r\n MNI = 'MNI',\r\n MOH = 'MOH',\r\n MAR = 'MAR',\r\n MSA = 'MSA',\r\n MLT = 'MLT',\r\n MUA = 'MUA',\r\n MYA = 'MYA',\r\n MZN = 'MZN',\r\n NAQ = 'NAQ',\r\n NDE = 'NDE',\r\n NDS = 'NDS',\r\n NEP = 'NEP',\r\n NLD = 'NLD',\r\n NMG = 'NMG',\r\n NNO = 'NNO',\r\n NNH = 'NNH',\r\n NOB = 'NOB',\r\n NQO = 'NQO',\r\n NBL = 'NBL',\r\n NSO = 'NSO',\r\n NUS = 'NUS',\r\n NYN = 'NYN',\r\n OCI = 'OCI',\r\n ORM = 'ORM',\r\n ORI = 'ORI',\r\n OSS = 'OSS',\r\n PAN = 'PAN',\r\n PAP = 'PAP',\r\n POL = 'POL',\r\n PRG = 'PRG',\r\n PRS = 'PRS',\r\n PUS = 'PUS',\r\n POR = 'POR',\r\n QUC = 'QUC',\r\n QUB = 'QUB',\r\n ROH = 'ROH',\r\n RUN = 'RUN',\r\n RON = 'RON',\r\n ROF = 'ROF',\r\n RUS = 'RUS',\r\n KIN = 'KIN',\r\n RWK = 'RWK',\r\n SAN = 'SAN',\r\n SAH = 'SAH',\r\n SAQ = 'SAQ',\r\n SBP = 'SBP',\r\n SND = 'SND',\r\n SME = 'SME',\r\n SEH = 'SEH',\r\n SES = 'SES',\r\n SAG = 'SAG',\r\n SHI = 'SHI',\r\n SIN = 'SIN',\r\n SLK = 'SLK',\r\n SLV = 'SLV',\r\n SMA = 'SMA',\r\n SMJ = 'SMJ',\r\n SMN = 'SMN',\r\n SMS = 'SMS',\r\n SNA = 'SNA',\r\n SOM = 'SOM',\r\n SQI = 'SQI',\r\n SRP = 'SRP',\r\n SSW = 'SSW',\r\n SSY = 'SSY',\r\n SOT = 'SOT',\r\n SWE = 'SWE',\r\n SWA = 'SWA',\r\n SYR = 'SYR',\r\n TAM = 'TAM',\r\n TEL = 'TEL',\r\n TEO = 'TEO',\r\n TGK = 'TGK',\r\n THA = 'THA',\r\n TIR = 'TIR',\r\n TIG = 'TIG',\r\n TUK = 'TUK',\r\n TSN = 'TSN',\r\n TON = 'TON',\r\n TUR = 'TUR',\r\n TSO = 'TSO',\r\n TAT = 'TAT',\r\n TWQ = 'TWQ',\r\n TZM = 'TZM',\r\n UIG = 'UIG',\r\n UKR = 'UKR',\r\n URD = 'URD',\r\n UZB = 'UZB',\r\n VAI = 'VAI',\r\n VEN = 'VEN',\r\n VIE = 'VIE',\r\n VOL = 'VOL',\r\n VUN = 'VUN',\r\n WAE = 'WAE',\r\n WAL = 'WAL',\r\n WOL = 'WOL',\r\n XHO = 'XHO',\r\n XOG = 'XOG',\r\n YAV = 'YAV',\r\n YID = 'YID',\r\n YOR = 'YOR',\r\n ZGH = 'ZGH',\r\n ZHO = 'ZHO',\r\n ZUL = 'ZUL',\r\n}\r\nexport class LanguageData {\r\n public isAvailable: boolean;\r\n public languageCode: string;\r\n public languageName: string;\r\n}\r\nexport enum MerchantCategory {\r\n None = 0,\r\n CommerceBankODP = 11,\r\n PostageTransactionCharge = 701,\r\n VeterinaryServices = 742,\r\n AgriculturalCooperatives = 763,\r\n LandscapingAndHorticulturalServices = 780,\r\n GeneralContractorsResidentialAndCommercial = 1520,\r\n HeatingPlumbingAndAirConditioningContractors = 1711,\r\n ElectricalContractors = 1731,\r\n MasonryStoneworkTileSettingPlasteringAndInsulationContractors = 1740,\r\n CarpentryContractors = 1750,\r\n RoofingSidingAndSheetMetalWorkContractors = 1761,\r\n AsphaltCementAndConcreteWorkContractors = 1771,\r\n SpecialTradeContractors = 1799,\r\n MiscellaneousPublishingAndPrinting = 2741,\r\n TypesettingPlateMakingAndRelatedServices = 2791,\r\n SpecialtyCleaningPolishingAndSanitationPreparations = 2842,\r\n UnitedAirlines = 3000,\r\n AmericanAirlines = 3001,\r\n PanAmerican = 3002,\r\n EuroflyAirlines = 3003,\r\n Dragonair = 3004,\r\n BritishAirways = 3005,\r\n JapanAirlines = 3006,\r\n AirFrance = 3007,\r\n Lufthansa = 3008,\r\n AirCanada = 3009,\r\n KLMRoyalDutchAirlines = 3010,\r\n Aeroflot = 3011,\r\n Qantas = 3012,\r\n Alitalia = 3013,\r\n SaudiArabianAirlines = 3014,\r\n SwissInternationalAirlines = 3015,\r\n SAS = 3016,\r\n SouthAfricanAirways = 3017,\r\n VarigAirBrazil = 3018,\r\n Germanwings = 3019,\r\n AirIndia = 3020,\r\n AirAlgerie = 3021,\r\n PALAir = 3022,\r\n Mexicana = 3023,\r\n PakistanInternational = 3024,\r\n AirNewZealand = 3025,\r\n EmiratesAirlines = 3026,\r\n UTAInterair = 3027,\r\n AirMalta = 3028,\r\n SNBrusselsAirlines = 3029,\r\n AerolineasArgentinas = 3030,\r\n OlympicAirways = 3031,\r\n ElAl = 3032,\r\n AnsettAirlines = 3033,\r\n EtihadAirways = 3034,\r\n TAPPortugal = 3035,\r\n VASPBrazil = 3036,\r\n Egyptair = 3037,\r\n KuwaitAirways = 3038,\r\n Avianca = 3039,\r\n GulfAirBahrain = 3040,\r\n BalkanBulgarianAirlines = 3041,\r\n Finnair = 3042,\r\n AerLingus = 3043,\r\n AirLanka = 3044,\r\n NigeriaAirways = 3045,\r\n CruzeiroDoSulBrazil = 3046,\r\n THYTurkey = 3047,\r\n Airmaro = 3048,\r\n TunisAir = 3049,\r\n Icelandair = 3050,\r\n AustrianAirlines = 3051,\r\n LANAirlinesLanair = 3052,\r\n AviacoSpain = 3053,\r\n LadecoChile = 3054,\r\n LABBolivia = 3055,\r\n JetAirways = 3056,\r\n EastWestAirlinesAustralia = 3057,\r\n Delta = 3058,\r\n DLAAirlinesRepublic = 3059,\r\n Northwest = 3060,\r\n Continental = 3061,\r\n WesternAirlinesHapagLloydExpress = 3062,\r\n USAir = 3063,\r\n AdriaAirways = 3064,\r\n Airinter = 3065,\r\n Southwest = 3066,\r\n VanguardAirlines = 3067,\r\n AirAstana = 3068,\r\n AirEurope = 3069,\r\n FlyDubai = 3070,\r\n AirBritishColumbia = 3071,\r\n CebuPac = 3072,\r\n AirCal = 3073,\r\n SingaporeAirlines = 3075,\r\n Aeromexico = 3076,\r\n ThaiAirways = 3077,\r\n ChinaAirlines = 3078,\r\n JetstarAirlines = 3079,\r\n SwoopInc = 3080,\r\n XiamenAirlines = 3081,\r\n KoreanAirlines = 3082,\r\n AirAfriqueAirAfriq = 3083,\r\n EVAAirways = 3084,\r\n MidwestExpress = 3085,\r\n CarnivalAirlines = 3086,\r\n MetroAirlines = 3087,\r\n CroatiaAirlines = 3088,\r\n Transaero = 3089,\r\n UniAirways = 3090,\r\n MidwayAirlines = 3092,\r\n ZambiaAirways = 3094,\r\n Wardair = 3095,\r\n AirZimbabwe = 3096,\r\n Spanair = 3097,\r\n AsiannaAirlines = 3098,\r\n CathayPacific = 3099,\r\n MalaysianAirlineSystem = 3100,\r\n UTA = 3101,\r\n Iberia = 3102,\r\n GarudaIndonesia = 3103,\r\n Piedmont = 3105,\r\n BraathensSAFENorway = 3106,\r\n WorldAirways = 3108,\r\n WingsAirways = 3110,\r\n BritishMidland = 3111,\r\n WindwardIsland = 3112,\r\n TowerAir = 3115,\r\n VenezolanaInternationalDeAviacion = 3117,\r\n ValleyAirlines = 3118,\r\n TAN = 3125,\r\n Talair = 3126,\r\n TACAInternational = 3127,\r\n SurinamAirways = 3129,\r\n SunWorldInternational = 3130,\r\n VLMAirlines = 3131,\r\n FrontierAirlines = 3132,\r\n SunbeltAirlines = 3133,\r\n SudanAirways = 3135,\r\n QatarAirways = 3136,\r\n SingletonAir = 3137,\r\n SimmonsAirlines = 3138,\r\n SeairAlaska = 3141,\r\n ScenicAirlines = 3143,\r\n VirginAtlantic = 3144,\r\n SanJuanAirlines = 3145,\r\n Luxair = 3146,\r\n AirLittoralSA = 3148,\r\n AirZaire = 3151,\r\n Princeville = 3154,\r\n GoFlyLtd = 3156,\r\n ProvincetownBostonAirways = 3159,\r\n AllNipponAirways = 3161,\r\n Nortonair = 3164,\r\n NewYorkHelicopter = 3165,\r\n AeroContinente = 3167,\r\n MountCook = 3170,\r\n CanadianAirlinesInternational = 3171,\r\n Nationair = 3172,\r\n JetblueAirlines = 3174,\r\n MiddleEastAir = 3175,\r\n MetroflightAirlines = 3176,\r\n AirtranAirways = 3177,\r\n MesaAir = 3178,\r\n Westjetair = 3180,\r\n Malev = 3181,\r\n LOTPoland = 3182,\r\n Omanair = 3183,\r\n LIAT = 3184,\r\n LAVVenezuela = 3185,\r\n LineasAereasParaguayas = 3186,\r\n LACSACostaRica = 3187,\r\n VirginExpress = 3188,\r\n JugoslavAir = 3190,\r\n IslandAirlines = 3191,\r\n IranAir = 3192,\r\n IndianAirlines = 3193,\r\n HolidayAirlines = 3195,\r\n HawaiianAir = 3196,\r\n HavasuAirlines = 3197,\r\n HarborAirlines = 3198,\r\n ServiciosAereosMilitares = 3199,\r\n GuyanaAirways = 3200,\r\n GoldenPacificAir = 3203,\r\n FreedomAir = 3204,\r\n ChinaEasternAirlines = 3206,\r\n EmpresaEcuatorinana = 3207,\r\n NorwegianAirShuttle = 3211,\r\n Dominicana = 3212,\r\n BraathensRegionalAirlines = 3213,\r\n DanAirServices = 3215,\r\n CumberlandAirlines = 3216,\r\n CSA = 3217,\r\n CrownAir = 3218,\r\n Copa = 3219,\r\n CompaniaFaucett = 3220,\r\n TransportesAerosMilitaresEcuatorianos = 3221,\r\n CommandAirways = 3222,\r\n Comair = 3223,\r\n SkywaysAir = 3226,\r\n CaymanAirways = 3228,\r\n SAETASociedadEcuatorianosDeTransportesAereos = 3229,\r\n SAHSAServicioAeroDeHonduras = 3231,\r\n CapitolAir = 3233,\r\n CaribbeanAirlines = 3234,\r\n BrockwayAir = 3235,\r\n AirArabia = 3236,\r\n BemidjiAviation = 3238,\r\n BarHarborAirlines = 3239,\r\n Bahamasair = 3240,\r\n AviatecaGuatemala = 3241,\r\n CaribbeanAirlinesCaribbean = 3242,\r\n AustrianAirService = 3243,\r\n EasyjetAir = 3245,\r\n Ryanair = 3246,\r\n GOLAir = 3247,\r\n TAMAir = 3248,\r\n AlohaAirlines = 3251,\r\n ALM = 3252,\r\n AmericaWest = 3253,\r\n USAirShuttle = 3254,\r\n AlaskaAirlines = 3256,\r\n AmericanTransAir = 3259,\r\n SpiritAirlines = 3260,\r\n AirChina = 3261,\r\n RenoAirInc = 3262,\r\n AeroServicioCaraboboASERCA = 3263,\r\n AirSeychelles = 3266,\r\n AirPanama = 3267,\r\n AirPacific = 3268,\r\n RicaHotels = 3273,\r\n InterNorHotels = 3274,\r\n AirNevada = 3275,\r\n AirMidwest = 3276,\r\n AirMadagascar = 3277,\r\n AirLA = 3279,\r\n AirJamaica = 3280,\r\n AirDjibouti = 3281,\r\n AirDjiboutiDuplicate = 3282,\r\n AeroVirginIslands = 3284,\r\n Aeroperu = 3285,\r\n AerolineasNicaraguensis = 3286,\r\n AeroCoachAviation = 3287,\r\n ArianaAfghan = 3291,\r\n CyprusAirways = 3292,\r\n Ecuatoriana = 3293,\r\n EthiopianAirlines = 3294,\r\n KenyaAirways = 3295,\r\n AirBerlin = 3296,\r\n Tarom = 3297,\r\n AirMauritius = 3298,\r\n WideroeFlyveselskap = 3299,\r\n AzulBrazilianAirlines = 3300,\r\n WizzAirlines = 3301,\r\n FlybeLtd = 3302,\r\n Tigerair = 3303,\r\n ChinaSouthern = 3308,\r\n AffiliatedAutoRental = 3351,\r\n AmericanInternational = 3352,\r\n BrooksRentACar = 3353,\r\n ActionAutoRental = 3354,\r\n SixtCarRental = 3355,\r\n HertzRentACar = 3357,\r\n PaylessCarRental = 3359,\r\n SnappyCarRental = 3360,\r\n AirwaysRentACar = 3361,\r\n AltraAutoRental = 3362,\r\n AgencyRentACar = 3364,\r\n BudgetRentACar = 3366,\r\n HolidayRentACar = 3368,\r\n RentAWreck = 3370,\r\n AccentRentACar = 3374,\r\n AjaxRentACar = 3376,\r\n TriangleRentACar = 3380,\r\n EuropCar = 3381,\r\n TropicalRentACar = 3385,\r\n ShowcaseRentalCars = 3386,\r\n AlamoRentACar = 3387,\r\n MerchantsRentACar = 3388,\r\n AvisRentACar = 3389,\r\n DollarRentACar = 3390,\r\n EuropeByCar = 3391,\r\n NationalCarRental = 3393,\r\n KemwellGroupRentACar = 3394,\r\n ThriftyRentACar = 3395,\r\n TildenRentACar = 3396,\r\n EconoCarRentACar = 3398,\r\n AmerexRentACar = 3399,\r\n AutoHostCarRentals = 3400,\r\n EnterpriseRentACar = 3405,\r\n GeneralRentACar = 3409,\r\n AtlantaRentACar = 3411,\r\n A1RentACar = 3412,\r\n GodfreyNatlRentACar = 3414,\r\n AlphaRentACar = 3419,\r\n AnsaIntlRentACar = 3420,\r\n AllstateRentACar = 3421,\r\n AvcarRentACar = 3423,\r\n AutomateRentACar = 3425,\r\n AvonRentACar = 3427,\r\n CareyRentACar = 3428,\r\n InsuranceRentACar = 3429,\r\n MajorRentACar = 3430,\r\n ReplacementRentACar = 3431,\r\n ReserveRentACar = 3432,\r\n UglyDucklingRentACar = 3433,\r\n USARentACar = 3434,\r\n ValueRentACar = 3435,\r\n AutohansaRentACar = 3436,\r\n CiteRentACar = 3437,\r\n InterentRentACar = 3438,\r\n MillevilleRentACar = 3439,\r\n ViaRouteRentACar = 3440,\r\n AdvantageRentACar = 3441,\r\n HolidayInns = 3501,\r\n BestWesternHotels = 3502,\r\n SheratonHotels = 3503,\r\n HiltonHotels = 3504,\r\n ForteHotels = 3505,\r\n GoldenTulipHotels = 3506,\r\n FriendshipInns = 3507,\r\n QualityInnsQualitySuites = 3508,\r\n MarriottHotels = 3509,\r\n DaysInnsDaystop = 3510,\r\n ArabellaHotels = 3511,\r\n InterContinentalHotels = 3512,\r\n WestinHotels = 3513,\r\n AmeriSuites = 3514,\r\n RodewayInns = 3515,\r\n LaQuintaMotorInns = 3516,\r\n AmericanaHotels = 3517,\r\n SolHotels = 3518,\r\n PullmanInternationalHotels = 3519,\r\n MeridienHotels = 3520,\r\n RoyalLahainaResorts = 3521,\r\n TokyoHotel = 3522,\r\n PeninsulaHotel = 3523,\r\n WelcomgroupHotels = 3524,\r\n DunfeyHotels = 3525,\r\n PrinceHotels = 3526,\r\n DowntownerPassportHotel = 3527,\r\n RedLionHotelsRedLionInns = 3528,\r\n CPHotels = 3529,\r\n RenaissanceHotels = 3530,\r\n KauaiCoconutBeachResort = 3531,\r\n RoyalKonaResort = 3532,\r\n HotelIbis = 3533,\r\n SouthernPacificHotels = 3534,\r\n HiltonInternational = 3535,\r\n AmfacHotels = 3536,\r\n ANAHotel = 3537,\r\n ConcordeHotels = 3538,\r\n SummerfieldSuitesHotel = 3539,\r\n IberotelHotels = 3540,\r\n HotelOkura = 3541,\r\n RoyalHotels = 3542,\r\n FourSeasonsHotels = 3543,\r\n CigaHotels = 3544,\r\n ShangriLaInternational = 3545,\r\n SierraSuitesHotels = 3546,\r\n BreakersResort = 3547,\r\n HotelsMelia = 3548,\r\n AubergeDesGouverneurs = 3549,\r\n Regal8Inns = 3550,\r\n MirageHotelAndCasino = 3551,\r\n CoastHotels = 3552,\r\n ParkInnsInternational = 3553,\r\n PinehurstResort = 3554,\r\n TreasureIslandHotelAndCasino = 3555,\r\n BartonCreekResort = 3556,\r\n ManhattanEastSuiteHotels = 3557,\r\n JollyHotels = 3558,\r\n CandlewoodSuitesThistleHotels = 3559,\r\n AladdinResortAndCasino = 3560,\r\n GoldenNugget = 3561,\r\n ComfortInns = 3562,\r\n JourneysEndMotels = 3563,\r\n SamsTownHotelAndCasino = 3564,\r\n RelaxInns = 3565,\r\n GardenPlaceHotel = 3566,\r\n SohoGrandHotel = 3567,\r\n LadbrokeHotels = 3568,\r\n TribecaGrandHotel = 3569,\r\n ForumHotels = 3570,\r\n GrandWaileaResort = 3571,\r\n MiyakoHotels = 3572,\r\n SandmanHotels = 3573,\r\n VentureInns = 3574,\r\n VagabondHotels = 3575,\r\n LaQuintaResort = 3576,\r\n MandarinOrientalHotel = 3577,\r\n FrankenmuthBavarian = 3578,\r\n HotelMercure = 3579,\r\n HotelDelCoronado = 3580,\r\n DeltaHotel = 3581,\r\n CaliforniaHotelAndCasino = 3582,\r\n SasHotels = 3583,\r\n PrincessHotelsInternational = 3584,\r\n HungarHotels = 3585,\r\n SokosHotels = 3586,\r\n DoralHotels = 3587,\r\n HelmsleyHotels = 3588,\r\n DoralGolfResort = 3589,\r\n FairmontHotels = 3590,\r\n SonestaHotels = 3591,\r\n OmniHotels = 3592,\r\n CunardHotels = 3593,\r\n ArizonaBiltmore = 3594,\r\n HospitalityInns = 3595,\r\n WynnLasVegas = 3596,\r\n RiversideResortAndCasino = 3597,\r\n RegentInternationalHotels = 3598,\r\n PannoniaHotels = 3599,\r\n SaddlebrookResort = 3600,\r\n TradeWindsResort = 3601,\r\n HudsonHotel = 3602,\r\n NoahsHotels = 3603,\r\n HiltonGardenResortInn = 3604,\r\n JurysDoyleHotelGroup = 3605,\r\n JeffersonHotel = 3606,\r\n FontainebleauResorts = 3607,\r\n GaylordOpryland = 3608,\r\n GaylordPalms = 3609,\r\n GaylordTexan = 3610,\r\n CMonInn = 3611,\r\n MovenpickHotels = 3612,\r\n MicrotelInnAndSuites = 3613,\r\n AmericInn = 3614,\r\n Travelodge = 3615,\r\n HermitageHotel = 3616,\r\n AmericasBestValueInn = 3617,\r\n GreatWolf = 3618,\r\n Aloft = 3619,\r\n BinionsHorseshoeClub = 3620,\r\n ExtendedStay = 3621,\r\n MerlinHotels = 3622,\r\n DorintHotels = 3623,\r\n LadyLuckHotelAndCasino = 3624,\r\n HotelUniversale = 3625,\r\n StudioPlus = 3626,\r\n ExtendedStayAmerica = 3627,\r\n ExcaliburHotelAndCasino = 3628,\r\n DanHotels = 3629,\r\n ExtendedStayDeluxe = 3630,\r\n SleepInns = 3631,\r\n Phoenician = 3632,\r\n RankHotels = 3633,\r\n Swissotel = 3634,\r\n ResoHotels = 3635,\r\n SarovaHotels = 3636,\r\n RamadaInnsRamadaLimited = 3637,\r\n HowardJohnson = 3638,\r\n MountCharlotteThistle = 3639,\r\n HyattHotels = 3640,\r\n SofitelHotels = 3641,\r\n NovotelHotels = 3642,\r\n SteigenbergerHotels = 3643,\r\n EconoLodges = 3644,\r\n QueensMoatHouses = 3645,\r\n SwallowHotels = 3646,\r\n HusaHotels = 3647,\r\n DeVereHotels = 3648,\r\n RadissonHotels = 3649,\r\n RedRoofInns = 3650,\r\n ImperialLondonHotel = 3651,\r\n EmbassyHotels = 3652,\r\n PentaHotels = 3653,\r\n LoewsHotels = 3654,\r\n ScandicHotels = 3655,\r\n SaraHotels = 3656,\r\n OberoiHotels = 3657,\r\n NewOtaniHotels = 3658,\r\n TajHotelsInternational = 3659,\r\n KnightsInns = 3660,\r\n MetropoleHotels = 3661,\r\n CircusCircusHotelAndCasino = 3662,\r\n HotelesElPresidente = 3663,\r\n FlagInn = 3664,\r\n HamptonInns = 3665,\r\n StakisHotels = 3666,\r\n LuxorHotelAndCasino = 3667,\r\n MaritimHotels = 3668,\r\n EldoradoHotelAndCasino = 3669,\r\n ArcadeHotels = 3670,\r\n ArctiaHotels = 3671,\r\n CampanileHotels = 3672,\r\n IbuszHotels = 3673,\r\n RantasipiHotels = 3674,\r\n InterhotelCedok = 3675,\r\n MonteCarloHotelAndCasino = 3676,\r\n ClimatDeFranceHotels = 3677,\r\n CumulusHotels = 3678,\r\n SilverLegacyHotelAndCasino = 3679,\r\n HoteisOthan = 3680,\r\n AdamsMarkHotels = 3681,\r\n SaharaHotelAndCasino = 3682,\r\n BradburySuites = 3683,\r\n BudgetHostInns = 3684,\r\n BudgetelHotels = 3685,\r\n SusseChalet = 3686,\r\n ClarionHotels = 3687,\r\n CompriHotels = 3688,\r\n ConsortHotels = 3689,\r\n CourtyardByMarriott = 3690,\r\n DillonInns = 3691,\r\n DoubletreeHotels = 3692,\r\n DruryInns = 3693,\r\n EconomyInnsOfAmerica = 3694,\r\n EmbassySuites = 3695,\r\n ExelInns = 3696,\r\n FairfieldHotels = 3697,\r\n HarleyHotels = 3698,\r\n MidwayMotorLodge = 3699,\r\n Motel6 = 3700,\r\n LaMansionDelRio = 3701,\r\n RegistryHotels = 3702,\r\n ResidenceInns = 3703,\r\n RoyceHotels = 3704,\r\n SandmanInns = 3705,\r\n ShiloInns = 3706,\r\n ShoneysInns = 3707,\r\n VirginRiverHotelAndCasino = 3708,\r\n Super8Motels = 3709,\r\n TheRitzCarltonHotels = 3710,\r\n FlagInnsAustralia = 3711,\r\n BuffaloBillsHotelAndCasino = 3712,\r\n QualityPacificHotel = 3713,\r\n FourSeasonsHotelAustralia = 3714,\r\n FairfieldInn = 3715,\r\n CarltonHotels = 3716,\r\n CityLodgeHotels = 3717,\r\n KarosHotels = 3718,\r\n ProteaHotels = 3719,\r\n SouthernSunHotels = 3720,\r\n HiltonConrad = 3721,\r\n WyndhamHotelResorts = 3722,\r\n RicaHotelsDuplicate = 3723,\r\n InterNorHotelsDuplicate = 3724,\r\n SeapinesPlantation = 3725,\r\n RioSuites = 3726,\r\n BroadmoorHotel = 3727,\r\n BallysHotelAndCasino = 3728,\r\n JohnAscuagasNugget = 3729,\r\n MGMGrandHotel = 3730,\r\n HarrahsHotelsAndCasinos = 3731,\r\n OprylandHotel = 3732,\r\n BocaRatonResort = 3733,\r\n HarveyBristolHotel = 3734,\r\n MastersEconomyInns = 3735,\r\n ColoradoBelleEdgewaterResort = 3736,\r\n RivieraHotelCasino = 3737,\r\n TropicanaResortCasino = 3738,\r\n WoodsideHotels = 3739,\r\n MarriottTownplaceSuites = 3740,\r\n MillenniumHotels = 3741,\r\n ClubMed = 3742,\r\n BiltmoreHotelSuites = 3743,\r\n CarefreeResorts = 3744,\r\n StRegisHotel = 3745,\r\n TheEliotHotel = 3746,\r\n ClubCorpClubResorts = 3747,\r\n WellesleyInns = 3748,\r\n TheBeverlyHillsHotel = 3749,\r\n CrownePlazaHotel = 3750,\r\n HomewoodSuites = 3751,\r\n PeabodyHotels = 3752,\r\n GreenbrierResorts = 3753,\r\n AmeliaIslandPlantation = 3754,\r\n TheHomestead = 3755,\r\n SouthSeasResorts = 3756,\r\n CanyonRanch = 3757,\r\n KahalaMandarinOrientalHotel = 3758,\r\n OrchidAtMaunaLani = 3759,\r\n HalekulaniHotelWaikikiParc = 3760,\r\n PrimadonnaHotelAndCasino = 3761,\r\n WhiskeyPetesHotelAndCasino = 3762,\r\n ChateauElanWineryAndResort = 3763,\r\n BeauRivageHotelAndCasino = 3764,\r\n Bellagio = 3765,\r\n FremontHotelAndCasino = 3766,\r\n MainStreetStationHotelAndCasino = 3767,\r\n SilverStarHotelAndCasino = 3768,\r\n StratosphereHotelAndCasino = 3769,\r\n SpringhillSuites = 3770,\r\n CaesarsHotelAndCasino = 3771,\r\n NemacolinWoodlands = 3772,\r\n VenetianResortHotelAndCasino = 3773,\r\n NewYorkNewYorkHotelCasino = 3774,\r\n SandsResort = 3775,\r\n NeveleGrandeResortAndCountryClub = 3776,\r\n MandalayBayResort = 3777,\r\n FourPointsHotels = 3778,\r\n WHotels = 3779,\r\n DisneyResorts = 3780,\r\n PatriciaGrandResortHotel = 3781,\r\n RosenHotelsResorts = 3782,\r\n TownAndCountryResort = 3783,\r\n FirstHospitalityHotels = 3784,\r\n OutriggerHotelsAndResorts = 3785,\r\n OhanaHotelsOfHawaii = 3786,\r\n CaribeRoyaleResortSuitesVillas = 3787,\r\n AlaMoanaHotel = 3788,\r\n SmugglersNotchResort = 3789,\r\n RafflesHotel = 3790,\r\n StaybridgeSuites = 3791,\r\n ClaridgeCasinoHotel = 3792,\r\n FlamingoHotels = 3793,\r\n GrandCasinoHotel = 3794,\r\n ParisLasVegasHotel = 3795,\r\n PeppermillHotelCasino = 3796,\r\n AtlanticCityHilton = 3797,\r\n EmbassyVacationResort = 3798,\r\n HaleKoaResort = 3799,\r\n HomesteadSuites = 3800,\r\n WildernessHotelAndResort = 3801,\r\n ThePalaceHotel = 3802,\r\n TheWigwamGolfResortAndSpa = 3803,\r\n TheDiplomatCountryClubAndSpa = 3804,\r\n TheAtlantic = 3805,\r\n PrincevilleResort = 3806,\r\n Element = 3807,\r\n LXRLuxuryResorts = 3808,\r\n SettleInn = 3809,\r\n LaCostaResort = 3810,\r\n PremierTravelInn = 3811,\r\n HyattPlace = 3812,\r\n HotelIndigo = 3813,\r\n TheRooseveltHotelNY = 3814,\r\n HolidayInnNickelodeon = 3815,\r\n Home2Suites = 3816,\r\n Affinia = 3817,\r\n MainStaySuites = 3818,\r\n OxfordSuites = 3819,\r\n JumeirahEssexHotel = 3820,\r\n CaribeRoyale = 3821,\r\n Crossland = 3822,\r\n GrandSierraResort = 3823,\r\n Aria = 3824,\r\n Vdara = 3825,\r\n Autograph = 3826,\r\n GaltHouse = 3827,\r\n CosmopolitanOfLasVegas = 3828,\r\n CountryInnByCarlson = 3829,\r\n ParkPlazaHotel = 3830,\r\n Waldorf = 3831,\r\n CanopyHotels = 3833,\r\n BaymontInnAndSuites = 3834,\r\n DolceHotelsAndResorts = 3835,\r\n HawthornSuitesByWyndham = 3836,\r\n HoshinoResorts = 3837,\r\n KimptonHotels = 3838,\r\n KyoritsuHotels = 3839,\r\n FreightRailways = 4011,\r\n LocalPassengerTransportation = 4111,\r\n PassengerRailways = 4112,\r\n AmbulanceServices = 4119,\r\n TaxicabsAndLimousines = 4121,\r\n BusLines = 4131,\r\n MotorFreightCarriersAndTrucking = 4214,\r\n CourierServices = 4215,\r\n PublicWarehousingAndStorage = 4225,\r\n SteamshipAndCruiseLines = 4411,\r\n BoatRentalsAndLeasing = 4457,\r\n MarinasMarineServiceAndSupplies = 4468,\r\n AirlinesAndAirCarriers = 4511,\r\n AirportsFlyingFieldsAndAirportTerminals = 4582,\r\n TravelAgenciesAndTourOperators = 4722,\r\n PackageTourOperatorsGermanyOnly = 4723,\r\n TransportationTravelRelatedArrangement = 4761,\r\n TollAndBridgeFees = 4784,\r\n TransportationServices = 4789,\r\n TelecommunicationEquipmentAndTelephoneSales = 4812,\r\n KeyEntryTelecomMerchants = 4813,\r\n TelecommunicationServices = 4814,\r\n MonthlySummaryTelephoneCharges = 4815,\r\n ComputerNetworkAndInformationServices = 4816,\r\n TelegraphServices = 4821,\r\n MoneyOrdersWireTransfer = 4829,\r\n CableServices = 4899,\r\n ElectricGasSanitaryAndWaterUtilities = 4900,\r\n MotorVehicleSuppliesAndNewParts = 5013,\r\n OfficeAndCommercialFurniture = 5021,\r\n ConstructionMaterials = 5039,\r\n OfficePhotographicPhotocopyAndMicrofilmEquipment = 5044,\r\n ComputersComputerPeripheralEquipmentSoftware = 5045,\r\n CommercialEquipment = 5046,\r\n MedicalDentalOphthalmicHospitalEquipmentAndSupplies = 5047,\r\n MetalServiceCentersAndOffices = 5051,\r\n ElectricalPartsAndEquipment = 5065,\r\n HardwareEquipmentAndSupplies = 5072,\r\n PlumbingAndHeatingEquipmentAndSupplies = 5074,\r\n IndustrialSupplies = 5085,\r\n PreciousStonesAndMetalsWatchesAndJewelry = 5094,\r\n DurableGoods = 5099,\r\n StationeryOfficeSuppliesPrintingAndWritingPaper = 5111,\r\n DrugsDrugProprietorsAndDruggistSundries = 5122,\r\n PieceGoodsNotionsAndOtherDryGoods = 5131,\r\n MensWomensAndChildrensUniformsAndCommercialClothing = 5137,\r\n CommercialFootwear = 5139,\r\n ChemicalsAndAlliedProducts = 5169,\r\n PetroleumAndPetroleumProducts = 5172,\r\n BooksPeriodicalsAndNewspapers = 5192,\r\n FloristsSuppliesNurseryStockAndFlowers = 5193,\r\n PaintsVarnishesAndSupplies = 5198,\r\n NonDurableGoods = 5199,\r\n HomeSupplyWarehouseStores = 5200,\r\n LumberAndBuildingMaterialsStores = 5211,\r\n GlassStoresPaintAndWallpaperStoresWallpaperStores = 5231,\r\n HardwareStores = 5251,\r\n NurseriesLawnAndGardenSupplyStore = 5261,\r\n OnlineMarketplaces = 5262,\r\n MobileHomeDealers = 5271,\r\n WarehouseClubGas = 5299,\r\n WholesaleClubs = 5300,\r\n DutyFreeStores = 5309,\r\n DiscountStores = 5310,\r\n DepartmentStores = 5311,\r\n VarietyStores = 5331,\r\n GeneralMerchandise = 5399,\r\n GroceryStoresSupermarkets = 5411,\r\n FreezerAndLockerMeatProvisioners = 5422,\r\n CandyStoresConfectioneryStoresNutStores = 5441,\r\n DairyProductsStores = 5451,\r\n Bakeries = 5462,\r\n FoodStoresConvenienceStoresAndSpecialtyMarkets = 5499,\r\n CarAndTruckDealersNewAndUsedSalesServiceRepairsPartsAndLeasing = 5511,\r\n AutomobileAndTruckDealersUsedOnly = 5521,\r\n AutomobileSupplyStoresOrHomeSupplyStores = 5531,\r\n AutomotiveTireStores = 5532,\r\n AutomotivePartsAccessoriesStores = 5533,\r\n GasServiceStationsWithOrWithoutAncillaryServices = 5541,\r\n AutomatedFuelDispensers = 5542,\r\n BoatDealers = 5551,\r\n ElectricVehicleCharging = 5552,\r\n RecreationalAndUtilityTrailersCampDealers = 5561,\r\n MotorcycleDealers = 5571,\r\n MotorHomeDealers = 5592,\r\n SnowmobileDealers = 5598,\r\n MiscellaneousAutomotiveAircraftAndFarmEquipmentDealers = 5599,\r\n MensAndBoysClothingAndAccessoriesStores = 5611,\r\n WomensReadyToWearStores = 5621,\r\n WomensAccessoryAndSpecialtyShops = 5631,\r\n ChildrensAndInfantsWearStores = 5641,\r\n FamilyClothingStores = 5651,\r\n SportsApparelRidingApparelStores = 5655,\r\n ShoeStores = 5661,\r\n FurriersAndFurShops = 5681,\r\n MensAndWomensClothingStores = 5691,\r\n TailorsSeamstressMendingAndAlterations = 5697,\r\n WigAndToupeeStores = 5698,\r\n MiscellaneousApparelAndAccessoryShops = 5699,\r\n FurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances = 5712,\r\n FloorCoveringStores = 5713,\r\n DraperyWindowCoveringAndUpholsteryStores = 5714,\r\n AlcoholicBeverageWholesalers = 5715,\r\n FireplaceAndFireplaceScreensAndAccessoriesStores = 5718,\r\n MiscellaneousHomeFurnishingSpecialtyStores = 5719,\r\n HouseholdApplianceStores = 5722,\r\n ElectronicStores = 5732,\r\n MusicStoresMusicalInstrumentsPianoSheetMusic = 5733,\r\n ComputerSoftwareStores = 5734,\r\n RecordStores = 5735,\r\n Caterers = 5811,\r\n EatingPlacesAndRestaurants = 5812,\r\n DrinkingPlacesAlcoholicBeveragesBarsTavernsCocktailLoungesNightclubsAndDiscotheques = 5813,\r\n FastFoodRestaurants = 5814,\r\n DigitalGoodsBooksMoviesMusic = 5815,\r\n DigitalGoodsGames = 5816,\r\n DigitalGoodsApplicationsExcludingGames = 5817,\r\n DigitalGoodsLargeAndMultiCategory = 5818,\r\n DrugStoresAndPharmacies = 5912,\r\n PackageStoresBeerWineAndLiquor = 5921,\r\n UsedMerchandiseAndSecondhandStores = 5931,\r\n AntiqueShopsSalesRepairsAndRestorationServices = 5932,\r\n PawnShops = 5933,\r\n WreckingAndSalvageYards = 5935,\r\n AntiqueReproductionStores = 5937,\r\n BicycleShopsSalesAndService = 5940,\r\n SportingGoodsStores = 5941,\r\n BookStores = 5942,\r\n StationeryOfficeAndSchoolSupplyStores = 5943,\r\n WatchClockJewelryAndSilverwareStores = 5944,\r\n HobbyToyAndGameShops = 5945,\r\n CameraAndPhotographicSupplyStores = 5946,\r\n CardShopsGiftNoveltyAndSouvenirShops = 5947,\r\n LeatherFoodsStores = 5948,\r\n SewingNeedleFabricAndPriceGoodsStores = 5949,\r\n GlasswareCrystalStores = 5950,\r\n DirectMarketingInsuranceService = 5960,\r\n MailOrderHousesIncludingCatalogOrderStoresBookRecordClub = 5961,\r\n DirectMarketingTravelRelatedArrangementsServices = 5962,\r\n DoorToDoorSales = 5963,\r\n DirectMarketingCatalogMerchant = 5964,\r\n DirectMarketingCatalogAndCatalogAndRetailMerchantDirectMarketingOutboundTelemarketingMerchant = 5965,\r\n DirectMarketingOutboundTelemarketingMerchant = 5966,\r\n DirectMarketingInboundTeleServicesMerchant = 5967,\r\n DirectMarketingContinuitySubscriptionMerchant = 5968,\r\n DirectMarketing = 5969,\r\n ArtistsSupplyAndCraftShops = 5970,\r\n ArtDealersAndGalleries = 5971,\r\n StampAndCoinStoresPhilatelicAndNumismaticSupplies = 5972,\r\n ReligiousGoodsStores = 5973,\r\n RubberStampStoresReservedForNationalUse = 5974,\r\n HearingAidsSalesServiceAndSupplyStores = 5975,\r\n OrthopedicGoodsProstheticDevices = 5976,\r\n CosmeticStores = 5977,\r\n TypewriterStoresSalesRentalService = 5978,\r\n FuelFuelOilWoodCoalLiquefiedPetroleum = 5983,\r\n Florists = 5992,\r\n CigarStoresAndStands = 5993,\r\n NewsDealersAndNewsStands = 5994,\r\n PetShopsPetFoodsAndSuppliesStores = 5995,\r\n SwimmingPoolsSalesServiceAndSupplies = 5996,\r\n ElectricRazorStoresSalesAndService = 5997,\r\n TentAndAwningShops = 5998,\r\n MiscellaneousAndSpecialtyRetailStores = 5999,\r\n FinancialInstitutionsManualCashDisbursements = 6010,\r\n FinancialInstitutionsAutomatedCashDisbursements = 6011,\r\n FinancialInstitutionsMerchandiseAndServices = 6012,\r\n QuasiCashMemberFinancialInstitutions = 6050,\r\n NonFinancialInstitutionsForeignCurrencyMoneyOrdersAndTravelersCheques = 6051,\r\n SecurityBrokersDealers = 6211,\r\n InsuranceSalesUnderwriting = 6300,\r\n InsurancePremiums = 6381,\r\n Insurance = 6399,\r\n RealEstateAgentsAndManagersRentals = 6513,\r\n RemoteStoredValueLoadMemberFinancialInstitution = 6529,\r\n RemoteStoredValueLoad = 6530,\r\n PaymentServiceProviderMoneyTransfer = 6531,\r\n PaymentTransactionMemberFinancialInstitution = 6532,\r\n PaymentTransactionMerchant = 6533,\r\n MoneyTransferMemberFinancialInstitution = 6534,\r\n ValuePurchaseMemberFinancialInstitution = 6535,\r\n MoneySendIntracountry = 6536,\r\n MoneySendIntercountry = 6537,\r\n MoneySendFundingTransaction = 6538,\r\n POIFundingTransaction = 6540,\r\n MastercardInitiatedRebateRewards = 6555,\r\n Overpayments = 6611,\r\n SavingsBonds = 6760,\r\n LodgingHotelsMotelsResortsCentralReservationServices = 7011,\r\n Timeshares = 7012,\r\n SportingAndRecreationalCamps = 7032,\r\n TrailerParksAndCampGrounds = 7033,\r\n LaundryCleaningAndGarmentServices = 7210,\r\n DiaperServicesOrLaundromats = 7211,\r\n DryCleaners = 7216,\r\n CarpetAndUpholsteryCleaning = 7217,\r\n PhotographicStudios = 7221,\r\n BarberAndBeautyShops = 7230,\r\n ShopRepairShopsAndShoeShineParlorsAndHatCleaningShops = 7251,\r\n FuneralServiceAndCrematories = 7261,\r\n EscortServices = 7272,\r\n DatingAndEscortServices = 7273,\r\n TaxPreparationService = 7276,\r\n CounselingServiceDebtMarriagePersonal = 7277,\r\n BuyingShoppingServicesAndClubs = 7278,\r\n HospitalPatientPersonalFundsWithdrawal = 7280,\r\n BabysittingServices = 7295,\r\n ClothingRentalCostumesFormalWearUniforms = 7296,\r\n MassageParlors = 7297,\r\n HealthAndBeautyShops = 7298,\r\n MiscellaneousPersonalServices = 7299,\r\n AdvertisingServices = 7311,\r\n ConsumerCreditReportingAgencies = 7321,\r\n DebtCollectionAgencies = 7322,\r\n BlueprintingAndPhotocopyingServices = 7332,\r\n CommercialPhotographyArtAndGraphics = 7333,\r\n QuickCopyReproductionAndBlueprintingServices = 7338,\r\n StenographicAndSecretarialSupportServices = 7339,\r\n WindowCleaningServices = 7341,\r\n ExterminatingAndDisinfectingServices = 7342,\r\n CleaningAndMaintenanceJanitorialServices = 7349,\r\n EmploymentAgenciesTemporaryHelpServices = 7361,\r\n ComputerProgrammingIntegratedSystemsDesignAndDataProcessingServices = 7372,\r\n InformationRetrievalServices = 7375,\r\n ComputerMaintenanceAndRepairServices = 7379,\r\n ManagementConsultingAndPublicRelationsServices = 7392,\r\n ProtectiveAndSecurityServicesIncludingArmoredCarsAndGuardDogs = 7393,\r\n EquipmentRentalAndLeasingServicesToolRentalFurnitureRentalAndApplianceRental = 7394,\r\n PhotofinishingLaboratoriesPhotoDeveloping = 7395,\r\n BusinessServices = 7399,\r\n TruckStopTransactions = 7511,\r\n CarRentalCompanies = 7512,\r\n TruckAndUtilityTrailerRentals = 7513,\r\n MotorHomeAndRecreationalVehicleRentals = 7519,\r\n AutomobileParkingLotsAndGarages = 7523,\r\n ExpressPaymentServicesParkingGarage = 7524,\r\n AutomotiveBodyRepairShops = 7531,\r\n TireRetreadingAndRepairShops = 7534,\r\n PaintShopsAutomotive = 7535,\r\n AutomotiveServiceShops = 7538,\r\n CarWashes = 7542,\r\n TowingServices = 7549,\r\n ElectronicsRepairShops = 7622,\r\n AirConditioningAndRefrigerationRepairShops = 7623,\r\n ElectricalAndSmallApplianceRepairShops = 7629,\r\n WatchClockAndJewelryRepair = 7631,\r\n FurnitureFurnitureRepairAndFurnitureRefinishing = 7641,\r\n WeldingServices = 7692,\r\n RepairShopsAndRelatedServicesMiscellaneous = 7699,\r\n GovernmentOwnedLotteriesUSA = 7800,\r\n InternetGamblingUSA = 7801,\r\n GovernmentLicensedHorseAndDogRacingUSA = 7802,\r\n MotionPicturesAndVideoTapeProductionAndDistribution = 7829,\r\n MotionPictureTheaters = 7832,\r\n ExpressPaymentServicesMotionPicture = 7833,\r\n VideoTapeRentalStores = 7841,\r\n DanceHallsStudiosAndSchools = 7911,\r\n TheatricalProducersExceptMotionPicturesTicketAgencies = 7922,\r\n BandsOrchestrasAndMiscellaneousEntertainers = 7929,\r\n BilliardAndPoolEstablishments = 7932,\r\n BowlingAlleys = 7933,\r\n CommercialSportsAthleticFieldsProfessionalSportClubsAndSportPromoters = 7941,\r\n TouristAttractionsAndExhibits = 7991,\r\n GolfCoursesPublic = 7992,\r\n VideoAmusementGameSupplies = 7993,\r\n VideoGameArcadesEstablishments = 7994,\r\n BettingIncludingLotteryTicketsCasinoGamingChipsOfftrackBettingAndWagers = 7995,\r\n AmusementParksCarnivalsCircusesFortuneTellers = 7996,\r\n MembershipClubsSportsRecreationAthleticCountryClubsAndPrivateGolfCourses = 7997,\r\n AquariumsSeaAquariumsDolphinariumsZoos = 7998,\r\n RecreationServices = 7999,\r\n DoctorsAndPhysicians = 8011,\r\n DentistsOrOrthodontists = 8021,\r\n Osteopaths = 8031,\r\n Chiropractors = 8041,\r\n OptometristsAndOphthalmologists = 8042,\r\n OpticiansOpticiansGoodsAndEyeglasses = 8043,\r\n EyeglassesStoresOrOpticalGoods = 8044,\r\n PodiatristsAndChiropodists = 8049,\r\n NursingAndPersonalCareFacilities = 8050,\r\n Hospitals = 8062,\r\n MedicalAndDentalLaboratories = 8071,\r\n MedicalServicesAndHealthPractitioners = 8099,\r\n LegalServicesAndAttorneys = 8111,\r\n ElementaryAndSecondarySchools = 8211,\r\n CollegesJuniorCollegesUniversitiesAndProfessionalSchools = 8220,\r\n CorrespondenceSchools = 8241,\r\n BusinessAndSecretarialSchools = 8244,\r\n VocationalSchoolsAndTradeSchools = 8249,\r\n SchoolsAndEducationalServices = 8299,\r\n ChildCareServices = 8351,\r\n CharitableAndSocialServiceOrganizations = 8398,\r\n CivicFraternalAndSocialAssociations = 8641,\r\n PoliticalOrganizations = 8651,\r\n ReligiousOrganizations = 8661,\r\n AutomobileAssociations = 8675,\r\n MembershipOrganizations = 8699,\r\n TestingLaboratoriesNonMedical = 8734,\r\n ArchitecturalEngineeringAndSurveyingServices = 8911,\r\n AccountingAuditingAndBookkeepingServices = 8931,\r\n ProfessionalServicesNotElsewhereDefined = 8999,\r\n CourtCostsIncludingAlimonyAndChildSupport = 9211,\r\n Fines = 9222,\r\n BailAndBondPayments = 9223,\r\n TaxPayments = 9311,\r\n GovernmentServices = 9399,\r\n IPurchasingPilot = 9401,\r\n PostalServicesGovernmentOnly = 9402,\r\n IntraGovernmentTransactions = 9405,\r\n GovernmentLoanPayments = 9411,\r\n AutomatedReferralService = 9700,\r\n VisaCredentialServices = 9701,\r\n GCASEmergencyServices = 9702,\r\n UKSupermarketsElectronicHotFile = 9751,\r\n UKPetrolStationsElectronicHotFile = 9752,\r\n GamblingHorseDogRacingStLottery = 9754,\r\n IntraCompanyPurchases = 9950,\r\n ClientDefinedMCC = 9999,\r\n}\r\nexport enum MerchantFileType {\r\n Unspecified = 'Unspecified',\r\n AgentAgreement = 'AgentAgreement',\r\n MerchantAgreement = 'MerchantAgreement',\r\n BusinessCertificate = 'BusinessCertificate',\r\n ProofOfAddress = 'ProofOfAddress',\r\n ProofOfBankAccount = 'ProofOfBankAccount',\r\n IdentityDocumentFront = 'IdentityDocumentFront',\r\n IdentityDocumentBack = 'IdentityDocumentBack',\r\n Signature = 'Signature',\r\n LogoImage = 'LogoImage',\r\n StorefrontImage = 'StorefrontImage',\r\n PrimaryImage = 'PrimaryImage',\r\n GhanaCardId = 'GhanaCardId',\r\n RegisteredConstitutionOfTheCompany = 'RegisteredConstitutionOfTheCompany',\r\n CertificateOfIncorporation = 'CertificateOfIncorporation',\r\n CertifiedTrueCopyOfForm3A = 'CertifiedTrueCopyOfForm3A',\r\n MonthlyStatement = 'MonthlyStatement',\r\n}\r\nexport enum MobileWalletOperator {\r\n None = 'None',\r\n MTN = 'MTN',\r\n VDF = 'VDF',\r\n ATL = 'ATL',\r\n TGO = 'TGO',\r\n ATG = 'ATG',\r\n GMY = 'GMY',\r\n ZPY = 'ZPY',\r\n GHP = 'GHP',\r\n TCG = 'TCG',\r\n VDC = 'VDC',\r\n CLC = 'CLC',\r\n TKM = 'TKM',\r\n}\r\nexport class MobileWalletOperatorData {\r\n public isAvailable: boolean;\r\n public operatorCode: string;\r\n public operatorName: string;\r\n}\r\nexport enum Month {\r\n JAN = 1,\r\n FEB = 2,\r\n MAR = 3,\r\n APR = 4,\r\n MAY = 5,\r\n JUN = 6,\r\n JUL = 7,\r\n AUG = 8,\r\n SEP = 9,\r\n OCT = 10,\r\n NOV = 11,\r\n DEC = 12,\r\n}\r\nexport enum ProductType {\r\n Airtime = 'Airtime',\r\n Internet = 'Internet',\r\n Television = 'Television',\r\n Utilities = 'Utilities',\r\n Churches = 'Churches',\r\n Education = 'Education',\r\n Medical = 'Medical',\r\n Transport = 'Transport',\r\n Finance = 'Finance',\r\n Insurance = 'Insurance',\r\n Loans = 'Loans',\r\n Pensions = 'Pensions',\r\n General = 'General',\r\n Other = 'Other',\r\n DataBundle = 'DataBundle',\r\n VoiceBundle = 'VoiceBundle',\r\n Charity = 'Charity',\r\n Rent = 'Rent',\r\n MobileMoneyTransfer = 'MobileMoneyTransfer',\r\n PostPaidBills = 'PostPaidBills',\r\n SmsBundle = 'SmsBundle',\r\n Fuel = 'Fuel',\r\n Oil = 'Oil',\r\n Gas = 'Gas',\r\n}\r\nexport enum QrCodeType {\r\n NONE = 'NONE',\r\n V2QR = 'V2QR',\r\n GHQR = 'GHQR',\r\n NIBSSQR = 'NIBSSQR',\r\n}\r\nexport enum RepeatInterval {\r\n Weekly = 'Weekly',\r\n Monthly = 'Monthly',\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport { Country, CurrencyData, CountryData, LanguageData, MobileWalletOperatorData, BankData, IdAndDescription } from './types';\r\nimport { Address } from '../common/types';\r\nimport { ApiError } from '../apiError';\r\n\r\nconst baseEndpoint = '/v1/lookup';\r\n\r\nexport class Lookups extends BaseApi {\r\n private readonly cardIssuerCountryCache = new Map<string, CountryData>();\r\n private readonly addressLocationCache = new Map<string, Address>();\r\n private readonly digitalAddressCache = new Map<string, Address>();\r\n private readonly bankCache = new Map<Country, BankData[]>();\r\n private currencyCache: CurrencyData[];\r\n private countryCache: CountryData[];\r\n private languageCache: LanguageData[];\r\n private allCurrencyCache: CurrencyData[];\r\n private allCountryCache: CountryData[];\r\n private allLanguageCache: LanguageData[];\r\n private mobileWalletOperatorCache: MobileWalletOperatorData[];\r\n private productTypeCache: IdAndDescription[];\r\n private merchantCategoryCache: IdAndDescription[];\r\n\r\n async getProductTypes(): Promise<IdAndDescription[]> {\r\n if (!this.productTypeCache) {\r\n this.productTypeCache = await this.request<IdAndDescription[]>(`${baseEndpoint}/product-type`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.productTypeCache || []);\r\n }\r\n\r\n async getMerchantCategories(): Promise<IdAndDescription[]> {\r\n if (!this.merchantCategoryCache) {\r\n this.merchantCategoryCache = await this.request<IdAndDescription[]>(`${baseEndpoint}/merchant-category`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.merchantCategoryCache || []);\r\n }\r\n\r\n async getCurrencies(): Promise<CurrencyData[]> {\r\n if (!this.currencyCache) {\r\n this.currencyCache = await this.request<CurrencyData[]>(`${baseEndpoint}/currency`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.currencyCache || []);\r\n }\r\n\r\n async getCountries(): Promise<CountryData[]> {\r\n if (!this.countryCache) {\r\n this.countryCache = await this.request<CountryData[]>(`${baseEndpoint}/country`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.countryCache || []);\r\n }\r\n\r\n async getLanguages(): Promise<LanguageData[]> {\r\n if (!this.languageCache) {\r\n this.languageCache = await this.request<LanguageData[]>(`${baseEndpoint}/language`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.languageCache || []);\r\n }\r\n\r\n async getAllCurrencies(): Promise<CurrencyData[]> {\r\n if (!this.allCurrencyCache) {\r\n this.allCurrencyCache = await this.request<CurrencyData[]>(`${baseEndpoint}/currency/all`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.allCurrencyCache || []);\r\n }\r\n\r\n async getAllCountries(): Promise<CountryData[]> {\r\n if (!this.allCountryCache) {\r\n this.allCountryCache = await this.request<CountryData[]>(`${baseEndpoint}/country/all`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.allCountryCache || []);\r\n }\r\n\r\n async getAllLanguages(): Promise<LanguageData[]> {\r\n if (!this.allLanguageCache) {\r\n this.allLanguageCache = await this.request<LanguageData[]>(`${baseEndpoint}/language/all`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.allLanguageCache || []);\r\n }\r\n\r\n async getMobileWalletOperators(): Promise<MobileWalletOperatorData[]> {\r\n if (!this.mobileWalletOperatorCache) {\r\n this.mobileWalletOperatorCache = await this.request<MobileWalletOperatorData[]>(`${baseEndpoint}/mobile-wallet-operator`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.mobileWalletOperatorCache || []);\r\n }\r\n\r\n async getBanks(country?: Country): Promise<BankData[]> {\r\n if (!this.bankCache.has(country || Country.None)) {\r\n if (country == null || country === Country.None) {\r\n this.bankCache.set(Country.None, await this.request<BankData[]>(`${baseEndpoint}/bank`, 'GET'));\r\n } else {\r\n this.bankCache.set(country, await this.request<BankData[]>(`${baseEndpoint}/bank?country=${country}`, 'GET'));\r\n }\r\n }\r\n\r\n return Promise.resolve(this.bankCache.get(country || Country.None) || []);\r\n }\r\n\r\n async getCardIssuerCountry(cardBin: string): Promise<CountryData> {\r\n if (!this.cardIssuerCountryCache.has(cardBin)) {\r\n this.cardIssuerCountryCache.set(cardBin, await this.request<CountryData>(`${baseEndpoint}/card-issuer-country?cardBin=${cardBin}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.cardIssuerCountryCache.get(cardBin) || null);\r\n }\r\n\r\n async getAddressFromLocation(latitude: number, longitude: number): Promise<Address> {\r\n if (latitude >= -90 && latitude <= 90 && longitude >= -180 && longitude <= 180) {\r\n const cacheKey = `${latitude}|${longitude}`;\r\n\r\n if (!this.addressLocationCache.has(cacheKey)) {\r\n this.addressLocationCache.set(cacheKey, await this.request<Address>(`${baseEndpoint}/address?latitude=${latitude}&longitude=${longitude}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.addressLocationCache.get(cacheKey) || null);\r\n }\r\n\r\n return Promise.reject(new ApiError(400, null, 'Invalid location coordinates.'));\r\n }\r\n\r\n async getAddressFromDigitalAddress(digitalAddress: string): Promise<Address> {\r\n if (/(\\w{2,3}-\\d{3,4}-\\d{4})|(\\w{2,3}\\d{7,8})/g.exec(digitalAddress)) {\r\n if (!this.digitalAddressCache.has(digitalAddress)) {\r\n this.digitalAddressCache.set(digitalAddress, await this.request<Address>(`${baseEndpoint}/address/${digitalAddress}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.digitalAddressCache.get(digitalAddress) || null);\r\n }\r\n\r\n return Promise.reject(new ApiError(400, null, 'Invalid digital address format.'));\r\n }\r\n}\r\n","import { Currency } from '../lookups/types';\r\nimport { Country } from '../lookups/types';\r\nimport { Address } from '../common/types';\r\nimport { BasicConsumer } from '../consumers/types';\r\nimport { Location } from '../common/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { Channel } from '../lookups/types';\r\nimport { RepeatInterval } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { BasicMerchant } from '../merchants/types';\r\n\r\nexport abstract class AccountHolderTransactionResult {\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class AmountTotals {\r\n public totalAmountRequestedInCents: number;\r\n public totalAmountAttemptedInCents: number;\r\n public totalAmountProcessedInCents: number;\r\n public totalAmountProcessedLessFeesAndCommissionsInCents: number;\r\n public totalInternalFeesInCents: number;\r\n public totalExternalFeesInCents: number;\r\n public totalFeesInCents: number;\r\n public totalElevyInCents: number;\r\n public totalUserFeesInCents: number;\r\n public totalCommissionsInCents: number;\r\n public totalRefundsInCents: number;\r\n public totalCashbackAmountAttemptedInCents: number;\r\n public totalCashbackAmountProcessedInCents: number;\r\n public totalTipAmountAttemptedInCents: number;\r\n public totalTipAmountProcessedInCents: number;\r\n public grandTotalProcessedInCents: number;\r\n public grandTotalToBePaidByUserInCents: number;\r\n}\r\n/** Model to hold card holder details. */\r\nexport class CardHolder {\r\n /** The card holder's first name (required). */\r\n public firstName: string;\r\n /** The card holder's last name/surname (required). */\r\n public lastName: string;\r\n /** Gets or sets the card holder's email address (required). */\r\n public emailAddress: string;\r\n /** Gets or sets the card holder's phone number (required - digits only). */\r\n public phoneNumber: string;\r\n /** Gets or sets 3 character ISO country code the card holder resides in. */\r\n public countryIsoCode: Country;\r\n /** The customers shipping address. */\r\n public shippingAddress?: Address;\r\n}\r\nexport enum CardIssuer {\r\n AmericanExpress = 'AmericanExpress',\r\n DinersClub = 'DinersClub',\r\n Discover = 'Discover',\r\n JCB = 'JCB',\r\n Maestro = 'Maestro',\r\n MasterCard = 'MasterCard',\r\n Switch = 'Switch',\r\n Visa = 'Visa',\r\n Unknown = 'Unknown',\r\n}\r\n/** A model to hold the details of a request to verify a card. */\r\nexport class CardVerificationPaymentRequest {\r\n /** An external reference supplied by the caller. */\r\n public yourReference?: string;\r\n /** Information about the consumer who owns the card. */\r\n public consumer?: BasicConsumer;\r\n /** A card token. */\r\n public token: string;\r\n /** The CVV for the card. */\r\n public cvv?: string;\r\n /** The card holders billing address. */\r\n public billingAddress?: Address;\r\n /** Additional information about the owner of the card to facilitate the card payment. */\r\n public cardHolder?: CardHolder;\r\n /** The location from which the payment request was submitted. */\r\n public location?: Location;\r\n /** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n public paymentStatusWebhook?: Webhook;\r\n}\r\n/** Contains the details of the bank account you would like to pay money into. */\r\nexport class BankAccountDestination {\r\n /**\r\n * A token that can be used instead of a bank account number.\r\n * If a token is present a bank account does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The bank account number of the recipient. */\r\n public accountNumber: string;\r\n /** The bank code of the bank that the account belongs to. */\r\n public bank: Bank;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** A model to hold the details of the result of an attempt to pay money into a bank account. */\r\nexport class BankAccountDestinationResult {\r\n /** The bank account number of the recipient. */\r\n public accountNumber: string;\r\n /** The bank that the recipient banks with as a 3 digit bank code. */\r\n public bank: Bank;\r\n public bankName: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold the details of a bill payment. */\r\nexport class BillDestination {\r\n /** A globally unique product reference (UUID) that uniquely identifies a product that the system knows how to pay. */\r\n public productReference: string;\r\n /** A dictionary of information related to the product referenced by <see cref=\"P:ZGA.Core.Models.Payments.BillDestination.ProductReference\" />. */\r\n public productFields: { [key: string]: string };\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** A model to hold the result of an attempt to pay a bill. */\r\nexport class BillDestinationResult {\r\n /** The name of the product that the system attempted to pay. */\r\n public productName?: string;\r\n /** A globally unique product reference (UUID) that uniquely identifies a product that the system knows how to pay. */\r\n public productReference?: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold details of a card into which a payment should be made. */\r\nexport class CardDestination {\r\n /**\r\n * A token that can be used instead of a card number.\r\n * If a token is present a card does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CardDestinationResult {\r\n public cardIssuer: string;\r\n public cardIssuerCountryIsoCode?: Country;\r\n public cardNumber: string;\r\n public threeDSecureUrl?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class CashDestination {\r\n public doNotProcess: boolean;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CashDestinationResult {\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class GenericDestination {\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** Model to hold the details of a merchant who should be paid. */\r\nexport class MerchantDestination {\r\n /** A unique merchant identifier. */\r\n public merchantReference?: string;\r\n public merchantSource?: string;\r\n public terminalReference?: string;\r\n public qrCodeReference?: string;\r\n public paymentType: MerchantPaymentType;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class MerchantDestinationResult {\r\n public merchantReference: string;\r\n public terminalReference?: string;\r\n public qrCodeReference?: string;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Contains the details of the mobile money account you would like to make a payment into. */\r\nexport class MobileWalletDestination {\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class MobileWalletDestinationResult {\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public mobileWalletOperatorName: string;\r\n public msisdn: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class PaymentDestinationResults {\r\n public merchants: MerchantDestinationResult[];\r\n public mobileWallets: MobileWalletDestinationResult[];\r\n public bankAccounts: BankAccountDestinationResult[];\r\n public qrCodes: QrCodeDestinationResult[];\r\n public cards: CardDestinationResult[];\r\n public wallets: WalletDestinationResult[];\r\n public bills: BillDestinationResult[];\r\n public cash?: CashDestinationResult;\r\n}\r\n/** Model to hold lists of Merchants who must be paid. */\r\nexport class PaymentDestinations {\r\n public generic?: GenericDestination;\r\n /** A list of merchants who must be paid. */\r\n public merchants?: MerchantDestination[];\r\n /** A list of mobile money/wallet accounts to be paid. */\r\n public mobileWallets?: MobileWalletDestination[];\r\n /** A list of bank accounts to be paid. */\r\n public bankAccounts?: BankAccountDestination[];\r\n /** A list of QR Codes containing payment destination details and any additional information related to each QR Code. */\r\n public qrCodes?: QrCodeDestination[];\r\n /** A list of credit cards to be paid. */\r\n public cards?: CardDestination[];\r\n /** A list of generic digital wallets to be paid. */\r\n public wallets?: WalletDestination[];\r\n /** A list of bills/products to pay. */\r\n public bills?: BillDestination[];\r\n /** Details of a payment that will be made as cash. */\r\n public cash?: CashDestination;\r\n}\r\n/** Model to hold details of a payment being made with a QR Code providing the destination details. */\r\nexport class QrCodeDestination {\r\n /** The QR Code data as a string. */\r\n public qrCode: string;\r\n /** An optional list of values that the client prompted the user for because the QR Code instructed it to. The values that could be provided are defined in the relevant QR Code specifications. */\r\n public additionalInfo?: { [key: string]: string };\r\n public tipAmountInCents: number;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class QrCodeDestinationResult {\r\n /** The QR Code data as a string. */\r\n public qrCode: string;\r\n public merchantReference: string;\r\n public billReference?: string;\r\n public tipAmountInCents: number;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold the details of a generic digital wallet. */\r\nexport class WalletDestination {\r\n /** A unique wallet identifier. */\r\n public walletReference: string;\r\n /** The wallet provider that created and manages the wallet. */\r\n public walletProvider: string;\r\n /** The wallet provider that created and manages the wallet. */\r\n public walletSource: string;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class WalletDestinationResult {\r\n public walletReference: string;\r\n public walletProvider: string;\r\n public walletSource: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport enum FeeType {\r\n None = 0,\r\n /**\r\n * A real-time commission that is deducted from the amount we are instructed to debit from a source account so that the amount we actually\r\n * debit is less the commission to be paid to the account holder being debited and the commission is therefore effectively paid in real-time.\r\n */\r\n FeeTakenFromSourceByMerchant = 1,\r\n Elevy = 2,\r\n /** A processing fee charged by the external payment processor that we used to process the payment, that is charged to us, and is not charged to the end user. */\r\n ExternalPaymentProcessorFee = 3,\r\n ExternallyProcessedElevy = 4,\r\n InternalUserTransactionFee = 5,\r\n ExternalUserTransactionFee = 6,\r\n /** A processing fee charged by us for processing a transaction, that is charged to the 3rd party using our payment engine to process transactions, and is not charged to the end user. */\r\n InternalPaymentProcessorFee = 7,\r\n}\r\nexport class LineItem {\r\n public reference: string;\r\n public name: string;\r\n public description?: string;\r\n public quantity: number;\r\n public currency: Currency;\r\n public unitAmountInCents: number;\r\n public totalAmountInCents: number;\r\n}\r\nexport class MerchantPaymentResponse {\r\n /** An optional access token that can be used to check the status of the transaction or perform any action required to unblock transaction processing. */\r\n public accessToken?: string;\r\n /** A globally unique payment reference (UUID) that can be used to check the status of the payment. */\r\n public reference: string;\r\n /** A set of URLs that can be used to check the status of a payment either via polling or SignalR. */\r\n public paymentStatusUrls: StatusUrls;\r\n}\r\nexport enum MerchantPaymentType {\r\n Unspecified = 'Unspecified',\r\n CashOut = 'CashOut',\r\n BuyingGoods = 'BuyingGoods',\r\n BillPayment = 'BillPayment',\r\n GhIPSSQrCode = 'GhIPSSQrCode',\r\n}\r\nexport class MerchantRefundRequest {\r\n public language?: string;\r\n public timeZone?: string;\r\n public description?: string;\r\n public transactionBatchReference?: string;\r\n public refundCategory: TransactionCategory;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n public refundAmountInCents: number;\r\n}\r\nexport class PaymentReceiptResponse {\r\n public lineItems: LineItem[];\r\n public isComplete: boolean;\r\n /** The percentage of transactions that have been completed so far, expressed as a percentage of the total number of both source and destination transactions associated with the payment. */\r\n public percentageComplete: number;\r\n /** The date the payment was started. */\r\n public paymentStartedDate: Date;\r\n /** The date the payment was completed. */\r\n public paymentCompletedDate?: Date;\r\n /** The optional external reference that was supplied in the initial payment request, if it was supplied. */\r\n public yourReference?: string;\r\n /** The transaction batch description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /**\r\n * A globally unique payment reference (UUID) that was generated when the initial payment request was submitted.\r\n * <para>\r\n * This reference is returned in the response to that initial payment request.\r\n * </para>\r\n */\r\n public paymentReference: string;\r\n /** A short unique payment reference based on the payment ID. */\r\n public shortPaymentReference: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** A verification code that can be used to validate that an external payment was triggered by a trusted device (used for offline payments for example). */\r\n public verificationCode: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /** The consumer reference of the consumer who made the payment. */\r\n public consumerReference?: string;\r\n /** Optional details of the consumer who made the payment. */\r\n public consumer?: BasicConsumer;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentSourceResults\" /> object containing all of the payment sources associated with the payment and several aggregated values related to those sources. */\r\n public paymentSources?: PaymentSourceResults;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentDestinationResults\" /> object containing all of the payment destinations associated with the payment and several aggregated values related to those sources. */\r\n public paymentDestinations?: PaymentDestinationResults;\r\n /** Transaction amount totals that summarize the overall payment amounts, fees and commissions associated with the payment. */\r\n public amountTotals: AmountTotals;\r\n public timeZone?: string;\r\n}\r\nexport class PaymentRecurrenceSchedule {\r\n public reference?: string;\r\n public createdDate: Date;\r\n public repeatInterval: RepeatInterval;\r\n public scheduleEndDate?: Date;\r\n public repeatCount?: number;\r\n public entries: PaymentRecurrenceScheduleEntry[];\r\n}\r\nexport class PaymentRecurrenceScheduleEntry {\r\n public scheduledDate: Date;\r\n public isCancelled: boolean;\r\n public transactionBatchReference?: string;\r\n public isProcessed: boolean;\r\n}\r\n/** Model to hold details of a response to a payment request. */\r\nexport class PaymentResponse {\r\n /** A globally unique payment reference (UUID) that can be used to check the status of the payment. */\r\n public reference: string;\r\n /** A set of URLs that can be used to check the status of a payment either via polling or SignalR. */\r\n public paymentStatusUrls: StatusUrls;\r\n}\r\n/** A model to hold the details of a payment request, including the current status of all associated transactions and the overall payment itself. */\r\nexport class PaymentStatusResponse {\r\n public isComplete: boolean;\r\n /** The percentage of transactions that have been completed so far, expressed as a percentage of the total number of both source and destination transactions associated with the payment. */\r\n public percentageComplete: number;\r\n /** The date the payment was started. */\r\n public paymentStartedDate: Date;\r\n /** The date the payment was completed. */\r\n public paymentCompletedDate?: Date;\r\n /** The optional external reference that was supplied in the initial payment request, if it was supplied. */\r\n public yourReference?: string;\r\n /** The transaction batch description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /**\r\n * A globally unique payment reference (UUID) that was generated when the initial payment request was submitted.\r\n * <para>\r\n * This reference is returned in the response to that initial payment request.\r\n * </para>\r\n */\r\n public paymentReference: string;\r\n /** A short unique payment reference based on the payment ID. */\r\n public shortPaymentReference: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** A verification code that can be used to validate that an external payment was triggered by a trusted device (used for offline payments for example). */\r\n public verificationCode: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /** The consumer reference of the consumer who made the payment. */\r\n public consumerReference?: string;\r\n /** Optional details of the consumer who made the payment. */\r\n public consumer?: BasicConsumer;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentSourceResults\" /> object containing all of the payment sources associated with the payment and several aggregated values related to those sources. */\r\n public paymentSources?: PaymentSourceResults;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentDestinationResults\" /> object containing all of the payment destinations associated with the payment and several aggregated values related to those sources. */\r\n public paymentDestinations?: PaymentDestinationResults;\r\n /** Transaction amount totals that summarize the overall payment amounts, fees and commissions associated with the payment. */\r\n public amountTotals: AmountTotals;\r\n public timeZone?: string;\r\n}\r\nexport class PaymentTransaction {\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport abstract class PaymentTransactionResult {\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold the details of a request for validation of a QR code. */\r\nexport class QrCodeValidationRequest {\r\n /** A QR Code string that you would like validated. */\r\n public qrCode: string;\r\n}\r\n/** A model to hold the details of a QR Code validation response. */\r\nexport class QrCodeValidationResponse {\r\n /** A boolean value indicating whether the current environment is capable of processing the QR Code that was submitted for validation. */\r\n public canProcess: boolean;\r\n /** A comma delimited list of every type of QR Code that the current environment is capable of processing. */\r\n public supportedQrCodes: string;\r\n}\r\nexport enum ReceiptType {\r\n Consumer = 'Consumer',\r\n Merchant = 'Merchant',\r\n}\r\n/** A model to hold the details of the current status of a refund transaction. */\r\nexport class RefundReceiptResponse {\r\n /** The optional external reference that was supplied in the initial refund request, if it was supplied. */\r\n public yourReference?: string;\r\n /** The full payment receipt for the original payment that was refunded when available. */\r\n public originalPaymentReceipt?: PaymentReceiptResponse;\r\n /** The date the refund was completed. */\r\n public refundCompletedDate?: Date;\r\n public timeZone?: string;\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold the details of a request to refund money to a source of funds. */\r\nexport class RefundRequest {\r\n public language?: string;\r\n public timeZone?: string;\r\n /** A globally unique transaction reference (UUID) that identifies the original transaction that sourced the funds that you want to refund. */\r\n public sourceTransactionReference: string;\r\n /** A globally unique transaction reference (UUID) that identifies the destination transaction that the refund request is associated with. */\r\n public destinationTransactionReference: string;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /**\r\n * The amount to refund.\r\n * <para>This value cannot be larger than the amount that was originally sourced by the transaction referenced by <see cref=\"P:ZGA.Core.Models.Payments.RefundRequest.SourceTransactionReference\" />.</para>\r\n */\r\n public refundAmountInCents: number;\r\n}\r\n/** A model to hold the details of a response to a refund request. */\r\nexport class RefundResponse {\r\n /**\r\n * A globally unique refund transaction reference (UUID) generated by the system internally to identify a specific refund transaction.\r\n * <para>Can be used to check the status of a refund.</para>\r\n */\r\n public reference: string;\r\n /** A set of URLs that can be used to check the status of a refund either via polling or SignalR. */\r\n public refundStatusUrls: StatusUrls;\r\n}\r\n/** A model to hold the details of the current status of a refund transaction. */\r\nexport class RefundStatusResponse {\r\n /** The date the refund was completed. */\r\n public refundCompletedDate?: Date;\r\n public timeZone?: string;\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold the details of a refund transaction. */\r\nexport class RefundTransaction {\r\n /** The amount to refund. */\r\n public refundAmountInCents: number;\r\n public description?: string;\r\n}\r\n/** A model to hold the details of the result of a transaction refund attempt. */\r\nexport class RefundTransactionResult {\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport enum RefundType {\r\n Manual = 1,\r\n Auto = 2,\r\n}\r\nexport class ApplePaySource {\r\n public webPaymentResponse: ApplePayWebPaymentResponse;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class BankAccountSource {\r\n /**\r\n * A token that can be used instead of a bank account number.\r\n * If a token is present a bank account does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The bank account number from which funds will be withdrawn. */\r\n public accountNumber: string;\r\n /** The bank code of the bank that the account belongs to. */\r\n public bank: Bank;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class BankAccountSourceResult {\r\n public accountNumber: string;\r\n public bank: Bank;\r\n public bankName: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold the details of a card from which a payment should be made. */\r\nexport class CardSource {\r\n /**\r\n * A token that can be used instead of a card number.\r\n * If a token is present a card does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The name of the card company that issued this card: VISA, MasterCard, AMEX etc. */\r\n public cardIssuer: CardIssuer;\r\n public cardIssuerCountryIsoCode?: Country;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n /**\r\n * The Card Verification Value found on the back of the card.\r\n * This is either 3 or 4 digits long.\r\n */\r\n public cvv?: string;\r\n /** The name of the card holder as printed on the card. */\r\n public nameOnCard: string;\r\n /** The month in which the card expires. */\r\n public expiryMonth: Month;\r\n /** The year in which the card expires. */\r\n public expiryYear: number;\r\n /** The card holders billing address. */\r\n public billingAddress?: Address;\r\n /** Additional customer information to facilitate the card payment. */\r\n public cardHolder?: CardHolder;\r\n public disableThreeDSecure: boolean;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CardSourceResult {\r\n public cardIssuer: string;\r\n public cardIssuerCountryIsoCode?: Country;\r\n public cardNumber: string;\r\n public threeDSecureUrl?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class CashSource {\r\n public doNotProcess: boolean;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CashSourceResult {\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class GenericSource {\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class GooglePaySource {\r\n public webPaymentResponse: GooglePayWebPaymentResponse;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** Model to hold the details of a mobile money payment source. */\r\nexport class MobileWalletSource {\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /**\r\n * A voucher code issued by your network provider (currently Vodafone/Telecel or GMoney) in order to verify your payment.\r\n * This can also actually be a One Time Pin code, despite being referred to as a VoucherCode, that is generated by the MNO but needs to be submitted via the payment engine.\r\n */\r\n public voucherCode?: string;\r\n /**\r\n * A PIN issued to the subscriber.\r\n * This is usually a static PIN code and is currently only applicable for Zeepay.\r\n */\r\n public subscriberPin?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class MobileWalletSourceResult {\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public mobileWalletOperatorName: string;\r\n public msisdn: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class PaymentSourceResults {\r\n public cards: CardSourceResult[];\r\n public mobileWallets: MobileWalletSourceResult[];\r\n public bankAccounts: BankAccountSourceResult[];\r\n public wallets: WalletSourceResult[];\r\n public cash?: CashSourceResult;\r\n}\r\n/** Model to hold lists of Cards and Mobile Money accounts from which a payment must be made. */\r\nexport class PaymentSources {\r\n public generic?: GenericSource;\r\n /** A list of cards that must be used to fund the payment. */\r\n public cards?: CardSource[];\r\n /** A list of mobile money/wallets which must be used to fund the payment. */\r\n public mobileWallets?: MobileWalletSource[];\r\n /** A list of bank accounts which must be used to fund the payment. */\r\n public bankAccounts?: BankAccountSource[];\r\n /** A list of generic digital wallet which must be used to fund the payment. */\r\n public wallets?: WalletSource[];\r\n /** Details of cash received to fund the payment. */\r\n public cash?: CashSource;\r\n /** Web Payments API response data for Apple Pay transactions. */\r\n public applePay?: ApplePaySource;\r\n /** Web Payments API response data for Google Pay transactions. */\r\n public googlePay?: GooglePaySource;\r\n}\r\nexport class WalletSource {\r\n /** A unique wallet identifier. */\r\n public walletReference: string;\r\n /** The wallet provider that created and manages the wallet. */\r\n public walletProvider: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class WalletSourceResult {\r\n public walletReference: string;\r\n public walletProvider: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold a set of URLs that can be used to check the status of various types of transactions using various different web technologies. */\r\nexport class StatusUrls {\r\n /** A URL that can be used to repeatedly poll for a status update on a timer. */\r\n public polling?: string;\r\n /** A URL that can be used to connect to a SignalR endpoint in order to have updates pushed to you so that you do not have to poll. */\r\n public signalR?: string;\r\n /** Not available at this time. */\r\n public serverSentEvents?: string;\r\n /** Not available at this time. */\r\n public webSockets?: string;\r\n}\r\nexport enum TransactionCategory {\r\n Unknown = 0,\r\n Generic = 1,\r\n BankAccount = 2,\r\n Card = 3,\r\n MobileWallet = 4,\r\n Cash = 5,\r\n Merchant = 6,\r\n QrCode = 7,\r\n DigitalWallet = 8,\r\n Wallet = 8,\r\n BillPayment = 9,\r\n}\r\n/** A model that holds the details of a transaction confirmation. */\r\nexport class TransactionConfirmation {\r\n /** A boolean value indicating whether the transaction has been confirmed or not. */\r\n public confirm: boolean;\r\n}\r\nexport class TransactionData {\r\n public key: string;\r\n public data: string;\r\n public isPublic: boolean;\r\n public static none: TransactionData[];\r\n}\r\nexport class TransactionFee {\r\n public name: string;\r\n public feeType: FeeType;\r\n public feeAmountInCents: number;\r\n public currency: Currency;\r\n}\r\nexport enum TransactionIconType {\r\n Bank = 0,\r\n MobileWallet = 1,\r\n Card = 2,\r\n Cash = 3,\r\n Merchant = 4,\r\n QrCode = 5,\r\n DigitalWallet = 6,\r\n CellC = 7,\r\n Telkom = 8,\r\n TelkomMobile = 9,\r\n MTN = 10,\r\n Vodacom = 11,\r\n Vodafone = 12,\r\n AirtelTigo = 13,\r\n GhanaPay = 14,\r\n Zeepay = 15,\r\n Glo = 16,\r\n Surfline = 17,\r\n Busy4G = 18,\r\n DSTV = 19,\r\n GoTV = 20,\r\n StarTimesTV = 21,\r\n ECG = 22,\r\n GhanaWater = 23,\r\n Telecel = 24,\r\n}\r\n/** A model to hold the details of a pin or voucher code submission. */\r\nexport class TransactionPin {\r\n /** A PIN or voucher code provided by an end user. */\r\n public pin: string;\r\n}\r\nexport enum TransactionStatus {\r\n NotStarted = 0,\r\n Success = 1,\r\n Failed = 2,\r\n Processing = 3,\r\n Pending = 4,\r\n Authorized = 5,\r\n Declined = 6,\r\n ValidationError = 7,\r\n Requires3DSecure = 8,\r\n RequiresPin = 9,\r\n Expired = 10,\r\n InsufficientFunds = 11,\r\n AddressVerificationFailed = 12,\r\n Ignored = 13,\r\n ExternallyFunded = 14,\r\n ProcessorUnavailable = 15,\r\n TimedOut = 16,\r\n Indeterminate = 17,\r\n RequiresConfirmation = 18,\r\n RequiresAddress = 19,\r\n Delayed = 20,\r\n RequiresInitialConfirmation = 21,\r\n Unrecoverable = 22,\r\n Reversed = 23,\r\n}\r\nexport enum TransactionType {\r\n Source = 1,\r\n Destination = 2,\r\n}\r\n/** A model to hold the details of a web hook that a caller of this API would like to be called back on. */\r\nexport class Webhook {\r\n /** The URL to call back on. */\r\n public callbackUrl: string;\r\n /** A boolean value indicating whether callbacks should be sent every time there is a status change on any transaction associated with a payment, or only when the payment completes or any status change occurs that requires user intervention to allow the payment to progress. */\r\n public onPaymentCompleteOnly: boolean;\r\n}\r\nexport class EmailNotificationRequest {\r\n public toEmailAddress: string;\r\n public templateName?: string;\r\n public receiptType: ReceiptType;\r\n}\r\n/** Model to hold the details of a merchant payment request. */\r\nexport class MerchantPaymentRequest {\r\n /** A collection of all of the payment sources that must be used to make this payment. */\r\n public paymentSources?: PaymentSources;\r\n /** The optional terminal reference if this payment is being made from a merchant controlled device. */\r\n public terminalReference?: string;\r\n /** The optional QR code reference if this payment is being made from a scanned QR code. */\r\n public qrCodeReference?: string;\r\n /** The optional timestamp from the client used to calculate an offline verification code. */\r\n public timestamp?: number;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public language?: string;\r\n public timeZone?: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /**\r\n * A unique client reference for this payment.\r\n * This is optional to detect duplicate calls and also allow you to associate payments with your own internal reference numbers.\r\n */\r\n public yourReference?: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** Optional consumer information of the person making the payment. */\r\n public consumer?: BasicConsumer;\r\n /** Optional merchant information of the business making the payment. */\r\n public merchant?: BasicMerchant;\r\n /** The location from which the payment request was submitted. */\r\n public location?: Location;\r\n /** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n public paymentStatusWebhook?: Webhook;\r\n /** A text description of the payment. Sometimes also referred to as a Narration. */\r\n public description?: string;\r\n /**\r\n * A schedule definition to use to schedule payments to recur in the future.\r\n * If a schedule is supplied it must include either an end date or a repeat count and it must specify what repeat interval to use.\r\n */\r\n public recurrenceSchedule?: PaymentRecurrenceSchedule;\r\n /**\r\n * When a payment request instance is spawned by a recurrence schedule this property will be populated so that it is possible to lookup the specific schedule entry in the database\r\n * that is associated with payment request instance in question.\r\n */\r\n public scheduledSequenceNumber?: number;\r\n /**\r\n * In certain scenarios a confirmation may be requested from the client before transaction processing starts (confirming fees for example).\r\n * Use this flag to indicate that you want to automatically confirm any initial confirmations.\r\n */\r\n public disableInitialConfirmation: boolean;\r\n /** A list of line items associated with this payment. */\r\n public lineItems: LineItem[];\r\n}\r\n/** Model to hold the details of a payment request. */\r\nexport class PaymentRequest {\r\n /** A collection of all of the payment sources that must be used to make this payment. */\r\n public paymentSources?: PaymentSources;\r\n /** A collection of all the payment destinations that must be paid as a result of processing this payment. */\r\n public paymentDestinations?: PaymentDestinations;\r\n public language?: string;\r\n public timeZone?: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /**\r\n * A unique client reference for this payment.\r\n * This is optional to detect duplicate calls and also allow you to associate payments with your own internal reference numbers.\r\n */\r\n public yourReference?: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** Optional consumer information of the person making the payment. */\r\n public consumer?: BasicConsumer;\r\n /** Optional merchant information of the business making the payment. */\r\n public merchant?: BasicMerchant;\r\n /** The location from which the payment request was submitted. */\r\n public location?: Location;\r\n /** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n public paymentStatusWebhook?: Webhook;\r\n /** A text description of the payment. Sometimes also referred to as a Narration. */\r\n public description?: string;\r\n /**\r\n * A schedule definition to use to schedule payments to recur in the future.\r\n * If a schedule is supplied it must include either an end date or a repeat count and it must specify what repeat interval to use.\r\n */\r\n public recurrenceSchedule?: PaymentRecurrenceSchedule;\r\n /**\r\n * When a payment request instance is spawned by a recurrence schedule this property will be populated so that it is possible to lookup the specific schedule entry in the database\r\n * that is associated with payment request instance in question.\r\n */\r\n public scheduledSequenceNumber?: number;\r\n /**\r\n * In certain scenarios a confirmation may be requested from the client before transaction processing starts (confirming fees for example).\r\n * Use this flag to indicate that you want to automatically confirm any initial confirmations.\r\n */\r\n public disableInitialConfirmation: boolean;\r\n /** A list of line items associated with this payment. */\r\n public lineItems: LineItem[];\r\n}\r\nexport class SmsNotificationRequest {\r\n public toNumber: string;\r\n public receiptType: ReceiptType;\r\n}\r\nexport class GooglePayWebPaymentResponse {\r\n public requestId: string;\r\n public methodName: string;\r\n public details: any;\r\n public payerEmail?: string;\r\n public payerName: string;\r\n public payerPhone?: string;\r\n}\r\nexport class ApplePayWebPaymentResponse {\r\n public requestId: string;\r\n public methodName: string;\r\n public details: any;\r\n public payerEmail?: string;\r\n public payerName: string;\r\n public payerPhone?: string;\r\n}\r\n","import { ApiTokens, BaseApi } from '../baseApi';\r\nimport { Address } from '../common/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { MerchantQrCodeOptions } from '../merchants/types';\r\nimport {\r\n PaymentRequest,\r\n PaymentResponse,\r\n PaymentStatusResponse,\r\n TransactionPin,\r\n TransactionConfirmation,\r\n QrCodeValidationRequest,\r\n QrCodeValidationResponse,\r\n CardVerificationPaymentRequest,\r\n EmailNotificationRequest,\r\n SmsNotificationRequest,\r\n TransactionStatus,\r\n PaymentTransactionResult,\r\n MobileWalletSourceResult,\r\n MerchantPaymentResponse,\r\n MerchantPaymentRequest,\r\n PaymentReceiptResponse,\r\n ReceiptType,\r\n} from './types';\r\nimport {\r\n OnPaymentStatusUpdate,\r\n OnPaymentComplete,\r\n OnRequires3DSecure,\r\n OnRequiresPin,\r\n OnRequiresConfirmation,\r\n OnRequiresAddress,\r\n OnComplete3DSecure,\r\n} from '../eventTypes';\r\nimport { CardRequest, CardResponse, BankAccountRequest, BankAccountResponse, VerifyCardRequest } from '../tokens/types';\r\nimport * as signalR from '@microsoft/signalr';\r\nimport { AxiosInstance } from 'axios';\r\n\r\nconst baseEndpointPay = '/v1/pay';\r\nconst baseEndpointToken = '/v2/token';\r\nconst baseEndpointTransaction = '/v1/transaction';\r\nconst baseEndpointValidate = '/v1/validate';\r\nconst baseEndpointNotification = '/v1/notification';\r\n\r\nexport class Payments extends BaseApi {\r\n private readonly hubConnection: signalR.HubConnection;\r\n private readonly baseUrl: string;\r\n\r\n private activeTransactions = new Map<string, { lastJsonResponse: string; isProcessing3dSecure: boolean; statusCheckTimer: NodeJS.Timer }>();\r\n\r\n private manuallyStartedPaymentStatusChecking = false;\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false) {\r\n super(axiosInstance, consoleLogging);\r\n\r\n this.baseUrl = axiosInstance.defaults.baseURL;\r\n\r\n this.hubConnection = new signalR.HubConnectionBuilder()\r\n .withUrl(`${this.baseUrl}${baseEndpointPay}/hub`, { accessTokenFactory: () => ApiTokens.accessToken })\r\n .withAutomaticReconnect()\r\n .withStatefulReconnect()\r\n .configureLogging(this.consoleLogging ? signalR.LogLevel.Debug : signalR.LogLevel.None)\r\n .build();\r\n }\r\n\r\n async pay(request: PaymentRequest): Promise<PaymentStatusResponse> {\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n const response = await this.request<PaymentResponse>(baseEndpointPay, 'POST', request);\r\n\r\n return this.startPaymentStatusChecking(response.reference);\r\n }\r\n\r\n async payMerchant(merchantReference: string, request: MerchantPaymentRequest): Promise<PaymentStatusResponse> {\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n const response = await this.request<MerchantPaymentResponse>(`${baseEndpointPay}/merchant/${merchantReference}`, 'POST', request);\r\n\r\n // Use token from the response if it was not set before.\r\n ApiTokens.accessToken = ApiTokens.accessToken || response.accessToken;\r\n\r\n return this.startPaymentStatusChecking(response.reference);\r\n }\r\n\r\n async paymentStatusCheck(paymentReference: string): Promise<PaymentStatusResponse> {\r\n return this.request<PaymentStatusResponse>(`${baseEndpointPay}/status/${paymentReference}`, 'GET');\r\n }\r\n\r\n async paymentReceipt(paymentReference: string): Promise<PaymentReceiptResponse> {\r\n return this.request<PaymentReceiptResponse>(`${baseEndpointPay}/receipt/${paymentReference}`, 'GET');\r\n }\r\n\r\n async createCardToken(request: CardRequest): Promise<CardResponse> {\r\n return this.request<CardResponse>(`${baseEndpointToken}/card`, 'POST', request);\r\n }\r\n\r\n async createBankAccountToken(request: BankAccountRequest): Promise<BankAccountResponse> {\r\n return this.request<BankAccountResponse>(`${baseEndpointToken}/bankAccount`, 'POST', request);\r\n }\r\n\r\n async verifyCardToken(request: VerifyCardRequest): Promise<CardResponse> {\r\n return this.request<CardResponse>(`${baseEndpointToken}/card/verify`, 'POST', request);\r\n }\r\n\r\n async createCardVerificationPayment(request: CardVerificationPaymentRequest): Promise<PaymentStatusResponse> {\r\n const response = await this.request<PaymentResponse>(`${baseEndpointToken}/card/verify/payment`, 'POST', request);\r\n\r\n return this.startPaymentStatusChecking(response.reference);\r\n }\r\n\r\n async submitPinCode(transactionReference: string, pin: string): Promise<void> {\r\n const request: TransactionPin = {\r\n pin: pin,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/pin/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async rejectPinCode(transactionReference: string): Promise<void> {\r\n const request: TransactionPin = {\r\n pin: '',\r\n };\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/pin/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async submitConfirmation(transactionReference: string, confirm: boolean): Promise<void> {\r\n const request: TransactionConfirmation = {\r\n confirm: confirm,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/confirm/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async submitAddress(transactionReference: string, request: Address): Promise<void> {\r\n return this.request<void>(`${baseEndpointTransaction}/address/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async validateQrCode(request: QrCodeValidationRequest): Promise<QrCodeValidationResponse> {\r\n return this.request<QrCodeValidationResponse>(`${baseEndpointValidate}/qr`, 'POST', request);\r\n }\r\n\r\n async sendEmailPaymentNotification(paymentReference: string, emailAddress: string, templateName?: string): Promise<void> {\r\n const request: EmailNotificationRequest = {\r\n toEmailAddress: emailAddress,\r\n templateName: templateName,\r\n receiptType: ReceiptType.Consumer,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointNotification}/email/${paymentReference}`, 'POST', request);\r\n }\r\n\r\n async sendSmsPaymentNotification(paymentReference: string, msisdn: string): Promise<void> {\r\n const request: SmsNotificationRequest = {\r\n toNumber: msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, ''),\r\n receiptType: ReceiptType.Consumer,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointNotification}/sms/${paymentReference}`, 'POST', request);\r\n }\r\n\r\n async stopPaymentStatusChecking(paymentReference?: string): Promise<void> {\r\n if (paymentReference) {\r\n this.removePaymentStatusCheckInterval(paymentReference);\r\n this.activeTransactions.delete(paymentReference);\r\n } else {\r\n this.manuallyStartedPaymentStatusChecking = false;\r\n\r\n for (let tran of this.activeTransactions.values()) {\r\n clearInterval(tran.statusCheckTimer);\r\n }\r\n\r\n this.activeTransactions.clear();\r\n }\r\n\r\n if (!this.manuallyStartedPaymentStatusChecking && this.hubConnection.state !== signalR.HubConnectionState.Disconnected) {\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n return this.hubConnection.stop();\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n async startPaymentStatusChecking(paymentReference?: string): Promise<PaymentStatusResponse> {\r\n // Check if we can use SignalR but even if it fails then it will fallback to polling.\r\n const start = async () => {\r\n try {\r\n if (paymentReference) {\r\n // Enable a backup poll if things are taking a bit long.\r\n this.addPaymentStatusCheckInterval(paymentReference, 10000);\r\n }\r\n\r\n if (this.hubConnection.state !== signalR.HubConnectionState.Connected) {\r\n return await this.hubConnection.start();\r\n }\r\n\r\n return Promise.resolve();\r\n } catch (error) {\r\n if (paymentReference) {\r\n this.removePaymentStatusCheckInterval(paymentReference);\r\n\r\n console.error('Could not connect via SignalR, falling back to polling end-point...');\r\n this.addPaymentStatusCheckInterval(paymentReference, 1500);\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(error);\r\n }\r\n };\r\n\r\n if (paymentReference) {\r\n this.activeTransactions.set(paymentReference, {\r\n lastJsonResponse: '',\r\n isProcessing3dSecure: false,\r\n statusCheckTimer: null,\r\n });\r\n }\r\n\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n this.hubConnection.on('OnPaymentStatusChanged', async (statusResponse: PaymentStatusResponse) => {\r\n this.removePaymentStatusCheckInterval(statusResponse.paymentReference);\r\n\r\n // An active transaction is not found but the checker was manually started so we need to add it.\r\n // This is necessary because starting the status checker manually implied you are waiting for an external payment to start.\r\n if (!this.activeTransactions.has(statusResponse.paymentReference) && this.manuallyStartedPaymentStatusChecking) {\r\n this.activeTransactions.set(statusResponse.paymentReference, {\r\n lastJsonResponse: '',\r\n isProcessing3dSecure: false,\r\n statusCheckTimer: null,\r\n });\r\n }\r\n\r\n if (this.activeTransactions.has(statusResponse.paymentReference)) {\r\n this.checkPaymentUpdateStatus(statusResponse);\r\n\r\n if (statusResponse.isComplete) {\r\n this.activeTransactions.delete(statusResponse.paymentReference);\r\n\r\n if (!this.manuallyStartedPaymentStatusChecking) {\r\n // If this was not manually started then disconnect from the hub.\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n return await this.stopPaymentStatusChecking(statusResponse.paymentReference);\r\n }\r\n } else {\r\n // Enable the backup poll again as a fallback if the connection gets lost.\r\n this.addPaymentStatusCheckInterval(statusResponse.paymentReference, 5000);\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n });\r\n\r\n await start();\r\n\r\n if (paymentReference) {\r\n // Since the payment is already processing, we should check the status after connecting to see if it's in a waiting state that could have been missed.\r\n const initialStatusResponse = await this.paymentStatusCheck(paymentReference);\r\n this.checkPaymentUpdateStatus(initialStatusResponse);\r\n\r\n return Promise.resolve(initialStatusResponse);\r\n } else {\r\n this.manuallyStartedPaymentStatusChecking = true;\r\n }\r\n\r\n return Promise.resolve(null);\r\n }\r\n\r\n getOfflinePaymentFormUrl(timestamp: number, merchantId: number, terminalId: number, batchNumber: string, options: MerchantQrCodeOptions): string {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n let optionsBase64 = '';\r\n if (isBrowser) {\r\n // Browser compatible version.\r\n optionsBase64 = btoa(JSON.stringify(options || {}));\r\n } else {\r\n optionsBase64 = Buffer.from(JSON.stringify(options || {}), 'base64').toString();\r\n }\r\n\r\n // /mp is URL rewritten to v1/merchant/payment/form/offline to keep it short for QR codes.\r\n return `${this.baseUrl}/mp?x=${timestamp}|${merchantId}|${terminalId}|${batchNumber || ''}|${optionsBase64}`;\r\n }\r\n\r\n getRequiredPinLength(mobileWalletOperator: MobileWalletOperator): number {\r\n if (\r\n mobileWalletOperator === MobileWalletOperator.VDF ||\r\n mobileWalletOperator.toString() === 'VDF' ||\r\n mobileWalletOperator === MobileWalletOperator.TCG ||\r\n mobileWalletOperator.toString() === 'TCG'\r\n ) {\r\n return 6;\r\n }\r\n\r\n return 4;\r\n }\r\n\r\n luhnCheck(creditCardNumber: string): boolean {\r\n if (!creditCardNumber) {\r\n return false;\r\n }\r\n\r\n creditCardNumber = creditCardNumber.replace(/[\\s]/g, '');\r\n\r\n if (!/^[0-9]+$/.test(creditCardNumber)) {\r\n return false;\r\n }\r\n\r\n const array = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9];\r\n let length = creditCardNumber.length;\r\n let bit = 1;\r\n let sum = 0;\r\n let value = 0;\r\n\r\n while (length) {\r\n value = parseInt(creditCardNumber.charAt(--length), 10);\r\n bit ^= 1;\r\n sum += bit ? array[value] : value;\r\n }\r\n\r\n return sum % 10 === 0;\r\n }\r\n\r\n private checkPaymentUpdateStatus(statusResponse: PaymentStatusResponse) {\r\n const checkRequiredStatuses = (statusResponse: PaymentStatusResponse) => {\r\n let isWaiting = false;\r\n\r\n // Check for specific wait/required statuses and signal the client to show a dialog.\r\n const checkGenericRequiredStatuses = (transactionResult: PaymentTransactionResult) => {\r\n // Short circuit here to avoid signalling for multiple waiting transactions to the client can deal with one at a time.\r\n if (!isWaiting) {\r\n const signalData: Record<string, any> = {\r\n message: transactionResult.message,\r\n transactionReference: transactionResult.reference,\r\n paymentStatusResponse: statusResponse,\r\n };\r\n\r\n if (\r\n transactionResult.status === TransactionStatus.RequiresConfirmation ||\r\n transactionResult.status === TransactionStatus.RequiresInitialConfirmation\r\n ) {\r\n isWaiting = true;\r\n\r\n // Attach the account holders and the fees.\r\n const destinationWithAccountHolder =\r\n statusResponse.paymentDestinations.mobileWallets.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.bankAccounts.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.merchants.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.qrCodes.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.bills.find((transactionResult) => transactionResult.accountHolder) ||\r\n null;\r\n\r\n signalData.confirmationData = {\r\n amountInCents: transactionResult.amountInCents,\r\n sourceAccountHolder: transactionResult['accountHolder'] || null,\r\n destinationAccountHolder: destinationWithAccountHolder !== null ? destinationWithAccountHolder.accountHolder : null,\r\n fees: transactionResult.fees,\r\n };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresConfirmation --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequiresConfirmation, signalData);\r\n } else if (transactionResult.status === TransactionStatus.RequiresPin) {\r\n isWaiting = true;\r\n\r\n // We can try indicate to a client to render PIN limits if that's what they want to do.\r\n // Typically a PIN will be 4 digits in length, one well-known outlier is a Vodafone voucher which is 6.\r\n signalData.pinLength = this.getRequiredPinLength(MobileWalletOperator.None);\r\n\r\n const mobileWalletSourceResult = transactionResult as MobileWalletSourceResult;\r\n if (mobileWalletSourceResult && mobileWalletSourceResult.mobileWalletOperator) {\r\n signalData.pinLength = this.getRequiredPinLength(mobileWalletSourceResult.mobileWalletOperator);\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresPin --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequiresPin, signalData);\r\n } else if (transactionResult.status === TransactionStatus.RequiresAddress) {\r\n isWaiting = true;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresAddress --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequiresAddress, signalData);\r\n }\r\n }\r\n };\r\n\r\n // Sources\r\n statusResponse.paymentSources.cards.forEach((transactionResult) => {\r\n if (!isWaiting && transactionResult.status === TransactionStatus.Requires3DSecure && transactionResult.threeDSecureUrl) {\r\n isWaiting = true;\r\n this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure = true;\r\n\r\n const signalData = { url: transactionResult.threeDSecureUrl };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequires3DSecure --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequires3DSecure, signalData);\r\n } else {\r\n checkGenericRequiredStatuses(transactionResult);\r\n }\r\n });\r\n\r\n if (!isWaiting && this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure) {\r\n this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure = false;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnComplete3DSecure --');\r\n }\r\n\r\n this.events.publish(OnComplete3DSecure);\r\n }\r\n\r\n statusResponse.paymentSources.mobileWallets.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentSources.bankAccounts.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n\r\n // Destinations\r\n statusResponse.paymentDestinations.bankAccounts.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.merchants.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.mobileWallets.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.qrCodes.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.cards.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.wallets.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.bills.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n };\r\n\r\n const activeTransaction = this.activeTransactions.get(statusResponse.paymentReference);\r\n\r\n if (activeTransaction && JSON.stringify(statusResponse) !== activeTransaction.lastJsonResponse) {\r\n // To reduce spamming the client we'll only publish changes.\r\n activeTransaction.lastJsonResponse = JSON.stringify(statusResponse);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnPaymentStatusUpdate --');\r\n console.dir(statusResponse, { depth: null });\r\n }\r\n\r\n this.events.publish(OnPaymentStatusUpdate, statusResponse);\r\n\r\n checkRequiredStatuses(statusResponse);\r\n\r\n if (statusResponse.isComplete) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnPaymentComplete --');\r\n console.dir(statusResponse, { depth: null });\r\n }\r\n\r\n this.events.publish(OnPaymentComplete, statusResponse);\r\n\r\n this.removePaymentStatusCheckInterval(statusResponse.paymentReference);\r\n this.activeTransactions.delete(statusResponse.paymentReference);\r\n }\r\n } else if (this.consoleLogging) {\r\n console.warn('!! OnPaymentStatusUpdate will not be fired because the status response has not changed !!');\r\n }\r\n }\r\n\r\n private async onStatusPollingInterval(paymentReference: string): Promise<void> {\r\n this.removePaymentStatusCheckInterval(paymentReference);\r\n\r\n if (this.activeTransactions.has(paymentReference)) {\r\n const statusResponse = await this.paymentStatusCheck(paymentReference);\r\n\r\n if (statusResponse) {\r\n this.checkPaymentUpdateStatus(statusResponse);\r\n\r\n if (!statusResponse.isComplete) {\r\n this.addPaymentStatusCheckInterval(paymentReference);\r\n } else {\r\n if (!this.manuallyStartedPaymentStatusChecking) {\r\n // If this was not manually started then disconnect from the hub.\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n await this.stopPaymentStatusChecking(paymentReference);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private addPaymentStatusCheckInterval(paymentReference?: string, interval: number = 1500): void {\r\n if (this.activeTransactions.has(paymentReference)) {\r\n const activeTransaction = this.activeTransactions.get(paymentReference);\r\n clearInterval(activeTransaction.statusCheckTimer);\r\n activeTransaction.statusCheckTimer = setInterval(() => this.onStatusPollingInterval(paymentReference), interval);\r\n }\r\n }\r\n\r\n private removePaymentStatusCheckInterval(paymentReference?: string): void {\r\n if (this.activeTransactions.has(paymentReference)) {\r\n clearInterval(this.activeTransactions.get(paymentReference).statusCheckTimer);\r\n }\r\n }\r\n}\r\n","export enum LogLevel {\r\n Trace = 0,\r\n Debug = 1,\r\n Information = 2,\r\n Warning = 3,\r\n Error = 4,\r\n Critical = 5,\r\n}\r\nexport interface LogMessage {\r\n timestamp: string;\r\n level: LogLevel;\r\n template: string;\r\n properties?: any[];\r\n}\r\nexport interface Token {\r\n name?: string;\r\n text?: string;\r\n destructure?: boolean;\r\n raw?: string;\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport { Balance, ContactDetails } from '../common/types';\r\nimport { OnSessionExpired } from '../eventTypes';\r\nimport { Consumer, ConsumerFile, Feedback, Message, StopCardRequest } from './types';\r\n\r\nconst baseConsumerEndpoint = '/v1/consumer';\r\nconst baseFeedbackEndpoint = '/v1/consumer/feedback';\r\nconst baseMessageEndpoint = '/v1/consumer/messages';\r\nconst baseContactEndpoint = '/v1/consumer/contact';\r\nconst baseFilesEndpoint = '/v1/consumer/files';\r\nconst baseAccountEndpoint = '/v1/consumer/account';\r\n\r\nexport class Consumers extends BaseApi {\r\n // Consumer\r\n async createConsumer(request: Consumer): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'POST', request);\r\n }\r\n\r\n async updateConsumer(request: Consumer): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'PUT', request);\r\n }\r\n\r\n async deleteConsumer(): Promise<void> {\r\n await this.request<Consumer>(baseConsumerEndpoint, 'DELETE');\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n async getConsumer(): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'GET');\r\n }\r\n\r\n async getConsumerAgreement(): Promise<string> {\r\n return this.request<string>(`${baseConsumerEndpoint}/agreement`, 'GET');\r\n }\r\n\r\n async acceptConsumerAgreement(): Promise<void> {\r\n return this.request<void>(`${baseConsumerEndpoint}/agreement/accept`, 'POST');\r\n }\r\n\r\n // Accounts\r\n async stopCard(cardReference: string, reason?: string): Promise<void> {\r\n const request: StopCardRequest = {\r\n cardReference: cardReference,\r\n reason: reason,\r\n };\r\n\r\n return this.request<void>(`${baseAccountEndpoint}/card/stop`, 'POST', request);\r\n }\r\n\r\n async getBankAccountBalance(bankAccountReference: string): Promise<Balance> {\r\n return this.request<Balance>(`${baseAccountEndpoint}/bank-account/${bankAccountReference}/balance`, 'GET');\r\n }\r\n\r\n // Files\r\n async downloadFile(fileReference: string, queryParameters?: Record<string, string>): Promise<ConsumerFile | null> {\r\n let queryString = '';\r\n\r\n if (queryParameters && Object.keys(queryParameters).length > 0) {\r\n const params = Object.entries(queryParameters)\r\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n queryString = `?${params}`;\r\n }\r\n\r\n return this.request<ConsumerFile>(`${baseFilesEndpoint}/${fileReference}${queryString}`, 'GET');\r\n }\r\n\r\n // Feedback\r\n async submitFeedback(description: string): Promise<void> {\r\n const request: Feedback = {\r\n description: description,\r\n };\r\n\r\n return this.request<void>(`${baseFeedbackEndpoint}/send`, 'POST', request);\r\n }\r\n\r\n // Messages\r\n async getAllMessages(): Promise<Message[]> {\r\n return this.request<Message[]>(baseMessageEndpoint, 'GET');\r\n }\r\n\r\n async getMessage(messageReference: string): Promise<Message> {\r\n return this.request<Message>(`${baseMessageEndpoint}/${messageReference}`, 'GET');\r\n }\r\n\r\n async deleteMessage(messageReference: string): Promise<void> {\r\n return this.request<void>(`${baseMessageEndpoint}/${messageReference}`, 'DELETE');\r\n }\r\n\r\n // Contact\r\n async contactSupport(request: ContactDetails): Promise<void> {\r\n return this.request<void>(baseContactEndpoint, 'POST', request);\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport QRCode from 'qrcode';\r\n\r\nconst baseEndpoint = '/v1/qr';\r\n\r\nexport class QrCodes extends BaseApi {\r\n private readonly qrCache = new Map<string, any>();\r\n\r\n async decode(qrCode: string): Promise<any> {\r\n if (!this.qrCache.has(qrCode)) {\r\n this.qrCache.set(qrCode, await this.request<any>(`${baseEndpoint}/decode?qrCodeData=${qrCode}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.qrCache.get(qrCode) || null);\r\n }\r\n\r\n async generate(text: string, width: number = 500): Promise<string> {\r\n if (text) {\r\n return QRCode.toDataURL(text, { errorCorrectionLevel: 'H', margin: 0.5, width: width });\r\n }\r\n\r\n return Promise.reject();\r\n }\r\n}\r\n","import { OtpVerificationRequest, OtpVerificationResponse, TokenResponse } from '../authentication/types';\r\nimport { ApiTokens, BaseApi } from '../baseApi';\r\nimport { Device } from '../devices/types';\r\nimport { Currency, ProductType } from '../lookups/types';\r\nimport {\r\n BasicMerchant,\r\n Merchant,\r\n MerchantFile,\r\n MerchantLoginCredentials,\r\n MerchantNameVerificationRequest,\r\n MerchantNameVerificationResponse,\r\n MerchantProduct,\r\n TerminalConfiguration,\r\n TerminalPaymentQrCodeUrls,\r\n TerminalPaymentQrCodes,\r\n TerminalSetup,\r\n} from './types';\r\n\r\nconst baseMerchantEndpoint = '/v1/merchant';\r\nconst baseOtpEndpoint = '/v1/merchant/otp';\r\nconst basePosEndpoint = '/v1/merchant/pos';\r\nconst baseProductEndpoint = '/v1/merchant/product';\r\nconst baseUserEndpoint = '/v1/merchant/user';\r\n\r\nexport class Merchants extends BaseApi {\r\n private readonly productDetailCache = new Map<string, MerchantProduct>();\r\n private productsCache: any[] = [];\r\n\r\n private createMerchantProductProxy(product: MerchantProduct): MerchantProduct {\r\n const copy = { ...product };\r\n\r\n return new Proxy(copy, {\r\n get(target, prop) {\r\n if (prop === 'amountInCents') {\r\n if (target.futureAmountEffectiveFromDate && new Date(target.futureAmountEffectiveFromDate) <= new Date()) {\r\n return target.futureAmountInCents || 0;\r\n }\r\n return target.amountInCents;\r\n }\r\n return (target as any)[prop];\r\n },\r\n\r\n set(target, prop, value) {\r\n (target as any)[prop] = value;\r\n return true;\r\n },\r\n }) as MerchantProduct;\r\n }\r\n\r\n // Products\r\n private async getAllProducts(): Promise<any> {\r\n if (this.productsCache.length === 0) {\r\n const products = await this.request<any>(`${baseProductEndpoint}/lookup`, 'GET');\r\n this.productsCache = products || [];\r\n }\r\n\r\n return Promise.resolve(this.productsCache);\r\n }\r\n\r\n async getActiveProductTypes(): Promise<ProductType[]> {\r\n const allProducts = await this.getAllProducts();\r\n\r\n return Promise.resolve(allProducts.map((p) => p.type).sort());\r\n }\r\n\r\n async getMerchantNamesFromProductType(productType: string): Promise<string[]> {\r\n const allProducts = await this.getAllProducts();\r\n\r\n const el = allProducts.find((p) => p.type === productType);\r\n if (el) {\r\n return Promise.resolve(\r\n el.merchants\r\n .map((m) => m.name)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .sort(),\r\n );\r\n }\r\n\r\n return Promise.resolve([]);\r\n }\r\n\r\n async getProductTypesForMerchant(merchantName: string): Promise<ProductType[]> {\r\n const allProducts = await this.getAllProducts();\r\n const typesWithMatchingMerchant = [];\r\n\r\n allProducts.forEach((product) => {\r\n if (product.merchants.find((m) => m.name === merchantName)) {\r\n typesWithMatchingMerchant.push(product.type);\r\n }\r\n });\r\n\r\n return Promise.resolve(typesWithMatchingMerchant.filter((value, index, self) => self.indexOf(value) === index).sort());\r\n }\r\n\r\n async getProductsForMerchantAndProductType(productType: ProductType, merchantName: string): Promise<any[]> {\r\n const allProducts = await this.getAllProducts();\r\n\r\n const pel = allProducts.find((p) => p.type === productType);\r\n if (pel) {\r\n const mel = pel.merchants.find((m) => m.name === merchantName);\r\n if (mel) {\r\n return Promise.resolve(mel.products.sort((a, b) => a.name.localeCompare(b.name)));\r\n }\r\n }\r\n\r\n return Promise.resolve([]);\r\n }\r\n\r\n async getProductDetails(productReference: string): Promise<MerchantProduct> {\r\n if (!this.productDetailCache.has(productReference)) {\r\n this.productDetailCache.set(productReference, await this.request<MerchantProduct>(`${baseProductEndpoint}/details/${productReference}`, 'GET'));\r\n }\r\n\r\n const productDetails = this.productDetailCache.get(productReference) || null;\r\n if (productDetails) {\r\n return Promise.resolve(this.createMerchantProductProxy(productDetails));\r\n }\r\n\r\n return Promise.resolve(null);\r\n }\r\n\r\n async getProducts(): Promise<MerchantProduct[]> {\r\n const products = await this.request<MerchantProduct[]>(`${baseProductEndpoint}`, 'GET');\r\n return products.map((product) => this.createMerchantProductProxy(product));\r\n }\r\n\r\n async createProduct(product: MerchantProduct): Promise<MerchantProduct> {\r\n const newProduct = await this.request<MerchantProduct>(`${baseProductEndpoint}`, 'POST', product);\r\n return this.createMerchantProductProxy(newProduct);\r\n }\r\n\r\n async updateProduct(product: MerchantProduct): Promise<MerchantProduct> {\r\n const updatedProduct = await this.request<MerchantProduct>(`${baseProductEndpoint}`, 'PUT', product);\r\n return this.createMerchantProductProxy(updatedProduct);\r\n }\r\n\r\n async deleteProduct(productReference: string): Promise<void> {\r\n return this.request<void>(`${baseProductEndpoint}/${productReference}`, 'DELETE');\r\n }\r\n\r\n groupProductsByName(products: any) {\r\n return products.reduce((groups, product) => {\r\n const [groupName, productName] = product.name.split('|').map((s) => s.trim());\r\n\r\n if (!groups[groupName]) {\r\n groups[groupName] = [];\r\n }\r\n\r\n groups[groupName].push({\r\n ...product,\r\n name: productName || product.name,\r\n });\r\n\r\n return groups;\r\n }, {});\r\n }\r\n\r\n // Merchant\r\n async getMerchant(): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'GET');\r\n }\r\n\r\n async createMerchant(request: Merchant): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'POST', request);\r\n }\r\n\r\n async updateMerchant(request: Merchant): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'PUT', request);\r\n }\r\n\r\n async getMerchantAgreement(): Promise<string> {\r\n return this.request<string>(`${baseMerchantEndpoint}/agreement`, 'GET');\r\n }\r\n\r\n async acceptMerchantAgreement(): Promise<void> {\r\n return this.request<void>(`${baseMerchantEndpoint}/agreement/accept`, 'POST');\r\n }\r\n\r\n // Verification\r\n async verifyMobileNumber(msisdn?: string): Promise<void> {\r\n let cleanMsisdn = '';\r\n if (msisdn) {\r\n cleanMsisdn = msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, '');\r\n }\r\n\r\n return this.request<void>(`${baseOtpEndpoint}/${cleanMsisdn}`, 'POST');\r\n }\r\n\r\n async validateOtp(otpValue: string, msisdn?: string): Promise<OtpVerificationResponse> {\r\n const request: OtpVerificationRequest = {\r\n otpValue: otpValue,\r\n };\r\n\r\n let cleanMsisdn = '';\r\n if (msisdn) {\r\n cleanMsisdn = msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, '');\r\n }\r\n\r\n const verificationResponse = await this.request<OtpVerificationResponse>(`${baseOtpEndpoint}/validate/${cleanMsisdn}`, 'POST', request);\r\n\r\n ApiTokens.accessToken = verificationResponse.accessToken || ApiTokens.accessToken;\r\n\r\n return Promise.resolve(verificationResponse);\r\n }\r\n\r\n async validateMerchantName(name: string): Promise<boolean> {\r\n const request: MerchantNameVerificationRequest = {\r\n merchantName: name,\r\n };\r\n\r\n const response = await this.request<MerchantNameVerificationResponse>(`${baseMerchantEndpoint}/validate/name`, 'POST', request);\r\n\r\n if (response.accessToken) {\r\n ApiTokens.accessToken = response.accessToken;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return Promise.resolve(false);\r\n }\r\n\r\n // User\r\n async createUser(username: string, password: string, mobileNumber?: string, emailAddress?: string): Promise<TokenResponse> {\r\n const request: MerchantLoginCredentials = {\r\n username: username,\r\n password: password,\r\n mobileNumber: mobileNumber,\r\n emailAddress: emailAddress,\r\n isLockedOut: false,\r\n };\r\n\r\n const tokenResponse = await this.request<TokenResponse>(baseUserEndpoint, 'POST', request);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async switchToMerchant(merchantReference: string): Promise<TokenResponse> {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseUserEndpoint}/switch/${merchantReference}`, 'POST');\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async getUserMerchants(): Promise<BasicMerchant[]> {\r\n return this.request<BasicMerchant[]>(baseUserEndpoint, 'GET');\r\n }\r\n\r\n // Terminal / POS\r\n async setupPosTerminal(terminalReference: string, merchantSource?: string, deviceInformation?: Device): Promise<TerminalSetup> {\r\n const response = await this.request<TerminalSetup>(`${basePosEndpoint}/setup/${terminalReference}/${merchantSource}`, 'POST', deviceInformation);\r\n\r\n ApiTokens.accessToken = response.checkAccessToken || ApiTokens.accessToken;\r\n\r\n return Promise.resolve(response);\r\n }\r\n\r\n async getPosTerminalConfiguration(terminalReference: string, merchantSource?: string): Promise<TerminalConfiguration> {\r\n const configResponse = await this.request<TerminalConfiguration>(`${basePosEndpoint}/config/${terminalReference}/${merchantSource}`, 'GET');\r\n\r\n ApiTokens.accessToken = configResponse.accessToken || ApiTokens.accessToken;\r\n\r\n return Promise.resolve(configResponse);\r\n }\r\n\r\n async getTerminalPaymentQrCodes(amountInCents: number, currency: Currency): Promise<TerminalPaymentQrCodes> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n return this.request<TerminalPaymentQrCodes>(`${basePosEndpoint}/qr?amount=${amountInCents}&currency=${currencyIsoCode}`, 'GET');\r\n }\r\n\r\n async getTerminalPaymentQrCodeUrls(amountInCents: number, currency: Currency): Promise<TerminalPaymentQrCodeUrls> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n return this.request<TerminalPaymentQrCodeUrls>(`${basePosEndpoint}/qr-urls?amount=${amountInCents}&currency=${currencyIsoCode}`, 'GET');\r\n }\r\n\r\n // Files\r\n async uploadFile(request: MerchantFile): Promise<void> {\r\n return this.request<void>(`${baseMerchantEndpoint}/file/upload`, 'POST', request);\r\n }\r\n}\r\n","import { Token } from './types';\r\n\r\n// https://github.com/structured-log/structured-log/blob/7c05f737316f62f32775b2fd2f0d69fb207978bd/src/messageTemplate.ts\r\nconst tokenizer = /\\{@?\\w+}/g;\r\n\r\nexport class MessageTemplate {\r\n raw: string;\r\n private tokens: Token[];\r\n\r\n constructor(messageTemplate: string) {\r\n if (messageTemplate === null || !messageTemplate.length) {\r\n throw new Error('Argument \"messageTemplate\" is required.');\r\n }\r\n\r\n this.raw = messageTemplate;\r\n this.tokens = this.tokenize(messageTemplate);\r\n }\r\n\r\n render(properties?: Object): string {\r\n if (!this.tokens.length) {\r\n return this.raw;\r\n }\r\n\r\n properties = properties || {};\r\n const result = [];\r\n\r\n for (var i = 0; i < this.tokens.length; ++i) {\r\n const token = this.tokens[i];\r\n if (typeof token.name === 'string') {\r\n if (properties.hasOwnProperty(token.name)) {\r\n result.push(this.toText(properties[token.name]));\r\n } else {\r\n result.push(token.raw);\r\n }\r\n } else {\r\n result.push(token.text);\r\n }\r\n }\r\n\r\n return result.join('');\r\n }\r\n\r\n bindProperties(positionalArgs: any): Object {\r\n const result = {};\r\n let nextArg = 0;\r\n\r\n for (var i = 0; i < this.tokens.length && nextArg < positionalArgs.length; ++i) {\r\n const token = this.tokens[i];\r\n if (typeof token.name === 'string') {\r\n let p = positionalArgs[nextArg];\r\n result[token.name] = this.capture(p, token.destructure);\r\n nextArg++;\r\n }\r\n }\r\n\r\n while (nextArg < positionalArgs.length) {\r\n const arg = positionalArgs[nextArg];\r\n if (typeof arg !== 'undefined') {\r\n result['a' + nextArg] = this.capture(arg);\r\n }\r\n nextArg++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private tokenize(template: string): Token[] {\r\n const tokens = [];\r\n\r\n let result;\r\n let textStart;\r\n\r\n while ((result = tokenizer.exec(template)) !== null) {\r\n if (result.index !== textStart) {\r\n tokens.push({ text: template.slice(textStart, result.index) });\r\n }\r\n\r\n let destructure = false;\r\n\r\n let token = result[0].slice(1, -1);\r\n if (token.indexOf('@') === 0) {\r\n token = token.slice(1);\r\n destructure = true;\r\n }\r\n\r\n tokens.push({\r\n name: token,\r\n destructure,\r\n raw: result[0],\r\n });\r\n\r\n textStart = tokenizer.lastIndex;\r\n }\r\n\r\n if (textStart >= 0 && textStart < template.length) {\r\n tokens.push({ text: template.slice(textStart) });\r\n }\r\n\r\n return tokens;\r\n }\r\n\r\n private toText(property: any): string {\r\n if (typeof property === 'undefined') {\r\n return 'undefined';\r\n }\r\n\r\n if (property === null) {\r\n return 'null';\r\n }\r\n\r\n if (typeof property === 'string') {\r\n return property;\r\n }\r\n\r\n if (typeof property === 'number') {\r\n return property.toString();\r\n }\r\n\r\n if (typeof property === 'boolean') {\r\n return property.toString();\r\n }\r\n\r\n if (typeof property.toISOString === 'function') {\r\n return property.toISOString();\r\n }\r\n\r\n if (typeof property === 'object') {\r\n let s = JSON.stringify(property);\r\n if (s.length > 70) {\r\n s = s.slice(0, 67) + '...';\r\n }\r\n\r\n return s;\r\n }\r\n\r\n return property.toString();\r\n }\r\n\r\n private capture(property: any, destructure?: boolean): Object {\r\n if (typeof property === 'function') {\r\n return property();\r\n }\r\n\r\n if (typeof property === 'object') {\r\n // null value will be automatically stringified as \"null\", in properties it will be as null\r\n // otherwise it will throw an error\r\n if (property === null) {\r\n return property;\r\n }\r\n\r\n // Could use instanceof Date, but this way will be kinder\r\n // to values passed from other contexts...\r\n if (destructure || typeof property.toISOString === 'function') {\r\n return property;\r\n }\r\n\r\n return property.toString();\r\n }\r\n\r\n return property;\r\n }\r\n}\r\n","import { AxiosInstance } from 'axios';\r\nimport { BaseApi } from '../baseApi';\r\nimport { MessageTemplate } from './messageTemplate';\r\nimport { LogLevel, LogMessage } from './types';\r\n\r\nconst baseLogEndpoint = '/v1/logging';\r\n\r\nexport class Log extends BaseApi {\r\n private readonly messageBatch: LogMessage[];\r\n private readonly batchSize: number;\r\n private readonly batchInterval: number;\r\n private readonly maxQueueSize: number;\r\n\r\n private batchTimeout = null;\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false, logBatchSize: number = 100, logBatchInterval: number = 60000) {\r\n super(axiosInstance, consoleLogging);\r\n\r\n this.messageBatch = [];\r\n this.batchSize = logBatchSize;\r\n this.batchInterval = logBatchInterval;\r\n this.maxQueueSize = Math.min(logBatchSize * 10, 1000);\r\n\r\n if (this.batchInterval > 0) {\r\n this.submitMessageBatch(true);\r\n }\r\n }\r\n\r\n flush(): Promise<void> {\r\n return this.submitMessageBatch(false);\r\n }\r\n\r\n fatal(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Critical, template, properties);\r\n }\r\n\r\n error(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Error, template, properties);\r\n }\r\n\r\n warn(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Warning, template, properties);\r\n }\r\n\r\n info(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Information, template, properties);\r\n }\r\n\r\n debug(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Debug, template, properties);\r\n }\r\n\r\n trace(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Trace, template, properties);\r\n }\r\n\r\n private log(level: LogLevel, template: string, properties: any[]): string {\r\n const msg: LogMessage = {\r\n timestamp: new Date().toJSON(),\r\n level: level,\r\n template: template,\r\n properties: properties,\r\n };\r\n\r\n const messageTemplate = new MessageTemplate(msg.template);\r\n const output = messageTemplate.render(messageTemplate.bindProperties(msg.properties));\r\n\r\n if (this.consoleLogging) {\r\n switch (level) {\r\n case LogLevel.Critical:\r\n console.error(output);\r\n break;\r\n\r\n case LogLevel.Error:\r\n console.error(output);\r\n break;\r\n\r\n case LogLevel.Warning:\r\n console.warn(output);\r\n break;\r\n\r\n case LogLevel.Information:\r\n console.info(output);\r\n break;\r\n\r\n case LogLevel.Debug:\r\n console.debug(output);\r\n break;\r\n\r\n case LogLevel.Trace:\r\n console.debug(output);\r\n break;\r\n\r\n default:\r\n console.log(output);\r\n break;\r\n }\r\n }\r\n\r\n if (this.batchSize > 0 || this.batchInterval > 0) {\r\n this.messageBatch.push(msg);\r\n\r\n if (this.batchSize > 0 && this.messageBatch.length >= this.batchSize) {\r\n this.submitMessageBatch(true);\r\n }\r\n }\r\n\r\n return new Date().toISOString() + (' [' + LogLevel[level].toUpperCase() + '] ') + output;\r\n }\r\n\r\n private submitMessageBatch(loop: boolean): Promise<void> {\r\n clearTimeout(this.batchTimeout);\r\n\r\n let promise = Promise.resolve();\r\n\r\n if (this.messageBatch.length) {\r\n const messages = this.messageBatch.splice(0, this.batchSize);\r\n\r\n if (messages.length > 0) {\r\n if (this.consoleLogging) {\r\n console.info('Sending %d log messages in a batch', messages.length);\r\n }\r\n\r\n promise = this.request<void>(baseLogEndpoint, 'POST', messages).catch((_) => {\r\n this.messageBatch.unshift(...messages);\r\n\r\n // Keep the total in the batch small to keep memory low.\r\n if (this.messageBatch.length > this.maxQueueSize) {\r\n this.messageBatch.splice(0, this.messageBatch.length - this.maxQueueSize);\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.warn('Failed to send log messages, the batch size is %d', this.messageBatch.length);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (loop && this.batchInterval > 0) {\r\n this.batchTimeout = setTimeout(() => this.submitMessageBatch(true), this.batchInterval);\r\n }\r\n\r\n return promise;\r\n }\r\n}\r\n","import { Country } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\nimport { IdentityDocumentType } from '../lookups/types';\r\n\r\n/** Model to hold address details. */\r\nexport class Address {\r\n /** Gets the address reference. */\r\n public reference?: string;\r\n /** Gets or sets the type of address the details are referring to. */\r\n public addressType: AddressType;\r\n /** Gets or sets first line of the address (required). */\r\n public addressLine1: string;\r\n /** Gets or sets second line of the address. */\r\n public addressLine2?: string;\r\n /** Gets or sets third line of the address. */\r\n public addressLine3?: string;\r\n /** Gets or sets postal code of the address. */\r\n public postalCode?: string;\r\n /** Gets or sets 3 character ISO country code the address resides in. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets city the address resides in (required). */\r\n public city: string;\r\n /** Gets or sets state/province the address resides in. */\r\n public state?: string;\r\n /** Gets or sets additional location information for the address so that it can be pinned on a map. */\r\n public location?: Location;\r\n /** Gets or sets the description of the address. */\r\n public description?: string;\r\n /** Gets a single-line formatted string of the address. */\r\n public formatted: string;\r\n public isActive: boolean;\r\n}\r\nexport enum AddressType {\r\n MAIN = 'MAIN',\r\n POST = 'POST',\r\n BILL = 'BILL',\r\n SHIP = 'SHIP',\r\n}\r\n/** Model to hold account balance details. */\r\nexport class Balance {\r\n public currency: Currency;\r\n public availableAmountInCents?: number;\r\n public currentAmountInCents?: number;\r\n}\r\nexport enum BankAccountType {\r\n SAVINGS = 'SAVINGS',\r\n CURRENT = 'CURRENT',\r\n FIXED = 'FIXED',\r\n MONEYMARKET = 'MONEYMARKET',\r\n CODA = 'CODA',\r\n}\r\n/** Model to capture generic contact/lead data. */\r\nexport class ContactDetails {\r\n public details: { [key: string]: string };\r\n}\r\nexport class FaceCheckResult {\r\n public faceCount: number;\r\n public containsNoise: boolean;\r\n public isLowQuality: boolean;\r\n public isOverExposed: boolean;\r\n public isUnderExposed: boolean;\r\n public isBlurry: boolean;\r\n public isWearingMask: boolean;\r\n public foreheadNotIncluded: boolean;\r\n public eyesNotIncluded: boolean;\r\n public mouthNotIncluded: boolean;\r\n public faceLeft?: number;\r\n public faceTop?: number;\r\n public faceWidth?: number;\r\n public faceHeight?: number;\r\n public problems: string[];\r\n}\r\n/** Model to hold identification details. */\r\nexport class IdentityDocument {\r\n /** Gets or sets the identification document reference. */\r\n public reference?: string;\r\n /** Gets or sets the type of identification document submitted by the consumer. */\r\n public identityDocumentType: IdentityDocumentType;\r\n /** Gets or sets the 3 character ISO country code where the document was issued. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets the encrypted identification number. */\r\n public identityNumber: string;\r\n /** Gets or sets the place of issuance. */\r\n public placeOfIssuance?: string;\r\n /** Gets or sets the date at which the identification document was issued. */\r\n public effectiveDate?: Date;\r\n /** Gets or sets the date at which the identification document expires. */\r\n public expiryDate?: Date;\r\n}\r\n/** Model to hold location data. */\r\nexport class Location {\r\n /** A latitude value expressed as a 64 bit floating point number (required). */\r\n public latitude: number;\r\n /** A longitude value expressed as a 64 bit floating point number (required). */\r\n public longitude: number;\r\n /** The time zone for this location. */\r\n public timeZone?: string;\r\n /** The description of this location (if available). */\r\n public description?: string;\r\n}\r\nexport class NameAndReference {\r\n public name: string;\r\n public reference: string;\r\n public externalReference: string;\r\n}\r\n/** Model to hold API endpoint and access token for an environment. */\r\nexport class SwitchEnvironmentInfo {\r\n public name: string;\r\n public accessToken: string;\r\n public apiBaseUrl: string;\r\n}\r\n","import { Country } from '../lookups/types';\r\nimport { Gender } from '../lookups/types';\r\nimport { Language } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\nimport { BankAccountType } from '../common/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { LoginCredentials } from '../authentication/types';\r\nimport { IdentityDocument } from '../common/types';\r\nimport { Device } from '../devices/types';\r\nimport { Address } from '../common/types';\r\nimport { CardHolder } from '../payments/types';\r\nimport { ConsumerFileType } from '../lookups/types';\r\nimport { KycProvider } from '../lookups/types';\r\nimport { KycStatus } from '../lookups/types';\r\nimport { KycVerificationType } from '../lookups/types';\r\n\r\n/** Model to hold basic consumer details. */\r\nexport class BasicConsumer {\r\n /** Gets or sets the consumer reference. */\r\n public reference?: string;\r\n /** Gets or sets the consumer external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** Gets or sets the current originator source of the consumer. */\r\n public source: string;\r\n /** Gets the user reference associated with the user. */\r\n public userReference?: string;\r\n /** Gets or sets the first name of the consumer (required). */\r\n public firstName?: string;\r\n /** Gets or sets the last name (surname) of the consumer (required if IdentityNumber is not supplied). */\r\n public lastName?: string;\r\n /** Gets or sets the middle name of the consumer. */\r\n public middleName?: string;\r\n /** Gets or sets the email address for the consumer. */\r\n public emailAddress?: string;\r\n /** Gets or sets the mobile number for the consumer. */\r\n public mobileNumber?: string;\r\n /** Gets or sets 3 character ISO country code the consumer resides in. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets the date of birth of the consumer. */\r\n public dateOfBirth?: Date;\r\n /** Gets or sets the gender of the consumer. */\r\n public gender?: Gender;\r\n /** Gets or sets the language code preference of the consumer. */\r\n public preferredLanguage: Language;\r\n /** Gets the KYC summary status. */\r\n public kycStatusSummary: KycStatusSummary;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold consumer beneficiary details. */\r\nexport class Beneficiary {\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific beneficiary. */\r\n public reference?: string;\r\n /** The beneficiary name. */\r\n public name: string;\r\n /** The contact number for this beneficiary. */\r\n public contactNumber?: string;\r\n /** The date and time of the last transaction made to this beneficiary account. */\r\n public lastTransactionDate?: Date;\r\n /** The amount in cents of the last transaction made to this beneficiary account. */\r\n public lastTransactionAmountInCents?: number;\r\n /** The currency of the last transaction made to this beneficiary account. */\r\n public lastTransactionCurrency?: Currency;\r\n /** A list of bank accounts associated with a beneficiary. */\r\n public bankAccounts: BeneficiaryBankAccount[];\r\n /** A list of mobile wallets associated with a beneficiary. */\r\n public mobileWallets: BeneficiaryMobileWallet[];\r\n /** A list of cards associated with a beneficiary. */\r\n public cards: BeneficiaryCard[];\r\n /** A list of generic accounts (mobile numbers, meter numbers, etc) associated with a beneficiary. */\r\n public genericAccounts: BeneficiaryGenericAccount[];\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a bank account beneficiary. */\r\nexport class BeneficiaryBankAccount {\r\n /** The bank account token that was generated by the system. */\r\n public token?: string;\r\n public accountNumber: string;\r\n /** The bank account type. */\r\n public bankAccountType: BankAccountType;\r\n public bankAccountTypeName: string;\r\n public bank: Bank;\r\n public bankName: string;\r\n /** The branch code associated with the bank which holds the bank account. */\r\n public routingCode?: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a bank account beneficiary. */\r\nexport class BeneficiaryCard {\r\n /** The bank account token that was generated by the system. */\r\n public token?: string;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n /** The name of the card holder as printed on the card. */\r\n public nameOnCard: string;\r\n /** The month in which the card expires. */\r\n public expiryMonth: Month;\r\n /** The year in which the card expires. */\r\n public expiryYear: number;\r\n public cardIssuer: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a beneficiary generic account (mobile number, meter number, etc). */\r\nexport class BeneficiaryGenericAccount {\r\n /** The account number (can be a mobile number, meter number, etc). */\r\n public accountNumber: string;\r\n /** The type of generic account. */\r\n public genericAccountType: GenericAccountType;\r\n public genericAccountTypeName: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a mobile money beneficiary. */\r\nexport class BeneficiaryMobileWallet {\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public mobileWalletOperatorName: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold consumer card settings and preferences. */\r\nexport class CardSettings {\r\n /** Gets or sets a value indicating whether tap to pay functionality is allowed for this card. */\r\n public allowTapToPay: boolean;\r\n /** Gets or sets a value indicating whether a PIN should always be requested for transactions with this card. */\r\n public alwaysAskForPin: boolean;\r\n}\r\n/** Model to hold detailed consumer details. */\r\nexport class Consumer {\r\n /** The date and time this consumer record was created. */\r\n public createdDate: Date;\r\n /** Gets or sets the login credentials that this consumer can use to access their data. */\r\n public loginCredentials?: LoginCredentials;\r\n /** Gets or sets the preferred name of the consumer. */\r\n public preferredName?: string;\r\n /** Gets or sets the full name of a consumer's next of kin. */\r\n public fullNameOfNextOfKin?: string;\r\n /** Gets or sets the contact number for a consumer's next of kin. */\r\n public contactNumberForNextOfKin?: string;\r\n /** Gets or sets an alternate contact number for the consumer. */\r\n public alternateContactNumber?: string;\r\n /** Gets or sets the invitation code for the consumer. */\r\n public invitationCode?: string;\r\n /** Gets or sets a flag to indicate whether registration details have been captured by the consumer themselves. */\r\n public isRegistrationComplete: boolean;\r\n /** Gets or sets a flag to indicate whether the consumer has verified their email address details yet or not. */\r\n public isEmailVerified: boolean;\r\n /** Gets or sets a flag to indicate whether the consumer has verified their mobile number yet or not. */\r\n public isMobileNumberVerified: boolean;\r\n /** Gets the available identification documentation information for the consumer. */\r\n public identityDocuments: IdentityDocument[];\r\n /** Gets a list of KYC lookups related to the consumer. */\r\n public kycLookupResults: KycLookupResult[];\r\n /** Gets a list of files related to the consumer. */\r\n public files: ConsumerFile[];\r\n /** Gets a list of consumer devices. */\r\n public devices: Device[];\r\n /** Gets the list of available addresses for the consumer. */\r\n public addresses: Address[];\r\n /** A collection of available beneficiaries associated with the consumer. */\r\n public beneficiaries: Beneficiary[];\r\n /** A collection of all financial institution accounts associated with the consumer. */\r\n public accounts: ConsumerAccounts;\r\n /** Gets the attributes. */\r\n public attributes: ConsumerAttributeValue[];\r\n public rewardPointsInfo?: RewardPointsInfo;\r\n /** Gets or sets the consumer reference. */\r\n public reference?: string;\r\n /** Gets or sets the consumer external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** Gets or sets the current originator source of the consumer. */\r\n public source: string;\r\n /** Gets the user reference associated with the user. */\r\n public userReference?: string;\r\n /** Gets or sets the first name of the consumer (required). */\r\n public firstName?: string;\r\n /** Gets or sets the last name (surname) of the consumer (required if IdentityNumber is not supplied). */\r\n public lastName?: string;\r\n /** Gets or sets the middle name of the consumer. */\r\n public middleName?: string;\r\n /** Gets or sets the email address for the consumer. */\r\n public emailAddress?: string;\r\n /** Gets or sets the mobile number for the consumer. */\r\n public mobileNumber?: string;\r\n /** Gets or sets 3 character ISO country code the consumer resides in. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets the date of birth of the consumer. */\r\n public dateOfBirth?: Date;\r\n /** Gets or sets the gender of the consumer. */\r\n public gender?: Gender;\r\n /** Gets or sets the language code preference of the consumer. */\r\n public preferredLanguage: Language;\r\n /** Gets the KYC summary status. */\r\n public kycStatusSummary: KycStatusSummary;\r\n public isActive: boolean;\r\n}\r\nexport class ConsumerAccounts {\r\n /** A list of bank accounts associated with a consumer. */\r\n public bankAccounts: ConsumerBankAccount[];\r\n /** A list of mobile money / wallet accounts associated with a consumer. */\r\n public mobileWallets: ConsumerMobileWallet[];\r\n /** A list of loan accounts associated with a consumer. */\r\n public loanAccounts: ConsumerLoanAccount[];\r\n /** A list of insurance policies associated with a consumer. */\r\n public insurancePolicies: ConsumerInsurancePolicy[];\r\n /** A list of generic accounts (mobile numbers, meter numbers, etc) associated with a consumer. */\r\n public genericAccounts: ConsumerGenericAccount[];\r\n /** A list of cards associated with a consumer. */\r\n public cards: ConsumerCard[];\r\n}\r\nexport enum ConsumerAttribute {\r\n VisaPAN = 1,\r\n MasterCardPAN = 2,\r\n RegistrationInvitationCode = 3,\r\n GMoneyWalletNumber = 4,\r\n LinkedGcbBankAccountReferences = 5,\r\n MarketingConsent = 6,\r\n CommunicationOutsideRegularHoursConsent = 7,\r\n PrimarySourceOfFunds = 8,\r\n}\r\n/** Model to hold various attributes about a consumer. */\r\nexport class ConsumerAttributeValue {\r\n public name?: string;\r\n public attribute: ConsumerAttribute;\r\n public value: string;\r\n}\r\nexport class ConsumerBankAccount {\r\n /** The bank account token that was generated by the system. */\r\n public token?: string;\r\n public accountNumber: string;\r\n /** The bank account type. */\r\n public bankAccountType?: BankAccountType;\r\n public bankAccountTypeName?: string;\r\n public bank: Bank;\r\n public bankName: string;\r\n public branchName?: string;\r\n /** The branch code associated with the bank which holds the bank account. */\r\n public routingCode?: string;\r\n public linkedCardReferences: string[];\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the account to the consumer. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerCard {\r\n /** Additional customer information to facilitate the card payment. */\r\n public cardHolder: CardHolder;\r\n /** The card token that was generated by the system. */\r\n public token?: string;\r\n public cardIssuer: string;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n /** The name of the card holder as printed on the card. */\r\n public nameOnCard: string;\r\n /** The month in which the card expires. */\r\n public expiryMonth: Month;\r\n /** The year in which the card expires. */\r\n public expiryYear: number;\r\n /** Gets the list of linked bank account references. */\r\n public linkedBankAccountReferences: string[];\r\n /** Gets or sets the card settings and preferences. */\r\n public settings?: CardSettings;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the account to the consumer. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerFile {\r\n public fileType: ConsumerFileType;\r\n public kycResults: KycFileResult[];\r\n public reference?: string;\r\n public yourReference?: string;\r\n public fileName: string;\r\n public mimeType: string;\r\n public base64Data?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a generic account (mobile number, meter number, etc). */\r\nexport class ConsumerGenericAccount {\r\n /** The account number (can be a mobile number, meter number, etc). */\r\n public accountNumber: string;\r\n /** The type of generic account. */\r\n public genericAccountType: GenericAccountType;\r\n public genericAccountTypeName: string;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the account to the consumer. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerInsurancePolicy {\r\n public policyNumber: string;\r\n public coverAmountInCents: number;\r\n public premiumAmountInCents: number;\r\n public description?: string;\r\n public beneficiaryName?: string;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the account to the consumer. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerLoanAccount {\r\n public contractNumber: string;\r\n public originalCapitalInCents: number;\r\n public settlementAmountInCents: number;\r\n public outstandingBalanceInCents: number;\r\n public installmentAmountInCents: number;\r\n public arrearsAmountInCents: number;\r\n public installmentsRemaining: number;\r\n public annualInterestRatePercentage: number;\r\n public nextInstallmentDate: Date;\r\n public startDate: Date;\r\n public endDate: Date;\r\n /** Whether the loan is currently in arrears (past due). */\r\n public isInArrears: boolean;\r\n /** Whether the loan has been fully paid. */\r\n public isFullyPaid: boolean;\r\n /** Percentage of loan that has been repaid. */\r\n public repaymentPercentage: number;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the account to the consumer. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerMobileWallet {\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the account to the consumer. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class Feedback {\r\n public description?: string;\r\n}\r\nexport enum GenericAccountType {\r\n None = 'None',\r\n MobileNumber = 'MobileNumber',\r\n WaterMeter = 'WaterMeter',\r\n ElectricityMeter = 'ElectricityMeter',\r\n PayShap = 'PayShap',\r\n DStv = 'DStv',\r\n EasyPay = 'EasyPay',\r\n}\r\n/** The KYC file result. */\r\nexport class KycFileResult {\r\n /** Gets or sets the unique identifier for the KYC service provider used to retrieve the consumer KYC data. */\r\n public provider: KycProvider;\r\n /** Gets or sets the status of the particular KYC verification. */\r\n public status: KycStatus;\r\n /** Gets or sets the consumer KYC verification type. */\r\n public verificationType: KycVerificationType;\r\n /** Gets or sets the KYC provider reference associated with the KYC Lookup. */\r\n public providerReference?: string;\r\n /** Gets the created date of the KYC lookup result. */\r\n public createdDate: Date;\r\n /** Gets or sets the last date and time of when the KYC data was updated. */\r\n public lastUpdatedDate?: Date;\r\n}\r\n/** The KYC lookup result. */\r\nexport class KycLookupResult {\r\n /** Gets or sets the unique identifier for the KYC service provider used to retrieve the consumer KYC data. */\r\n public provider: KycProvider;\r\n /** Gets or sets the status of the particular KYC verification. */\r\n public status: KycStatus;\r\n /** Gets or sets the consumer KYC verification type. */\r\n public verificationType: KycVerificationType;\r\n /** Gets or sets the KYC provider reference associated with the KYC Lookup. */\r\n public providerReference?: string;\r\n /** Gets the created date of the KYC lookup result. */\r\n public createdDate: Date;\r\n /** Gets or sets the last date and time of when the KYC data was updated. */\r\n public lastUpdatedDate?: Date;\r\n}\r\nexport enum KycStatusSummary {\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n Rejected = 'Rejected',\r\n}\r\n/** Model to hold consumer message details. */\r\nexport class Message {\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific message. */\r\n public reference?: string;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer. */\r\n public consumerReference: string;\r\n /** A short text string which briefly summarizes the message details. */\r\n public messageSummary: string;\r\n /** The full consumer message text. */\r\n public messageDetail: string;\r\n /** The date and time this consumer message was created. */\r\n public createdDate: Date;\r\n /** A flag indicating whether the message has been deleted or not. */\r\n public isDeleted: boolean;\r\n}\r\nexport class RewardPointsInfo {\r\n public pointsBalance: number;\r\n public rewardTier: number;\r\n public creditTransactionCount: number;\r\n}\r\n/** Request to stop a consumer card. */\r\nexport class StopCardRequest {\r\n /** The card reference to stop. */\r\n public cardReference?: string;\r\n /** The reason for stopping the card. */\r\n public reason?: string;\r\n}\r\n","export class Device {\r\n public createdDate: Date;\r\n public lastUsedDate?: Date;\r\n public reference?: string;\r\n public yourReference?: string;\r\n public platform: DevicePlatform;\r\n public deviceType?: string;\r\n public brand?: string;\r\n public model?: string;\r\n public serialNumber?: string;\r\n public operatingSystemVersion?: string;\r\n public softwareVersion?: string;\r\n public pushNotificationToken?: string;\r\n}\r\nexport enum DevicePlatform {\r\n Unknown = 'Unknown',\r\n Android = 'Android',\r\n iOS = 'iOS',\r\n Web = 'Web',\r\n}\r\n","import { MerchantCategory } from '../lookups/types';\r\nimport { Country } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\nimport { LoginCredentials } from '../authentication/types';\r\nimport { Gender } from '../lookups/types';\r\nimport { Address } from '../common/types';\r\nimport { IdentityDocument } from '../common/types';\r\nimport { KybProvider } from '../lookups/types';\r\nimport { KybStatus } from '../lookups/types';\r\nimport { Language } from '../lookups/types';\r\nimport { Device } from '../devices/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { MerchantFileType } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { ProductType } from '../lookups/types';\r\nimport { DayOfWeek } from '../lookups/types';\r\nimport { DevicePlatform } from '../devices/types';\r\nimport { QrCodeType } from '../lookups/types';\r\n\r\nexport class AdditionalTerminalReference {\r\n public terminalType: TerminalType;\r\n public reference: string;\r\n}\r\nexport class BasicEmployee {\r\n public reference?: string;\r\n public yourReference?: string;\r\n public title?: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public employeeNumber: number;\r\n public passcode?: string;\r\n public isActive: boolean;\r\n public posPermissions: PosPermissions;\r\n}\r\nexport class BasicMerchant {\r\n public reference?: string;\r\n public userReference?: string;\r\n public yourReference?: string;\r\n public source: string;\r\n public name: string;\r\n public categoryCode: MerchantCategory;\r\n public category: string;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public countryIsoCode: Country;\r\n public currency: Currency;\r\n public kybStatusSummary: KybStatusSummary;\r\n public shortCode?: number;\r\n public isActive: boolean;\r\n}\r\nexport class Business {\r\n public reference?: string;\r\n public parentBusinessReference?: string;\r\n public createdDate: Date;\r\n public yourReference?: string;\r\n public source: string;\r\n public name: string;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public phoneNumber?: string;\r\n public isEmailVerified: boolean;\r\n public isMobileNumberVerified: boolean;\r\n public isActive: boolean;\r\n}\r\nexport class Employee {\r\n public createdDate: Date;\r\n public loginCredentials?: LoginCredentials;\r\n public userReference?: string;\r\n public isOwner: boolean;\r\n public dateOfBirth?: Date;\r\n public gender?: Gender;\r\n public countryIsoCode?: Country;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public profileImage?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n public notificationSettings: EmployeeNotificationEventSetting[];\r\n public addresses: Address[];\r\n public identityDocuments: IdentityDocument[];\r\n public reference?: string;\r\n public yourReference?: string;\r\n public title?: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public employeeNumber: number;\r\n public passcode?: string;\r\n public isActive: boolean;\r\n public posPermissions: PosPermissions;\r\n}\r\nexport enum EmployeeNotificationEvent {\r\n PaymentSuccessful = 1,\r\n PaymentFailed = 2,\r\n}\r\nexport class EmployeeNotificationEventSetting {\r\n public event: EmployeeNotificationEvent;\r\n public description: string;\r\n public sendEmail: boolean;\r\n public sendSms: boolean;\r\n public terminalReferences: string[];\r\n}\r\nexport enum FuelPurchaseMethod {\r\n ByAmount = 'ByAmount',\r\n ByQuantity = 'ByQuantity',\r\n ByAmountAndQuantity = 'ByAmountAndQuantity',\r\n}\r\nexport class HostedPaymentOptions {\r\n public cardNotPresentMID?: number;\r\n public isVisaEnabled: boolean;\r\n public isMastercardEnabled: boolean;\r\n public isAmericanExpressEnabled: boolean;\r\n public isDinersEnabled: boolean;\r\n public settlementTime: SettlementTime;\r\n}\r\nexport enum Industry {\r\n None = 'None',\r\n Retail = 'Retail',\r\n Restaurant = 'Restaurant',\r\n Forecourt = 'Forecourt',\r\n Workshop = 'Workshop',\r\n}\r\nexport class KybFileResult {\r\n public provider: KybProvider;\r\n public status: KybStatus;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n}\r\nexport enum KybStatusSummary {\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n PartiallyVerified = 'PartiallyVerified',\r\n Rejected = 'Rejected',\r\n}\r\nexport class Merchant {\r\n public createdDate: Date;\r\n public loginCredentials?: LoginCredentials;\r\n public tradingName?: string;\r\n public franchiseName?: string;\r\n public capturedBy?: string;\r\n public capturedFrom?: string;\r\n public industry: Industry;\r\n public phoneNumber?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n public city?: string;\r\n public state?: string;\r\n public languageIsoCode: Language;\r\n public webSiteUrl?: string;\r\n public isRegistrationComplete: boolean;\r\n public isEmailVerified: boolean;\r\n public isMobileNumberVerified: boolean;\r\n public vCard?: string;\r\n public logoImage?: string;\r\n public taxNumber?: string;\r\n public companyRegistrationNumber?: string;\r\n public companyRegistrationDate?: Date;\r\n public adminPasscode?: string;\r\n public logoUrl?: string;\r\n public hostedPaymentUrl?: string;\r\n public hostedPaymentOptions?: HostedPaymentOptions;\r\n public posOptions?: PosOptions;\r\n public business?: Business;\r\n public addresses: Address[];\r\n public employees: Employee[];\r\n public terminals: Terminal[];\r\n public files: MerchantFile[];\r\n public notificationSettings: MerchantNotificationEventSetting[];\r\n public attributes: MerchantAttributeValue[];\r\n public bankAccounts: MerchantBankAccount[];\r\n public mobileWallets: MerchantMobileWallet[];\r\n public operatingTimes: OperatingTime[];\r\n public devices: Device[];\r\n public qrCodes: MerchantQrCode[];\r\n public reference?: string;\r\n public userReference?: string;\r\n public yourReference?: string;\r\n public source: string;\r\n public name: string;\r\n public categoryCode: MerchantCategory;\r\n public category: string;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public countryIsoCode: Country;\r\n public currency: Currency;\r\n public kybStatusSummary: KybStatusSummary;\r\n public shortCode?: number;\r\n public isActive: boolean;\r\n}\r\nexport enum MerchantAttribute {\r\n GhIPSSMerchantId = 2,\r\n VisaPAN = 3,\r\n MasterCardPAN = 4,\r\n NIBSSMerchantReference = 6,\r\n}\r\n/** Model to hold various attributes about a merchant. */\r\nexport class MerchantAttributeValue {\r\n public name: string;\r\n public attribute: MerchantAttribute;\r\n public value: string;\r\n}\r\nexport class MerchantBankAccount {\r\n public reference?: string;\r\n public createdDateUtc: Date;\r\n public accountNumber: string;\r\n public bank: Bank;\r\n public currency: Currency;\r\n public accountName?: string;\r\n public branchName?: string;\r\n /** The branch code associated with the bank which holds the bank account. */\r\n public routingCode?: string;\r\n /**\r\n * Can be set to True when creating a brand new Merchant to indicate that default settlement rules should be created for the bank account or when editing a Merchant if HasSettlementRules = FALSE.\r\n * Attempting to set this property to FALSE if HasSettlementRules = TRUE has no effect because currently the only way to delete or disable settlement rules is via direct database access.\r\n */\r\n public isSettlement: boolean;\r\n /** This property will be set to TRUE if default settlement rules have been created for this bank account in the database. */\r\n public hasSettlementRules: boolean;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantFile {\r\n public fileType: MerchantFileType;\r\n public kybResults: KybFileResult[];\r\n public reference?: string;\r\n public yourReference?: string;\r\n public fileName: string;\r\n public mimeType: string;\r\n public base64Data?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantLoginCredentials {\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n /** Gets or sets the username (required). */\r\n public username: string;\r\n /** Gets or sets the password (required). */\r\n public password: string;\r\n /** Indicates whether the user is locked out. */\r\n public isLockedOut: boolean;\r\n /** Gets the reason (if any) of why the user has been locked out. */\r\n public reasonForLockout?: string;\r\n}\r\nexport class MerchantMobileWallet {\r\n public reference?: string;\r\n public msisdn: string;\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public currency: Currency;\r\n public accountName?: string;\r\n /**\r\n * Can be set to True when creating a brand new Merchant to indicate that default settlement rules should be created for the mobile wallet or when editing a Merchant if HasSettlementRules = FALSE.\r\n * Attempting to set this property to FALSE if HasSettlementRules = TRUE has no effect because currently the only way to delete or disable settlement rules is via direct database access.\r\n */\r\n public isSettlement: boolean;\r\n /** This property will be set to TRUE if default settlement rules have been created for this mobile wallet in the database. */\r\n public hasSettlementRules: boolean;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantNameVerificationRequest {\r\n public merchantName: string;\r\n}\r\nexport class MerchantNameVerificationResponse {\r\n public accessToken?: string;\r\n}\r\nexport enum MerchantNotificationEvent {\r\n PaymentSuccessful = 1,\r\n PaymentFailed = 2,\r\n SettlementConfirmation = 3,\r\n}\r\nexport class MerchantNotificationEventSetting {\r\n public event: MerchantNotificationEvent;\r\n public description: string;\r\n public sendEmail: boolean;\r\n public sendSms: boolean;\r\n public terminalReferences: string[];\r\n}\r\nexport class MerchantProduct {\r\n public reference?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public yourReference?: string;\r\n public name: string;\r\n public description?: string;\r\n public unitLabel?: string;\r\n public productType: ProductType;\r\n public currency: Currency;\r\n public amountInCents?: number;\r\n public maximumAmountInCents?: number;\r\n public futureAmountInCents?: number;\r\n public futureAmountEffectiveFromDate?: Date;\r\n public fullAmountRequired: boolean;\r\n public quantityRequired: boolean;\r\n public isActive: boolean;\r\n public fields: MerchantProductField[];\r\n}\r\nexport class MerchantProductCatalog {\r\n public reference?: string;\r\n public industry: Industry;\r\n public name: string;\r\n public description?: string;\r\n public isActive: boolean;\r\n public products: MerchantProduct[];\r\n}\r\nexport class MerchantProductField {\r\n public key: string;\r\n public name: string;\r\n public isRequired: boolean;\r\n public isAccountKey: boolean;\r\n public validationRegex?: string;\r\n public selectionItems: MerchantProductFieldSelectionItem[];\r\n}\r\nexport class MerchantProductFieldSelectionItem {\r\n public label: string;\r\n public value: string;\r\n}\r\nexport class MerchantQrCode {\r\n public reference?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public name: string;\r\n public shortUrl: string;\r\n public fullUrl: string;\r\n public label?: string;\r\n public notes?: string;\r\n public options: MerchantQrCodeOptions;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantQrCodeOptions {\r\n public amountInCents: number;\r\n public isAmountEditable: boolean;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public splitReference?: string;\r\n public isQrCode: boolean;\r\n public currency?: Currency;\r\n public currencySymbol: string;\r\n public feePercentage: number;\r\n public enableCustomReference: boolean;\r\n public enableTip: boolean;\r\n public enableRating: boolean;\r\n public redirectUrl?: string;\r\n public notificationEmailAddresses: string[];\r\n public notificationMobileNumbers: string[];\r\n public metaData: { [key: string]: string };\r\n public clientData: { [key: string]: string };\r\n}\r\nexport class OperatingTime {\r\n public reference?: string;\r\n public dayOfWeek: DayOfWeek;\r\n public fromTime: string;\r\n public toTime: string;\r\n}\r\nexport class PosOptions {\r\n public isRefundsEnabled: boolean;\r\n public isCancellationsEnabled: boolean;\r\n public isPurchaseWithCashbackEnabled: boolean;\r\n public isWithdrawalsEnabled: boolean;\r\n public isBalanceCheckEnabled: boolean;\r\n public isCurrencyConversionEnabled: boolean;\r\n public isRcsPaymentEnabled: boolean;\r\n public isDebiCheckEnabled: boolean;\r\n public isPreAuthorizationEnabled: boolean;\r\n public isManualCardEntryEnabled: boolean;\r\n public isInvoiceNumberEnabled: boolean;\r\n public isPasscodeAlwaysRequired: boolean;\r\n public fuelPurchaseMethod: FuelPurchaseMethod;\r\n}\r\nexport class PosPermissions {\r\n public canCreateUsers: boolean;\r\n public canProcessRefunds: boolean;\r\n public canCloseAndAccessBatchReports: boolean;\r\n public canEditDeviceSettings: boolean;\r\n public canExceedMaximumSaleLimits: boolean;\r\n public canProcessCashWithdrawals: boolean;\r\n public canProcessCashDeposit: boolean;\r\n public canUseBalanceEnquiry: boolean;\r\n public canUseDebiCheck: boolean;\r\n public canUseManualCardEntry: boolean;\r\n public canProcessCancellations: boolean;\r\n public canProcessDepositsAndReversals: boolean;\r\n public canUsePreAuthorisation: boolean;\r\n public canUseIncrementalAuthorisation: boolean;\r\n public canOverrideAuthorisation: boolean;\r\n public canCancelAuthorisation: boolean;\r\n public canCompleteAuthorisation: boolean;\r\n public canAccessReports: boolean;\r\n}\r\nexport enum SettlementTime {\r\n None = 'None',\r\n IntraDay = 'IntraDay',\r\n EndOfDay = 'EndOfDay',\r\n TPlusOne = 'TPlusOne',\r\n TPlusTwo = 'TPlusTwo',\r\n TPlusThree = 'TPlusThree',\r\n TPlusSeven = 'TPlusSeven',\r\n}\r\nexport class Terminal {\r\n public reference?: string;\r\n public yourReference?: string;\r\n public device?: Device;\r\n public createdDate: Date;\r\n public name: string;\r\n public hostedPaymentUrl?: string;\r\n public isActive: boolean;\r\n public isLinked: boolean;\r\n /**\r\n * The list of all QR codes associated with the Terminal including QR codes that originated in external systems and QR codes generated in this system (V2QR).\r\n * V2QR codes are not stored in the database, they are generated on-the-fly every time Merchant details are retrieved, and are added to this collection at that time.\r\n */\r\n public qrCodes: TerminalQrCode[];\r\n /**\r\n * A list of QR codes that originated in external systems that are associated with the Terminal.\r\n * These QR codes are stored in the database when a Merchant is registered with an external Merchant management system and QR codes are supplied by that external system.\r\n */\r\n public externalQrCodes: TerminalQrCode[];\r\n public notificationTokens: TerminalNotificationToken[];\r\n public additionalReferences: AdditionalTerminalReference[];\r\n}\r\nexport class TerminalConfiguration {\r\n public merchant: BasicMerchant;\r\n public industry: Industry;\r\n public primaryAddress?: Address;\r\n public merchantId: number;\r\n public terminalId: number;\r\n public posMerchantId?: string;\r\n public posTerminalId?: string;\r\n public terminalReference: string;\r\n public accessToken: string;\r\n public adminPasscode: string;\r\n public hostedPaymentUrl: string;\r\n public posOptions: PosOptions;\r\n public features: TerminalFeatures;\r\n public employees: BasicEmployee[];\r\n}\r\nexport class TerminalFeatures {\r\n public isQrCodeEnabled: boolean;\r\n public isCardEnabled: boolean;\r\n public isCashEnabled: boolean;\r\n public isMobileMoneyEnabled: boolean;\r\n}\r\nexport class TerminalNotificationToken {\r\n public reference?: string;\r\n public token: string;\r\n public platform: DevicePlatform;\r\n}\r\nexport class TerminalPaymentQrCodes {\r\n public zapperQrCodeBase64?: string;\r\n public snapScanQrCodeBase64?: string;\r\n public vantagePayQrCodeBase64?: string;\r\n public mtnMoMoQrCodeBase64?: string;\r\n}\r\nexport class TerminalPaymentQrCodeUrls {\r\n public zapperQrCodeUrl?: string;\r\n public snapScanQrCodeUrl?: string;\r\n public vantagePayQrCodeUrl?: string;\r\n public mtnMoMoQrCodeUrl?: string;\r\n}\r\nexport class TerminalQrCode {\r\n public qrCodeType: QrCodeType;\r\n public qrCode: string;\r\n}\r\nexport class TerminalSetup {\r\n public qrCodeBase64: string;\r\n public checkAccessToken: string;\r\n public doesTerminalExist: boolean;\r\n public isTerminalActive: boolean;\r\n public isTerminalLinked: boolean;\r\n}\r\nexport enum TerminalType {\r\n None = 'None',\r\n GHIPPS = 'GHIPPS',\r\n NIBSS = 'NIBSS',\r\n PAX = 'PAX',\r\n Verifone = 'Verifone',\r\n}\r\nexport class CategoryDetails {\r\n public type: string;\r\n public merchants: MerchantDetail[];\r\n}\r\nexport class MerchantDetail {\r\n public name: string;\r\n public products: ProductDetail[];\r\n}\r\nexport class ProductDetail {\r\n public reference: string;\r\n public name: string;\r\n public description?: string;\r\n public unitLabel?: string;\r\n public amountInCents: number;\r\n public futureAmountInCents: number;\r\n public futureAmountEffectiveFromDate?: Date;\r\n public fullAmountRequired: boolean;\r\n public quantityRequired: boolean;\r\n public fields: MerchantProductField[];\r\n}\r\n","import { BaseApi } from '../baseApi';\r\n\r\nconst basePingEndpoint = '/v1/ping';\r\n\r\nexport class System extends BaseApi {\r\n async ping(): Promise<void> {\r\n return this.request<void>(basePingEndpoint, 'GET');\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi';\r\n\r\nconst baseContentEndpoint = '/v1/content';\r\n\r\nexport class Content extends BaseApi {\r\n private clientContentCache: any;\r\n private contactDetailsCache: any;\r\n\r\n async getClientContent(): Promise<any> {\r\n if (!this.clientContentCache) {\r\n this.clientContentCache = await this.request<any>(baseContentEndpoint, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.clientContentCache || null);\r\n }\r\n\r\n async getContactDetails(): Promise<any> {\r\n if (!this.contactDetailsCache) {\r\n this.contactDetailsCache = await this.request<any>(`${baseContentEndpoint}/contact-details`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.contactDetailsCache || null);\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport { Currency } from '../lookups/types';\r\nimport { TransactionDetailsByDayResponse, TransactionDetailsResponse, TransactionMonthSummaryResponse } from './types';\r\n\r\nconst baseTransactionReportsEndpoint = '/v1/reports/transactions';\r\n\r\nexport class Reports extends BaseApi {\r\n private dailyTransactionCache = new Map<string, TransactionDetailsByDayResponse[]>();\r\n\r\n async getRecentTransactions(limit: number = 5, successfulOnly: boolean = false): Promise<TransactionDetailsResponse[]> {\r\n return this.request<TransactionDetailsResponse[]>(`${baseTransactionReportsEndpoint}/recent?limit=${limit}&successfulOnly=${successfulOnly}`, 'GET');\r\n }\r\n\r\n async getTransactionSummary(currency: Currency): Promise<TransactionMonthSummaryResponse> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n return this.request<TransactionMonthSummaryResponse>(`${baseTransactionReportsEndpoint}/summary?currency=${currencyIsoCode}`, 'GET');\r\n }\r\n\r\n async getAllTransactionDetails(currency: Currency, dateFrom?: string, dateTo?: string): Promise<TransactionDetailsResponse[]> {\r\n const dailyTransactions = await this.getDailyTransactions(currency, dateFrom, dateTo);\r\n return dailyTransactions\r\n .flatMap((day) => day.paymentDetails)\r\n .sort((a, b) => new Date(b.transactionCompletedDate).getTime() - new Date(a.transactionCompletedDate).getTime());\r\n }\r\n\r\n async getDailyTransactions(currency: Currency, dateFrom?: string, dateTo?: string): Promise<TransactionDetailsByDayResponse[]> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n if (!dateFrom || !dateTo) {\r\n return this.request<TransactionDetailsByDayResponse[]>(\r\n `${baseTransactionReportsEndpoint}/daily?currency=${currencyIsoCode}&dateFrom=${dateFrom || ''}&dateTo=${dateTo || ''}`,\r\n 'GET',\r\n );\r\n }\r\n\r\n let cachedData = this.dailyTransactionCache.get(currencyIsoCode) || [];\r\n\r\n let fetchFrom = dateFrom;\r\n const fetchTo = dateTo;\r\n let needsFetch = true;\r\n\r\n // Helper to normalize date to YYYY-MM-DD string for comparison\r\n // We use ISO string (UTC) to ensure consistent comparison between input strings and Date objects\r\n const toDateStr = (d: Date | string) => {\r\n if (typeof d === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(d)) return d;\r\n return new Date(d).toISOString().split('T')[0];\r\n };\r\n\r\n const todayStr = toDateStr(new Date());\r\n\r\n // Sort cached data by date\r\n cachedData.sort((a: any, b: any) => new Date(a.date).getTime() - new Date(b.date).getTime());\r\n\r\n if (cachedData.length > 0) {\r\n const lastCachedItem = cachedData[cachedData.length - 1];\r\n const firstCachedItem = cachedData[0];\r\n\r\n const reqStartStr = toDateStr(dateFrom);\r\n const reqEndStr = toDateStr(dateTo);\r\n const firstCachedStr = toDateStr(firstCachedItem.date);\r\n const lastCachedStr = toDateStr(lastCachedItem.date);\r\n\r\n // Check if request is fully inside cache range\r\n const isInsideCache = reqStartStr >= firstCachedStr && reqEndStr <= lastCachedStr;\r\n\r\n // Check if request includes today (or future dates)\r\n const includesToday = reqEndStr >= todayStr;\r\n\r\n if (isInsideCache && !includesToday) {\r\n // Fully cached and historical.\r\n needsFetch = false;\r\n } else if (isInsideCache && includesToday) {\r\n // Inside cache range, but includes today which is active/unstable.\r\n // Force refresh starting from today.\r\n fetchFrom = todayStr;\r\n needsFetch = true;\r\n } else if (reqStartStr >= firstCachedStr && reqEndStr > lastCachedStr) {\r\n // Extends into future beyond cache.\r\n // Fetch from the last cached date to ensure continuity and refresh the edge.\r\n fetchFrom = lastCachedStr;\r\n needsFetch = true;\r\n }\r\n // Disjoint or before cache, fetch full range (default).\r\n }\r\n\r\n if (needsFetch) {\r\n const newData = await this.request<TransactionDetailsByDayResponse[]>(\r\n `${baseTransactionReportsEndpoint}/daily?currency=${currencyIsoCode}&dateFrom=${fetchFrom || ''}&dateTo=${fetchTo || ''}`,\r\n 'GET',\r\n );\r\n\r\n // Merge newData into cachedData, deduplicating by date\r\n const dataMap = new Map<string, TransactionDetailsByDayResponse>();\r\n cachedData.forEach((item: any) => dataMap.set(toDateStr(item.date), item));\r\n newData.forEach((item: any) => dataMap.set(toDateStr(item.date), item));\r\n\r\n cachedData = Array.from(dataMap.values());\r\n this.dailyTransactionCache.set(currencyIsoCode, cachedData);\r\n }\r\n\r\n // Return filtered view\r\n const resultStartStr = toDateStr(dateFrom);\r\n const resultEndStr = toDateStr(dateTo);\r\n\r\n return cachedData\r\n .filter((item: any) => {\r\n const itemDateStr = toDateStr(item.date);\r\n return itemDateStr >= resultStartStr && itemDateStr <= resultEndStr;\r\n })\r\n .sort((a: any, b: any) => new Date(a.date).getTime() - new Date(b.date).getTime());\r\n }\r\n}\r\n","import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';\r\nimport axiosRetry from 'axios-retry';\r\nimport axiosAuthRefresh from 'axios-auth-refresh';\r\nimport PubSub from 'pubsub-js';\r\nimport ApiTokens from './apiTokens';\r\nimport {\r\n OnApiRetry,\r\n OnAutomaticRefresh,\r\n OnComplete3DSecure,\r\n OnPaymentComplete,\r\n OnPaymentStatusUpdate,\r\n OnRequires3DSecure,\r\n OnRequiresAddress,\r\n OnRequiresConfirmation,\r\n OnRequiresPin,\r\n OnSessionExpired,\r\n OnSessionStarted,\r\n} from './eventTypes';\r\nimport { ApiConfig } from './apiConfig';\r\nimport { Authentication } from './authentication';\r\nimport { Lookups } from './lookups';\r\nimport { Payments } from './payments';\r\nimport { Consumers } from './consumers';\r\nimport { QrCodes } from './qr';\r\nimport { Merchants } from './merchants';\r\nimport { Log } from './log';\r\nimport { System } from './system';\r\nimport { Content } from './content/index';\r\nimport { Reports } from './reports/index';\r\n\r\nconst DevelopmentApi = 'http://localhost:5000';\r\nconst LogSeparator = '-'.repeat(120);\r\n\r\nexport * from './authentication/types';\r\nexport * from './common/types';\r\nexport * from './consumers/types';\r\nexport * from './devices/types';\r\nexport * from './log/types';\r\nexport * from './lookups/types';\r\nexport * from './merchants/types';\r\nexport * from './payments/types';\r\nexport * from './reports/types';\r\nexport * from './tokens/types';\r\n\r\nexport * from './eventTypes';\r\nexport * from './apiError';\r\nexport * from './apiConfig';\r\nexport { default as ApiTokens } from './apiTokens';\r\n\r\nexport class VantagePay {\r\n // Static event symbol exports\r\n static OnSessionStarted = OnSessionStarted;\r\n static OnSessionExpired = OnSessionExpired;\r\n static OnAutomaticRefresh = OnAutomaticRefresh;\r\n static OnApiRetry = OnApiRetry;\r\n static OnPaymentStatusUpdate = OnPaymentStatusUpdate;\r\n static OnPaymentComplete = OnPaymentComplete;\r\n static OnRequires3DSecure = OnRequires3DSecure;\r\n static OnRequiresPin = OnRequiresPin;\r\n static OnRequiresConfirmation = OnRequiresConfirmation;\r\n static OnRequiresAddress = OnRequiresAddress;\r\n static OnComplete3DSecure = OnComplete3DSecure;\r\n\r\n private readonly baseUrl: string;\r\n private readonly consoleLogging: boolean;\r\n private readonly logBatchSize: number;\r\n private readonly logBatchInterval: number;\r\n private readonly axiosInstance: AxiosInstance;\r\n private readonly abortController: AbortController;\r\n\r\n public readonly events = PubSub;\r\n public readonly system: System;\r\n public readonly content: Content;\r\n public readonly log: Log;\r\n public readonly auth: Authentication;\r\n public readonly consumers: Consumers;\r\n public readonly merchants: Merchants;\r\n public readonly lookups: Lookups;\r\n public readonly payments: Payments;\r\n public readonly qrCodes: QrCodes;\r\n public readonly reports: Reports;\r\n\r\n constructor(config: ApiConfig) {\r\n this.baseUrl = (config.baseUrl || DevelopmentApi).replace(/\\/+$/, '');\r\n\r\n this.abortController = new AbortController();\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: this.baseUrl,\r\n timeout: 0,\r\n signal: this.abortController.signal,\r\n headers: {\r\n ...config.headers,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Accept-Language': config.language || 'en',\r\n },\r\n });\r\n\r\n axiosAuthRefresh(this.axiosInstance, async (failedRequest) => {\r\n const refreshUrl = '/v1/auth/refresh';\r\n\r\n if (failedRequest.request.path === refreshUrl) {\r\n return Promise.reject(failedRequest);\r\n }\r\n\r\n if (ApiTokens.refreshToken) {\r\n try {\r\n let config: AxiosRequestConfig<any> = {\r\n method: 'POST',\r\n url: refreshUrl,\r\n headers: { Authorization: 'Bearer ' + ApiTokens.refreshToken },\r\n //@ts-ignore\r\n skipAuthRefresh: true,\r\n };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n' + LogSeparator);\r\n console.debug('-- AUTO REFRESH --');\r\n console.debug(LogSeparator);\r\n console.debug(`${config.method}: ${this.baseUrl}${config.url}`);\r\n console.debug(LogSeparator);\r\n\r\n if (config.headers) {\r\n console.debug('-- HEADERS --');\r\n console.dir(config.headers);\r\n }\r\n\r\n if (config.data) {\r\n console.debug('-- REQUEST --');\r\n console.dir(config.data, { depth: null });\r\n }\r\n }\r\n\r\n const refreshResponse = await this.axiosInstance(config);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n-- RESPONSE --');\r\n console.dir(refreshResponse.data, { depth: null });\r\n console.debug(LogSeparator);\r\n }\r\n\r\n if (refreshResponse.data && refreshResponse.data.success) {\r\n ApiTokens.accessToken = refreshResponse.data.result.accessToken;\r\n ApiTokens.refreshToken = refreshResponse.data.result.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnAutomaticRefresh --');\r\n console.dir(refreshResponse.data.result, { depth: null });\r\n }\r\n\r\n this.events.publish(OnAutomaticRefresh, refreshResponse.data.result);\r\n\r\n if (failedRequest) {\r\n failedRequest.response.config.headers['Authorization'] = 'Bearer ' + ApiTokens.accessToken;\r\n }\r\n\r\n return Promise.resolve(failedRequest);\r\n } else {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n }\r\n } catch (error) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n throw error;\r\n }\r\n } else if (ApiTokens.accessToken) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n }\r\n\r\n return Promise.reject(failedRequest);\r\n });\r\n\r\n axiosRetry(this.axiosInstance, {\r\n retries: config.retries || 3,\r\n retryDelay: axiosRetry.exponentialDelay,\r\n onRetry: (retryCount, error, _) => {\r\n if (this.consoleLogging) {\r\n console.error('-- RETRY ' + retryCount + ' --\\r\\n', error);\r\n }\r\n\r\n const signalData = { retryCount: retryCount };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnApiRetry --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnApiRetry, signalData);\r\n },\r\n });\r\n\r\n this.consoleLogging = config.consoleLogging || false;\r\n this.logBatchSize = config.logBatchSize || 100;\r\n this.logBatchInterval = config.logBatchInterval || 60000;\r\n\r\n this.system = new System(this.axiosInstance, this.consoleLogging);\r\n this.content = new Content(this.axiosInstance, this.consoleLogging);\r\n this.log = new Log(this.axiosInstance, this.consoleLogging, this.logBatchSize, this.logBatchInterval);\r\n this.auth = new Authentication(this.axiosInstance, this.consoleLogging);\r\n this.consumers = new Consumers(this.axiosInstance, this.consoleLogging);\r\n this.merchants = new Merchants(this.axiosInstance, this.consoleLogging);\r\n this.lookups = new Lookups(this.axiosInstance, this.consoleLogging);\r\n this.payments = new Payments(this.axiosInstance, this.consoleLogging);\r\n this.qrCodes = new QrCodes(this.axiosInstance, this.consoleLogging);\r\n this.reports = new Reports(this.axiosInstance, this.consoleLogging);\r\n\r\n if (this.consoleLogging) {\r\n // console.dir is not functional in certain environments so replace it with a general JSON logger.\r\n if (console.dir === undefined || (typeof navigator !== 'undefined' && navigator.product === 'ReactNative')) {\r\n console.dir = (json: any) => console.debug(JSON.stringify(json, null, 2));\r\n }\r\n }\r\n }\r\n\r\n public async close(): Promise<void> {\r\n if (this.consoleLogging) {\r\n console.info('Flush and clear the logs...');\r\n }\r\n await this.log.flush();\r\n\r\n if (this.consoleLogging) {\r\n console.info('Stopping payment status checks...');\r\n }\r\n await this.payments.stopPaymentStatusChecking();\r\n\r\n if (this.consoleLogging) {\r\n console.info('Unsubscribing from all events...');\r\n }\r\n this.events.clearAllSubscriptions();\r\n\r\n if (this.consoleLogging) {\r\n console.info('Cancel all API requests...');\r\n }\r\n this.abortController.abort();\r\n\r\n return Promise.resolve();\r\n }\r\n}\r\n","import { Bank } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\n\r\nexport class BankAccountRequest {\r\n public accountNumber: string;\r\n public bank: Bank;\r\n}\r\nexport class BankAccountResponse {\r\n public token: string;\r\n}\r\nexport class CardRequest {\r\n public cardNumber: string;\r\n public nameOnCard: string;\r\n public expiryMonth: Month;\r\n public expiryYear: number;\r\n}\r\n/** A model to hold the details of a card response that is returned to a caller when they tokenize a card or verify a tokenized card. */\r\nexport class CardResponse {\r\n /** The card token that was generated by the system. */\r\n public token: string;\r\n /** A boolean value indicating whether the small test payment that is required to verify this card, if <see cref=\"P:ZGA.Core.Models.Tokens.CardResponse.RequiresVerification\" />=True, has been completed yet. */\r\n public requiresPayment: boolean;\r\n /** A boolean value indicating whether this card needs to be verified before it can be activated for use on this system. */\r\n public requiresVerification: boolean;\r\n /** How many times verification of this card can still be attempted before the card is locked and it will no longer be possible to activate it. */\r\n public verificationAttemptsRemaining: number;\r\n /** The currency in which the verification payment was made. */\r\n public paymentCurrency: Currency;\r\n /** The amount, in cents, of the verification payment that was made. */\r\n public paymentAmountInCents: number;\r\n}\r\n/** A model to hold the details of a card verification submission. */\r\nexport class VerifyCardRequest {\r\n /** A card token. */\r\n public token: string;\r\n /** The verification code that appeared on the credit card statement after the verification test payment was made. */\r\n public verificationCode: string;\r\n}\r\n","/** Model to hold information to change a user's password. */\r\nexport class ChangePasswordRequest {\r\n /** Gets or sets the old password. */\r\n public oldPassword?: string;\r\n /** Gets or sets the new password (required). */\r\n public newPassword: string;\r\n /** Gets or sets the reset code that need to be supplied if you are not authenticated. */\r\n public resetCode?: string;\r\n /** Gets or sets the reference of the user that is linked to this login information. */\r\n public userReference?: string;\r\n}\r\nexport class ForgotPasswordRequest {\r\n public username: string;\r\n}\r\nexport class LivenessRequest {\r\n public base64Images: string[];\r\n}\r\n/** Model to hold login information that can be used to access the system and generate tokens. */\r\nexport class LoginCredentials {\r\n /** Gets or sets the username (required). */\r\n public username: string;\r\n /** Gets or sets the password (required). */\r\n public password: string;\r\n /** Indicates whether the user is locked out. */\r\n public isLockedOut: boolean;\r\n /** Gets the reason (if any) of why the user has been locked out. */\r\n public reasonForLockout?: string;\r\n}\r\n/** Provides details for the reason why a login attempt failed (401 errors). */\r\nexport class LoginErrorResponse {\r\n /** Gets or sets a value indicating whether either the username or password credentials provided to login are invalid. */\r\n public invalidUsernameOrPassword?: boolean;\r\n /** Gets or sets a value indicating whether the user is required to change their password first before attempting to login. */\r\n public mustChangePassword?: boolean;\r\n /** Gets or sets a value indicating whether the user is required to validate their phone number first (OTP or phone call) before attempting to login. */\r\n public mustValidatePhoneNumber?: boolean;\r\n /** Gets or sets a value indicating whether the user is required to validate their email address first before attempting to login. */\r\n public mustValidateEmailAddress?: boolean;\r\n /** Gets or sets a value indicating whether the user has been deactivated. */\r\n public deactivated?: boolean;\r\n /** Gets or sets a value indicating whether further information about the user is required and the registration process needs to be complete before attempting to login. */\r\n public registrationRequired?: boolean;\r\n /** Gets or sets a value indicating whether the user is currently locked out. */\r\n public lockedOut?: boolean;\r\n /** Gets or sets an access token that can be used to call the change password end-point. */\r\n public changePasswordAccessToken?: string;\r\n /** Gets or sets an access token that can be used to call the change password end-point. */\r\n public validatePhoneNumberAccessToken?: string;\r\n /** Gets or sets an access token that can be used to call the resend email verification end-point, and view current merchant / consumer details. */\r\n public resendEmailVerificationToken?: string;\r\n}\r\n/** Model to hold the credentials for a login attempt. */\r\nexport class LoginRequest {\r\n /** Gets or sets the username (required). */\r\n public username: string;\r\n /** Gets or sets the password (required). */\r\n public password: string;\r\n}\r\nexport class OtpVerificationRequest {\r\n public otpValue: string;\r\n}\r\nexport class OtpVerificationResponse {\r\n public userAccountExists: boolean;\r\n public accessToken: string;\r\n}\r\nexport class SelfieRequest {\r\n public base64Image?: string;\r\n}\r\n/** Provides token information for successful login and refresh operations. */\r\nexport class TokenResponse {\r\n /** Gets or sets a JWT Refresh token that can be used to request a new Access tokens. */\r\n public refreshToken?: string;\r\n /** Gets or sets a JWT Access token that can be used to make API calls. */\r\n public accessToken?: string;\r\n /** Gets or sets the amount of time (in seconds) for which the Access token will be valid. */\r\n public accessTokenValidForSeconds: number;\r\n}\r\n","import { Currency } from '../lookups/types';\r\nimport { TransactionIconType } from '../payments/types';\r\n\r\nexport class TransactionCategorySummaryResponse {\r\n public category: string;\r\n public transactionCount: number;\r\n public currency: Currency;\r\n public totalAmountInCents: number;\r\n}\r\nexport class TransactionDetailsByDayResponse {\r\n public date: Date;\r\n public transactionCount: number;\r\n public currency: Currency;\r\n public totalCreditAmountInCents: number;\r\n public totalDebitAmountInCents: number;\r\n public totalAmountInCents: number;\r\n public totalCashbackInCents: number;\r\n public totalCommissionFeesInCents: number;\r\n public totalServiceFeesInCents: number;\r\n public totalELevyFeesInCents: number;\r\n public totalUserFeesInCents: number;\r\n public totalTipsInCents: number;\r\n public paymentDetails?: TransactionDetailsResponse[];\r\n}\r\nexport class TransactionDetailsResponse {\r\n public paymentReference: string;\r\n public shortPaymentReference: string;\r\n public channel: string;\r\n public transactionType: string;\r\n public sourceCategory: string;\r\n public destinationCategory: string;\r\n public sourceFacility: string;\r\n public destinationFacility: string;\r\n public sourceTransactionTypeDescription: string;\r\n public destinationTransactionTypeDescription: string;\r\n public sourceAccount?: string;\r\n public destinationAccount?: string;\r\n public name?: string;\r\n public transactionCompletedDate: Date;\r\n public currency: Currency;\r\n public amountInCents: number;\r\n public cashbackAmountInCents: number;\r\n public commissionFeeAmountInCents: number;\r\n public serviceFeeAmountInCents: number;\r\n public eLevyFeeAmountInCents: number;\r\n public userFeeAmountInCents: number;\r\n public tipAmountInCents: number;\r\n public isSuccess: boolean;\r\n public summaryStatus: string;\r\n public sourceStatus: string;\r\n public destinationStatus: string;\r\n public transactionIconType: TransactionIconType;\r\n public wasQrCodeInitiated: boolean;\r\n}\r\nexport class TransactionMonthSummaryResponse {\r\n public year: number;\r\n public month: number;\r\n public currency: Currency;\r\n public description: string;\r\n public totalAmountInCents: number;\r\n public periodTotals: TransactionPeriodSummaryResponse[];\r\n}\r\nexport class TransactionPeriodSummaryResponse {\r\n public description: string;\r\n public currency: Currency;\r\n public totalAmountInCents: number;\r\n public categoryTotals?: TransactionCategorySummaryResponse[];\r\n}\r\n"],"names":["ApiTokens$1","ApiTokens","this","accessToken","refreshToken","prototype","decodeToken","token","window","document","base64","split","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","Buffer","from","OnSessionStarted","Symbol","OnSessionExpired","OnAutomaticRefresh","OnApiRetry","OnPaymentStatusUpdate","OnPaymentComplete","OnRequires3DSecure","OnRequiresPin","OnRequiresConfirmation","OnRequiresAddress","OnComplete3DSecure","ApiError","_Error","statusCode","result","message","_this","newMessage","Array","isArray","length","String","call","Object","setPrototypeOf","_assertThisInitialized","_inheritsLoose","_wrapNativeSuper","Error","LogSeparator","repeat","BaseApi","axiosInstance","consoleLogging","events","PubSub","_proto","request","endpoint","method","body","response","_temp2","_result","console","debug","data","success","status","_temp","_catch","config","url","headers","Authorization","convertDatesToIso","defaults","baseURL","dir","depth","Promise","resolve","then","_this$axiosInstance","error","errno","code","e","reject","obj","_this2","Date","isNaN","getTime","offset","getTimezoneOffset","offsetHours","Math","floor","abs","padStart","offsetMinutes","offsetSign","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","item","constructor","converted","key","hasOwnProperty","Bank","Channel","ConsumerFileType","Country","Currency","DayOfWeek","FaceMovementDetectionLevel","Gender","IdentityDocumentType","KybProvider","KybStatus","KycProvider","KycStatus","KycVerificationType","Language","MerchantFileType","MobileWalletOperator","Month","ProductType","QrCodeType","RepeatInterval","baseAuthEndpoint","Authentication","_BaseApi","apply","arguments","isLoggedIn","exp","_unused","login","username","password","tokenResponse","publish","loginError","changePasswordAccessToken","validatePhoneNumberAccessToken","resendEmailVerificationToken","logout","refresh","_this3","checkLiveness","base64Images","checkFace","base64Image","changePassword","oldPassword","newPassword","_this6","resetCode","userReference","forgotPassword","validateOtp","otpValue","_this8","resendOtp","resendEmailAddressVerification","getCurrentConsumerReference","consumer_reference","getCurrentMerchantReference","merchant_reference","getCurrentBusinessReference","business_reference","getCurrentTerminalReference","terminal_reference","getCurrentUserReference","reference","getCurrentUserName","user_name","getRedirectAction","redirect_action","getMobileNumber","mobile_number","getEmailAddress","email_address","MerchantCategory","CardIssuer","FeeType","MerchantPaymentType","ReceiptType","RefundType","TransactionCategory","baseEndpoint","Lookups","_len","args","_key","concat","cardIssuerCountryCache","Map","addressLocationCache","digitalAddressCache","bankCache","currencyCache","countryCache","languageCache","allCurrencyCache","allCountryCache","allLanguageCache","mobileWalletOperatorCache","productTypeCache","merchantCategoryCache","getProductTypes","_this2$request","getMerchantCategories","_temp4","_temp3","_this3$request","getCurrencies","_temp6","_this4","_temp5","_this4$request","getCountries","_temp8","_this5","_temp7","_this5$request","getLanguages","_temp0","_temp9","_this6$request","getAllCurrencies","_temp10","_this7","_temp1","_this7$request","getAllCountries","_temp12","_temp11","_this8$request","getAllLanguages","_temp14","_this9","_temp13","_this9$request","getMobileWalletOperators","_temp16","_this0","_temp15","_this0$request","getBanks","country","_temp19","_this1","get","None","_temp18","has","_temp17","_this1$bankCache","_set","set","_Country$None","_this1$request","_this1$bankCache2","_set2","_this1$request2","getCardIssuerCountry","cardBin","_temp21","_this10","_temp20","_this10$cardIssuerCou","_set3","_this10$request","getAddressFromLocation","latitude","longitude","_temp25","_exit","_this11","_temp24","_temp23","_Promise$resolve","cacheKey","_temp22","_this11$addressLocati","_set4","_this11$request","getAddressFromDigitalAddress","digitalAddress","_temp29","_exit2","_result2","_this12","_temp28","exec","_temp27","_Promise$resolve2","_temp26","_this12$digitalAddres","_set5","_this12$request","TransactionIconType","TransactionStatus","TransactionType","TransactionData","isPublic","none","LogLevel","baseEndpointPay","baseEndpointToken","baseEndpointTransaction","baseEndpointNotification","Payments","hubConnection","baseUrl","activeTransactions","manuallyStartedPaymentStatusChecking","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","withStatefulReconnect","configureLogging","Debug","build","pay","timeZone","Intl","DateTimeFormat","resolvedOptions","startPaymentStatusChecking","payMerchant","merchantReference","paymentStatusCheck","paymentReference","paymentReceipt","createCardToken","createBankAccountToken","verifyCardToken","createCardVerificationPayment","submitPinCode","transactionReference","pin","rejectPinCode","submitConfirmation","confirm","submitAddress","validateQrCode","baseEndpointValidate","sendEmailPaymentNotification","emailAddress","templateName","_this13","toEmailAddress","receiptType","Consumer","sendSmsPaymentNotification","msisdn","toNumber","stopPaymentStatusChecking","_this15","removePaymentStatusCheckInterval","_step","_iterator","_createForOfIteratorHelperLoose","values","done","clearInterval","value","statusCheckTimer","clear","state","HubConnectionState","Disconnected","off","stop","_this16","lastJsonResponse","isProcessing3dSecure","on","statusResponse","_exit3","_result5","checkPaymentUpdateStatus","isComplete","_await$_this16$stopPa","addPaymentStatusCheckInterval","Connected","start","_await$_this16$hubCon","initialStatusResponse","getOfflinePaymentFormUrl","timestamp","merchantId","terminalId","batchNumber","options","optionsBase64","btoa","stringify","getRequiredPinLength","mobileWalletOperator","VDF","TCG","luhnCheck","creditCardNumber","test","array","bit","sum","parseInt","charAt","_this17","activeTransaction","isWaiting","checkGenericRequiredStatuses","transactionResult","signalData","paymentStatusResponse","RequiresConfirmation","RequiresInitialConfirmation","destinationWithAccountHolder","paymentDestinations","mobileWallets","find","accountHolder","bankAccounts","merchants","qrCodes","bills","confirmationData","amountInCents","sourceAccountHolder","destinationAccountHolder","fees","RequiresPin","pinLength","RequiresAddress","paymentSources","cards","forEach","Requires3DSecure","threeDSecureUrl","wallets","checkRequiredStatuses","warn","onStatusPollingInterval","_this18","interval","_this19","setInterval","baseConsumerEndpoint","baseMessageEndpoint","baseAccountEndpoint","Consumers","createConsumer","updateConsumer","deleteConsumer","getConsumer","getConsumerAgreement","acceptConsumerAgreement","stopCard","cardReference","reason","getBankAccountBalance","bankAccountReference","downloadFile","fileReference","queryParameters","queryString","keys","params","entries","_ref","encodeURIComponent","baseFilesEndpoint","submitFeedback","description","baseFeedbackEndpoint","getAllMessages","getMessage","messageReference","deleteMessage","contactSupport","QrCodes","qrCache","decode","qrCode","_this2$qrCache","generate","text","width","QRCode","toDataURL","errorCorrectionLevel","margin","baseMerchantEndpoint","baseOtpEndpoint","basePosEndpoint","baseProductEndpoint","baseUserEndpoint","Merchants","productDetailCache","productsCache","createMerchantProductProxy","product","copy","_extends","Proxy","target","prop","futureAmountEffectiveFromDate","futureAmountInCents","getAllProducts","products","getActiveProductTypes","allProducts","p","type","sort","getMerchantNamesFromProductType","productType","el","m","name","filter","index","self","indexOf","getProductTypesForMerchant","merchantName","typesWithMatchingMerchant","push","getProductsForMerchantAndProductType","pel","mel","a","b","localeCompare","getProductDetails","productReference","productDetails","_this7$productDetailC","getProducts","createProduct","newProduct","updateProduct","updatedProduct","deleteProduct","groupProductsByName","reduce","groups","_product$name$split$m","s","trim","groupName","productName","getMerchant","createMerchant","updateMerchant","getMerchantAgreement","acceptMerchantAgreement","verifyMobileNumber","cleanMsisdn","verificationResponse","validateMerchantName","createUser","mobileNumber","isLockedOut","switchToMerchant","getUserMerchants","setupPosTerminal","terminalReference","merchantSource","deviceInformation","checkAccessToken","getPosTerminalConfiguration","configResponse","getTerminalPaymentQrCodes","currency","_this23","currencyIsoCode","Number","isInteger","getTerminalPaymentQrCodeUrls","uploadFile","tokenizer","MessageTemplate","messageTemplate","raw","tokens","tokenize","render","properties","i","toText","bindProperties","positionalArgs","nextArg","capture","destructure","arg","template","textStart","lastIndex","property","toISOString","AddressType","BankAccountType","ConsumerAttribute","GenericAccountType","KycStatusSummary","DevicePlatform","EmployeeNotificationEvent","FuelPurchaseMethod","Industry","KybStatusSummary","MerchantAttribute","MerchantNotificationEvent","SettlementTime","TerminalType","Log","logBatchSize","logBatchInterval","messageBatch","batchSize","batchInterval","maxQueueSize","batchTimeout","min","submitMessageBatch","flush","fatal","log","Critical","Warning","info","Information","trace","Trace","level","msg","toJSON","output","toUpperCase","loop","clearTimeout","promise","messages","splice","_","_this2$messageBatch","unshift","setTimeout","System","ping","baseContentEndpoint","Content","clientContentCache","contactDetailsCache","getClientContent","getContactDetails","baseTransactionReportsEndpoint","Reports","dailyTransactionCache","getRecentTransactions","limit","successfulOnly","getTransactionSummary","getAllTransactionDetails","dateFrom","dateTo","getDailyTransactions","dailyTransactions","flatMap","day","paymentDetails","transactionCompletedDate","resultStartStr","toDateStr","resultEndStr","cachedData","itemDateStr","date","fetchFrom","fetchTo","needsFetch","d","todayStr","lastCachedItem","firstCachedItem","reqStartStr","reqEndStr","firstCachedStr","lastCachedStr","isInsideCache","includesToday","newData","dataMap","VantagePay","abortController","system","content","auth","consumers","lookups","payments","reports","AbortController","axios","create","timeout","signal","Accept","language","axiosAuthRefresh","failedRequest","refreshUrl","path","skipAuthRefresh","refreshResponse","axiosRetry","retries","retryDelay","exponentialDelay","onRetry","retryCount","undefined","navigator","json","close","clearAllSubscriptions","abort","AccountHolderTransactionResult","refunds","createdDate","shortReference","originalAmountInCents","amountAttemptedInCents","cashbackAmountInCents","category","summaryStatus","isCashWithdrawal","terminalType","addressType","addressLine1","addressLine2","addressLine3","postalCode","countryIsoCode","city","location","formatted","isActive","AmountTotals","totalAmountRequestedInCents","totalAmountAttemptedInCents","totalAmountProcessedInCents","totalAmountProcessedLessFeesAndCommissionsInCents","totalInternalFeesInCents","totalExternalFeesInCents","totalFeesInCents","totalElevyInCents","totalUserFeesInCents","totalCommissionsInCents","totalRefundsInCents","totalCashbackAmountAttemptedInCents","totalCashbackAmountProcessedInCents","totalTipAmountAttemptedInCents","totalTipAmountProcessedInCents","grandTotalProcessedInCents","grandTotalToBePaidByUserInCents","webPaymentResponse","doNotProcess","disableConfirmation","clientData","ApplePayWebPaymentResponse","requestId","methodName","details","payerEmail","payerName","payerPhone","availableAmountInCents","currentAmountInCents","accountNumber","bank","beneficiaryReference","notificationEmailAddress","notificationMobileNumber","bankName","BankAccountSource","BankData","isAvailable","bankCode","routingCode","BasicConsumer","yourReference","source","firstName","lastName","middleName","dateOfBirth","gender","preferredLanguage","kycStatusSummary","title","employeeNumber","passcode","posPermissions","categoryCode","kybStatusSummary","shortCode","Beneficiary","contactNumber","lastTransactionDate","lastTransactionAmountInCents","lastTransactionCurrency","genericAccounts","bankAccountType","bankAccountTypeName","recipientReference","senderReference","sendProofOfPayment","proofOfPaymentEmailAddress","proofOfPaymentMobileNumber","cardNumber","nameOnCard","expiryMonth","expiryYear","cardIssuer","genericAccountType","genericAccountTypeName","mobileWalletOperatorName","BillDestination","productFields","BillDestinationResult","parentBusinessReference","phoneNumber","isEmailVerified","isMobileNumberVerified","cardIssuerCountryIsoCode","shippingAddress","CardRequest","requiresPayment","requiresVerification","verificationAttemptsRemaining","paymentCurrency","paymentAmountInCents","CardSettings","allowTapToPay","alwaysAskForPin","cvv","billingAddress","cardHolder","disableThreeDSecure","CardSourceResult","consumer","paymentStatusWebhook","loginCredentials","preferredName","fullNameOfNextOfKin","contactNumberForNextOfKin","alternateContactNumber","invitationCode","isRegistrationComplete","identityDocuments","kycLookupResults","files","devices","addresses","beneficiaries","accounts","attributes","rewardPointsInfo","ConsumerAccounts","loanAccounts","insurancePolicies","ConsumerAttributeValue","attribute","branchName","linkedCardReferences","accountName","iconUrl","linkedFileReferences","ConsumerCard","linkedBankAccountReferences","settings","fileType","kycResults","fileName","mimeType","base64Data","lastUpdatedDate","policyNumber","coverAmountInCents","premiumAmountInCents","beneficiaryName","contractNumber","originalCapitalInCents","settlementAmountInCents","outstandingBalanceInCents","installmentAmountInCents","arrearsAmountInCents","installmentsRemaining","annualInterestRatePercentage","nextInstallmentDate","startDate","endDate","isInArrears","isFullyPaid","repaymentPercentage","CountryData","countryName","longIsoCode","shortIsoCode","numericIsoCode","dialingCode","currencyName","currencyCode","symbol","Device","lastUsedDate","platform","deviceType","brand","model","serialNumber","operatingSystemVersion","softwareVersion","pushNotificationToken","EmailNotificationRequest","Employee","isOwner","profileImage","notificationSettings","EmployeeNotificationEventSetting","event","sendEmail","sendSms","terminalReferences","FaceCheckResult","faceCount","containsNoise","isLowQuality","isOverExposed","isUnderExposed","isBlurry","isWearingMask","foreheadNotIncluded","eyesNotIncluded","mouthNotIncluded","faceLeft","faceTop","faceWidth","faceHeight","problems","GenericDestination","cardNotPresentMID","isVisaEnabled","isMastercardEnabled","isAmericanExpressEnabled","isDinersEnabled","settlementTime","id","identityDocumentType","identityNumber","placeOfIssuance","effectiveDate","expiryDate","provider","verificationType","providerReference","KycLookupResult","languageCode","languageName","quantity","unitAmountInCents","totalAmountInCents","LoginCredentials","reasonForLockout","invalidUsernameOrPassword","mustChangePassword","mustValidatePhoneNumber","mustValidateEmailAddress","deactivated","registrationRequired","lockedOut","tradingName","franchiseName","capturedBy","capturedFrom","industry","languageIsoCode","webSiteUrl","vCard","logoImage","taxNumber","companyRegistrationNumber","companyRegistrationDate","adminPasscode","logoUrl","hostedPaymentUrl","hostedPaymentOptions","posOptions","business","employees","terminals","operatingTimes","createdDateUtc","isSettlement","hasSettlementRules","MerchantDestination","qrCodeReference","paymentType","tipAmountInCents","tipEmployeeReference","kybResults","MerchantMobileWallet","MerchantNameVerificationRequest","MerchantNameVerificationResponse","MerchantNotificationEventSetting","channel","splitReference","merchant","recurrenceSchedule","scheduledSequenceNumber","disableInitialConfirmation","lineItems","paymentStatusUrls","unitLabel","maximumAmountInCents","fullAmountRequired","quantityRequired","fields","MerchantProductCatalog","isRequired","isAccountKey","validationRegex","selectionItems","MerchantProductFieldSelectionItem","label","MerchantQrCode","shortUrl","fullUrl","notes","MerchantQrCodeOptions","isAmountEditable","isQrCode","currencySymbol","feePercentage","enableCustomReference","enableTip","enableRating","redirectUrl","notificationEmailAddresses","notificationMobileNumbers","metaData","transactionBatchReference","refundCategory","refundAmountInCents","consumerReference","messageSummary","messageDetail","isDeleted","MobileWalletDestination","MobileWalletDestinationResult","operatorCode","operatorName","MobileWalletSource","voucherCode","subscriberPin","MobileWalletSourceResult","externalReference","dayOfWeek","fromTime","toTime","OtpVerificationResponse","userAccountExists","cash","generic","percentageComplete","paymentStartedDate","paymentCompletedDate","shortPaymentReference","verificationCode","amountTotals","PaymentRecurrenceSchedule","repeatInterval","scheduleEndDate","repeatCount","scheduledDate","isCancelled","isProcessed","PaymentRequest","PaymentResponse","PaymentSources","applePay","googlePay","PosOptions","isRefundsEnabled","isCancellationsEnabled","isPurchaseWithCashbackEnabled","isWithdrawalsEnabled","isBalanceCheckEnabled","isCurrencyConversionEnabled","isRcsPaymentEnabled","isDebiCheckEnabled","isPreAuthorizationEnabled","isManualCardEntryEnabled","isInvoiceNumberEnabled","isPasscodeAlwaysRequired","fuelPurchaseMethod","PosPermissions","canCreateUsers","canProcessRefunds","canCloseAndAccessBatchReports","canEditDeviceSettings","canExceedMaximumSaleLimits","canProcessCashWithdrawals","canProcessCashDeposit","canUseBalanceEnquiry","canUseDebiCheck","canUseManualCardEntry","canProcessCancellations","canProcessDepositsAndReversals","canUsePreAuthorisation","canUseIncrementalAuthorisation","canOverrideAuthorisation","canCancelAuthorisation","canCompleteAuthorisation","canAccessReports","ProductDetail","QrCodeDestination","additionalInfo","QrCodeDestinationResult","billReference","QrCodeValidationResponse","canProcess","supportedQrCodes","RefundReceiptResponse","originalPaymentReceipt","refundCompletedDate","RefundRequest","sourceTransactionReference","destinationTransactionReference","refundStatusUrls","RefundStatusResponse","RefundTransactionResult","pointsBalance","rewardTier","creditTransactionCount","SelfieRequest","StatusUrls","polling","serverSentEvents","webSockets","apiBaseUrl","device","isLinked","externalQrCodes","notificationTokens","additionalReferences","TerminalConfiguration","primaryAddress","posMerchantId","posTerminalId","features","TerminalFeatures","isQrCodeEnabled","isCardEnabled","isCashEnabled","isMobileMoneyEnabled","zapperQrCodeUrl","snapScanQrCodeUrl","vantagePayQrCodeUrl","mtnMoMoQrCodeUrl","TerminalPaymentQrCodes","zapperQrCodeBase64","snapScanQrCodeBase64","vantagePayQrCodeBase64","mtnMoMoQrCodeBase64","TerminalQrCode","qrCodeType","TerminalSetup","qrCodeBase64","doesTerminalExist","isTerminalActive","isTerminalLinked","accessTokenValidForSeconds","TransactionCategorySummaryResponse","transactionCount","TransactionConfirmation","totalCreditAmountInCents","totalDebitAmountInCents","totalCashbackInCents","totalCommissionFeesInCents","totalServiceFeesInCents","totalELevyFeesInCents","totalTipsInCents","TransactionDetailsResponse","transactionType","sourceCategory","destinationCategory","sourceFacility","destinationFacility","sourceTransactionTypeDescription","destinationTransactionTypeDescription","sourceAccount","destinationAccount","commissionFeeAmountInCents","serviceFeeAmountInCents","eLevyFeeAmountInCents","userFeeAmountInCents","isSuccess","sourceStatus","destinationStatus","transactionIconType","wasQrCodeInitiated","feeType","feeAmountInCents","TransactionMonthSummaryResponse","year","month","periodTotals","TransactionPeriodSummaryResponse","categoryTotals","walletReference","walletProvider","walletSource","WalletSource","WalletSourceResult","callbackUrl","onPaymentCompleteOnly"],"mappings":"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AAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAUUC,QAAAA,aAAAA,GAAAA,EAAAA,QAAOA,UAAPA,gBAYX,CAAA,IAXC,QAAA,UACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,SAAA,WACAA,EAAA,UAAA,YACAA,EAAA,WAAA,aACAA,EAAA,UAAA,YACAA,EAAA,kBAAA,oBACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,SAAA,WAEUC,QAAAA,sBAAAA,GAAAA,EAAAA,QAAgBA,mBAAhBA,QAAgBA,iBAe3B,KAdC,YAAA,cACAA,EAAA,UAAA,YACAA,EAAA,sBAAA,wBACAA,EAAA,qBAAA,uBACAA,EAAA,SAAA,WACAA,EAAA,aAAA,eACAA,EAAA,UAAA,YACAA,EAAA,kBAAA,oBACAA,EAAA,aAAA,eACAA,EAAA,oBAAA,sBACAA,EAAA,iBAAA,mBACAA,EAAA,cAAA,gBACAA,EAAA,kBAAA,oBACAA,EAAA,qBAAA,uBAEUC,QAAAA,aAAAA,GAAAA,EAAAA,kBAAAA,QAAAA,QAyPX,CAAA,IAxPC,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAWUC,QAAZA,cAAA,GAAYA,EAAAA,QAAQA,WAARA,QAAQA,SA2GnB,KA1GC,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACA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EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAOU6D,QAAAA,sBAAAA,EAAZ,SAAYA,GACVA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,gBAAA,IAAA,kBACAA,EAAAA,EAAA,yBAAA,KAAA,2BACAA,EAAAA,EAAA,mBAAA,KAAA,qBACAA,EAAAA,EAAA,yBAAA,KAAA,2BACAA,EAAAA,EAAA,oCAAA,KAAA,sCACAA,EAAAA,EAAA,2CAAA,MAAA,6CACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,8DAAA,MAAA,gEACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,0CAAA,MAAA,4CACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,mCAAA,MAAA,qCACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,oDAAA,MAAA,sDACAA,EAAAA,EAAA,eAAA,KAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,IAAA,MAAA,MACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,KAAA,MAAA,OACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,IAAA,MAAA,MACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,IAAA,MAAA,MACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,KAAA,MAAA,OACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,IAAA,MAAA,MACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,KAAA,MAAA,OACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,IAAA,MAAA,MACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,OAAA,MAAA,SACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,KAAA,MAAA,OACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,QAAA,MAAA,UACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,4CAAA,MAAA,8CACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,iDAAA,MAAA,mDACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,oDAAA,MAAA,sDACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,gDAAA,MAAA,kDACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,oDAAA,MAAA,sDACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,kDAAA,MAAA,oDACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,+CAAA,MAAA,iDACAA,EAAAA,EAAA,+DAAA,MAAA,iEACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,iDAAA,MAAA,mDACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,0CAAA,MAAA,4CACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,uDAAA,MAAA,yDACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,2DAAA,MAAA,6DACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,iDAAA,MAAA,mDACAA,EAAAA,EAAA,2CAAA,MAAA,6CACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,oFAAA,MAAA,sFACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,mCAAA,MAAA,qCACAA,EAAAA,EAAA,+CAAA,MAAA,iDACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,yDAAA,MAAA,2DACAA,EAAAA,EAAA,iDAAA,MAAA,mDACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,8FAAA,MAAA,gGACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,2CAAA,MAAA,6CACAA,EAAAA,EAAA,8CAAA,MAAA,gDACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,kDAAA,MAAA,oDACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,mCAAA,MAAA,qCACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,SAAA,MAAA,WACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,mCAAA,MAAA,qCACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,gDAAA,MAAA,kDACAA,EAAAA,EAAA,4CAAA,MAAA,8CACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,sEAAA,MAAA,wEACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,mCAAA,MAAA,qCACAA,EAAAA,EAAA,gDAAA,MAAA,kDACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,oCAAA,MAAA,sCACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,aAAA,MAAA,eACAA,EAAAA,EAAA,qDAAA,MAAA,uDACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,sDAAA,MAAA,wDACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,oCAAA,MAAA,sCACAA,EAAAA,EAAA,oCAAA,MAAA,sCACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,0CAAA,MAAA,4CACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,oEAAA,MAAA,sEACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,+CAAA,MAAA,iDACAA,EAAAA,EAAA,8DAAA,MAAA,gEACAA,EAAAA,EAAA,6EAAA,MAAA,+EACAA,EAAAA,EAAA,0CAAA,MAAA,4CACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,oCAAA,MAAA,sCACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,eAAA,MAAA,iBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,2CAAA,MAAA,6CACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,gDAAA,MAAA,kDACAA,EAAAA,EAAA,gBAAA,MAAA,kBACAA,EAAAA,EAAA,2CAAA,MAAA,6CACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,oDAAA,MAAA,sDACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,oCAAA,MAAA,sCACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,sDAAA,MAAA,wDACAA,EAAAA,EAAA,4CAAA,MAAA,8CACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,sEAAA,MAAA,wEACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,wEAAA,MAAA,0EACAA,EAAAA,EAAA,8CAAA,MAAA,gDACAA,EAAAA,EAAA,yEAAA,MAAA,2EACAA,EAAAA,EAAA,uCAAA,MAAA,yCACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,qBAAA,MAAA,uBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,WAAA,MAAA,aACAA,EAAAA,EAAA,cAAA,MAAA,gBACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,qCAAA,MAAA,uCACAA,EAAAA,EAAA,+BAAA,MAAA,iCACAA,EAAAA,EAAA,2BAAA,MAAA,6BACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,UAAA,MAAA,YACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,sCAAA,MAAA,wCACAA,EAAAA,EAAA,0BAAA,MAAA,4BACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,yDAAA,MAAA,2DACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,iCAAA,MAAA,mCACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,kBAAA,MAAA,oBACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,oCAAA,MAAA,sCACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,wBAAA,MAAA,0BACAA,EAAAA,EAAA,8BAAA,MAAA,gCACAA,EAAAA,EAAA,6CAAA,MAAA,+CACAA,EAAAA,EAAA,yCAAA,MAAA,2CACAA,EAAAA,EAAA,wCAAA,MAAA,0CACAA,EAAAA,EAAA,0CAAA,MAAA,4CACAA,EAAAA,EAAA,MAAA,MAAA,QACAA,EAAAA,EAAA,oBAAA,MAAA,sBACAA,EAAAA,EAAA,YAAA,MAAA,cACAA,EAAAA,EAAA,mBAAA,MAAA,qBACAA,EAAAA,EAAA,iBAAA,MAAA,mBACAA,EAAAA,EAAA,6BAAA,MAAA,+BACAA,EAAAA,EAAA,4BAAA,MAAA,8BACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,yBAAA,MAAA,2BACAA,EAAAA,EAAA,uBAAA,MAAA,yBACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,kCAAA,MAAA,oCACAA,EAAAA,EAAA,gCAAA,MAAA,kCACAA,EAAAA,EAAA,sBAAA,MAAA,wBACAA,EAAAA,EAAA,iBAAA,MAAA,kBACD,CAx8BD,CAAYA,2BAAAA,QAAAA,iBAw8BX,CAAA,IACW5D,QAAAA,sBAAAA,GAAAA,EAAAA,QAAAA,mBAAAA,QAAAA,iBAkBX,CAAA,IAjBC,YAAA,cACAA,EAAA,eAAA,iBACAA,EAAA,kBAAA,oBACAA,EAAA,oBAAA,sBACAA,EAAA,eAAA,iBACAA,EAAA,mBAAA,qBACAA,EAAA,sBAAA,wBACAA,EAAA,qBAAA,uBACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,gBAAA,kBACAA,EAAA,aAAA,eACAA,EAAA,YAAA,cACAA,EAAA,mCAAA,qCACAA,EAAA,2BAAA,6BACAA,EAAA,0BAAA,4BACAA,EAAA,iBAAA,mBAEUC,QAAZA,0BAAA,GAAYA,EAAAA,QAAoBA,uBAApBA,QAAoBA,qBAc/B,CAAA,IAbC,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAOUC,QAAAA,WAAAA,GAAAA,GAAAA,QAAKA,QAALA,QAAKA,MAahB,KAZCA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,GAAA,MACAA,GAAAA,GAAA,IAAA,IAAA,MACAA,GAAAA,GAAA,IAAA,IAAA,MACAA,GAAAA,GAAA,IAAA,IAAA,MAEUC,QAAAA,iBAAAA,GAAAA,GAAAA,QAAWA,cAAXA,QAAWA,YAyBtB,CAAA,IAxBC,QAAA,UACAA,GAAA,SAAA,WACAA,GAAA,WAAA,aACAA,GAAA,UAAA,YACAA,GAAA,SAAA,WACAA,GAAA,UAAA,YACAA,GAAA,QAAA,UACAA,GAAA,UAAA,YACAA,GAAA,QAAA,UACAA,GAAA,UAAA,YACAA,GAAA,MAAA,QACAA,GAAA,SAAA,WACAA,GAAA,QAAA,UACAA,GAAA,MAAA,QACAA,GAAA,WAAA,aACAA,GAAA,YAAA,cACAA,GAAA,QAAA,UACAA,GAAA,KAAA,OACAA,GAAA,oBAAA,sBACAA,GAAA,cAAA,gBACAA,GAAA,UAAA,YACAA,GAAA,KAAA,OACAA,GAAA,IAAA,MACAA,GAAA,IAAA,MAEUC,QAAAA,gBAAAA,GAAAA,GAAAA,QAAAA,aAAAA,QAAAA,WAKX,CAAA,IAJC,KAAA,OACAA,GAAA,KAAA,OACAA,GAAA,KAAA,OACAA,GAAA,QAAA,UAEUC,QAAZA,oBAAA,GAAYA,GAAAA,QAAAA,iBAAAA,QAAAA,eAGX,CAAA,IAFC,OAAA,SACAA,GAAA,QAAA,UC70DF,ICiFYwD,GAiuBAC,GAiCAC,GA+MAC,GAgKAC,GAkhBAC,GDptDNC,GAAe,aAERC,yBAAQ5D,GAAA,SAAA4D,IAAA,IAAA,IAAAjK,EAAAkK,EAAA3D,UAAAnG,OAAA+J,EAAAjK,IAAAA,MAAAgK,GAAAE,IAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAA7D,UAAA6D,GAaUpK,OAbVA,EAAAqG,EAAA/F,KAAAgG,MAAAD,EAAA,CAAA9I,MAAA8M,OAAAF,WACFG,uBAAyB,IAAIC,IAA0BvK,EACvDwK,qBAAuB,IAAID,IAAsBvK,EACjDyK,oBAAsB,IAAIF,IAAsBvK,EAChD0K,UAAY,IAAIH,IAA0BvK,EACnD2K,mBAAa3K,EAAAA,EACb4K,kBAAY,EAAA5K,EACZ6K,mBAAa7K,EAAAA,EACb8K,wBAAgB9K,EAChB+K,qBAAe/K,EAAAA,EACfgL,sBAAgB,EAAAhL,EAChBiL,+BAAyB,EAAAjL,EACzBkL,wBAAgBlL,EAChBmL,2BAAqBnL,EAAAA,CAAA,CAbVU,EAAAuJ,EAAA5D,GAaUjF,IAAAA,EAAA6I,EAAAvM,UAsH5B,OAtH4B0D,EAEvBgK,2BAAe,QAAA1J,EAAA,WAKnB,OAAOkB,QAAQC,QAAQS,EAAK4H,kBAAoB,GAAI,EAAA5H,EAJ/C/F,KAAI0E,EAAL,WAAA,IAACqB,EAAK4H,iBAAgB,OAAAtI,QAAAC,QACMS,EAAKjC,QAA+B2I,GAA6B,gBAAA,QAAMlH,KAAAuI,SAAAA,GAArG/H,EAAK4H,iBAAgBG,CAAiF,GADpG,UACoGzI,QAAAC,QAAAZ,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,IAI1G,CAAC,MAAAyB,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKkK,sBAAqB,WAAA,IAAA,IAAAC,EAAA,WAKzB,OAAO3I,QAAQC,QAAQyE,EAAK6D,uBAAyB,GAAI,EAAA7D,EAJpD/J,KAAIiO,iBAAJlE,EAAK6D,sBAAqBvI,OAAAA,QAAAC,QACMyE,EAAKjG,QAA+B2I,GAAY,qBAAsB,QAAMlH,cAAA2I,GAA/GnE,EAAK6D,sBAAqBM,CAAsF,EAAA,IAAA,OAAA7I,QAAAC,QAAA2I,GAAAA,EAAA1I,KAAA0I,EAAA1I,KAAAyI,GAAAA,IAIpH,CAAC,MAAApI,GAAAP,OAAAA,QAAAQ,OAAAD,KAAA/B,EAEKsK,cAAaA,eAAAC,IAAAA,EAAAA,WAKjB,OAAO/I,QAAQC,QAAQ+I,EAAKjB,eAAiB,GAAI,EAAAiB,EAJ5CrO,KAAIsO,EAAL,WAAA,IAACD,EAAKjB,cAAa/H,OAAAA,QAAAC,QACM+I,EAAKvK,QAA2B2I,eAAyB,QAAMlH,KAAAgJ,SAAAA,GAA1FF,EAAKjB,cAAamB,CAAyE,GADzF,UACyFlJ,QAAAC,QAAAgJ,GAAAA,EAAA/I,KAAA+I,EAAA/I,KAAA6I,GAAAA,IAI/F,CAAC,MAAAxI,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK2K,aAAY,WAAA,IAAA,IAAAC,EAAAA,WAKhB,OAAOpJ,QAAQC,QAAQoJ,EAAKrB,cAAgB,GAAI,EAAAqB,EAJ3C1O,KAAI2O,EAAA,WAAA,IAAJD,EAAKrB,aAAYhI,OAAAA,QAAAC,QACMoJ,EAAK5K,QAA0B2I,GAAwB,WAAA,QAAMlH,cAAAqJ,GAAvFF,EAAKrB,aAAYuB,CAAuE,EAAA,CADjF,GACiF,OAAAvJ,QAAAC,QAAAqJ,GAAAA,EAAApJ,KAAAoJ,EAAApJ,KAAAkJ,GAAAA,IAI5F,CAAC,MAAA7I,UAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKgL,wBAAY,QAAAC,EAAA,WAKhB,OAAOzJ,QAAQC,QAAQiF,EAAK+C,eAAiB,GAAI,EAAA/C,EAJ5CvK,KAAI+O,EAAL,WAAA,IAACxE,EAAK+C,qBAAajI,QAAAC,QACMiF,EAAKzG,QAA2B2I,eAAyB,QAAMlH,KAAA,SAAAyJ,GAA1FzE,EAAK+C,cAAa0B,CAAyE,GADzF,UACyF3J,QAAAC,QAAAyJ,GAAAA,EAAAxJ,KAAAwJ,EAAAxJ,KAAAuJ,GAAAA,IAI/F,CAAC,MAAAlJ,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKoL,iBAAgB,WAAA,IAAA,IAAAC,EAAAA,WAKpB,OAAO7J,QAAQC,QAAQ6J,EAAK5B,kBAAoB,GAAI,EAAA4B,EAJ/CnP,KAAIoP,iBAAJD,EAAK5B,iBAAgB,OAAAlI,QAAAC,QACM6J,EAAKrL,QAA2B2I,GAAY,gBAAiB,QAAMlH,KAAA8J,SAAAA,GAAjGF,EAAK5B,iBAAgB8B,CAA6E,EAAA,IAAA,OAAAhK,QAAAC,QAAA8J,GAAAA,EAAA7J,KAAA6J,EAAA7J,KAAA2J,GAAAA,IAItG,CAAC,MAAAtJ,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKyL,gBAAeA,eAAAC,IAAAA,aAKnB,OAAOlK,QAAQC,QAAQuF,EAAK2C,iBAAmB,GAAI,EAAA3C,EAJ9C7K,KAAIwP,EAAL,WAAA,IAAC3E,EAAK2C,uBAAenI,QAAAC,QACMuF,EAAK/G,QAA0B2I,GAA4B,eAAA,QAAMlH,cAAAkK,GAA9F5E,EAAK2C,gBAAeiC,CAA2E,EAAApK,CAD7F,GAC6FA,OAAAA,QAAAC,QAAAkK,GAAAA,EAAAjK,KAAAiK,EAAAjK,KAAAgK,GAAAA,IAInG,CAAC,MAAA3J,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEK6L,gBAAeA,WAAA,IAAA,IAAAC,EAAAA,WAKnB,OAAOtK,QAAQC,QAAQsK,EAAKnC,kBAAoB,GAAI,EAAAmC,EAJ/C5P,KAAI6P,EAAL,WAAA,IAACD,EAAKnC,iBAAgBpI,OAAAA,QAAAC,QACMsK,EAAK9L,QAA2B2I,GAA6B,gBAAA,QAAMlH,cAAAuK,GAAjGF,EAAKnC,iBAAgBqC,CAA6E,EAAA,CADhG,GACgG,OAAAzK,QAAAC,QAAAuK,GAAAA,EAAAtK,KAAAsK,EAAAtK,KAAAoK,GAAAA,IAItG,CAAC,MAAA/J,GAAA,OAAAP,QAAAQ,OAAAD,KAAA/B,EAEKkM,yBAAwBA,WAAA,IAAA,IAAAC,EAAA,WAK5B,OAAO3K,QAAQC,QAAQ2K,EAAKvC,2BAA6B,GAAI,EAAAuC,EAJxDjQ,KAAIkQ,EAAA,WAAA,IAAJD,EAAKvC,iCAAyBrI,QAAAC,QACM2K,EAAKnM,QAAuC2I,GAAY,0BAA2B,QAAMlH,KAAA,SAAA4K,GAAhIF,EAAKvC,0BAAyByC,CAAmG,EAAA,CAD1H,GAC0H,OAAA9K,QAAAC,QAAA4K,GAAAA,EAAA3K,KAAA2K,EAAA3K,KAAAyK,GAAAA,IAIrI,CAAC,MAAApK,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKuM,kBAASC,GAAiB,IAAA,IAAAC,EAAA,WAS9B,OAAOjL,QAAQC,QAAQiL,EAAKpD,UAAUqD,IAAIH,GAAW3I,gBAAQ+I,OAAS,GAAI,EAAAF,EARrEvQ,KAAI0Q,EAAL,WAAA,IAACH,EAAKpD,UAAUwD,IAAIN,GAAW3I,QAAAA,QAAQ+I,MAAK,CAAA,IAAAG,EAC1CP,WAAAA,GAAW,MAAXA,GAAmBA,IAAY3I,QAAOA,QAAC+I,KAAII,CAAAA,IAAAA,EAC7CN,EAAKpD,UAAS2D,EAAdD,EAAeE,IAAGC,EAACtJ,QAAAA,QAAQ+I,YAAIpL,QAAAC,QAAQiL,EAAKzM,QAAuB2I,GAAqB,QAAA,QAAMlH,KAAA,SAAA0L,GAA9FH,EAAA/N,KAAA8N,EAAAG,EAAAC,EAAgG,EAAA,CAAA,IAAAC,EAEhGX,EAAKpD,UAASgE,EAAdD,EAAeH,IAAG1L,OAAAA,QAAAC,QAAgBiL,EAAKzM,QAAuB2I,GAAY,iBAAiB4D,EAAW,QAAM9K,cAAA6L,GAA5GD,EAAApO,KAAAmO,EAAmBb,EAAOe,EAAoF,GAH5Gf,MAG4GO,GAAAA,EAAArL,KAAAqL,OAAAA,EAAArL,oBAJ9G,UAI8GF,QAAAC,QAAAoL,GAAAA,EAAAnL,KAAAmL,EAAAnL,KAAA+K,GAAAA,IAKpH,CAAC,MAAA1K,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKwN,qBAAoBA,SAACC,GAAe,QAAAC,EAAA,WAKxC,OAAOlM,QAAQC,QAAQkM,EAAKzE,uBAAuByD,IAAIc,IAAY,KAAM,EAAAE,EAJpExR,KAAIyR,EAAA,WAAA,IAAJD,EAAKzE,uBAAuB4D,IAAIW,GAAQ,CAAA,IAAAI,EAC3CF,EAAKzE,uBAAsB4E,EAA3BD,EAA4BX,IAAG1L,OAAAA,QAAAC,QAAgBkM,EAAK1N,QAAwB2I,GAAY,gCAAgC6E,EAAW,QAAM/L,KAAA,SAAAqM,GAAzID,EAAA5O,KAAA2O,EAAgCJ,EAAOM,EAAoG,EAAA,CAAA,CADpI,GACoI,OAAAvM,QAAAC,QAAAmM,GAAAA,EAAAlM,KAAAkM,EAAAlM,KAAAgM,GAAAA,IAI/I,CAAC,MAAA3L,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKgO,uBAAsBA,SAACC,EAAkBC,OAAiBC,IAWiBC,EAXjBD,WAAA5N,GAAA6N,OAAAA,EAAA7N,EAWvDiB,QAAQQ,OAAO,IAAIzD,EAAS,IAAK,KAAM,iCAAiC,EAAA8P,EAPxElS,KAAImS,EAAA,WAAA,GAHPL,IAAa,IAAMA,GAAY,IAAMC,IAAc,KAAOA,GAAa,IAAGK,CAAAA,IAAAA,aAAA,IAAAC,EAOrEhN,QAAQC,QAAQ4M,EAAKjF,qBAAqBuD,IAAI8B,IAAa,aAAKL,IAAAI,CAAA,EANjEC,EAAcR,EAAYC,IAAAA,EAAYQ,iBAEvCL,EAAKjF,qBAAqB0D,IAAI2B,QAASE,EAC1CN,EAAKjF,qBAAoBwF,EAAzBD,EAA0BzB,IAAG,OAAA1L,QAAAC,QAAiB4M,EAAKpO,QAAoB2I,wBAAiCqF,EAAQ,cAAcC,EAAa,QAAMxM,cAAAmN,GAAjJD,EAAA1P,KAAAyP,EAA8BF,EAAQI,EAA6G,cAAAH,GAAAA,EAAAhN,KAAAgN,EAAAhN,KAAA6M,GAAAA,GAAA/M,CAAAA,CAD5I,GAC4IA,OAAAA,QAAAC,QAAA6M,GAAAA,EAAA5M,KAAA4M,EAAA5M,KAAAyM,GAAAA,EAAAG,GAOzJ,CAAC,MAAAvM,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK8O,6BAA4B,SAACC,GAAsB,IAAAC,IAS0BC,EAT1BD,EAAAA,SAAAE,GAAAD,OAAAA,EAAAC,EAShD1N,QAAQQ,OAAO,IAAIzD,EAAS,IAAK,KAAM,mCAAmC,EAAA4Q,EAP1EhT,KAAIiT,EADP,WAAA,GAAA,4CAA4CC,KAAKN,GAAeO,CAAAA,IAAAA,aAAA,IAAAC,EAK3D/N,QAAQC,QAAQ0N,EAAK9F,oBAAoBsD,IAAIoC,IAAmB,MAAKQ,OAAAN,EAAAM,EAAAA,CAAA,EAAAC,iBAJvEL,EAAK9F,oBAAoByD,IAAIiC,GAAeU,CAAAA,IAAAA,EAC/CN,EAAK9F,oBAAmBqG,EAAxBD,EAAyBvC,IAAG,OAAA1L,QAAAC,QAAuB0N,EAAKlP,QAAoB2I,GAAwBmG,YAAAA,EAAkB,QAAMrN,KAAAiO,SAAAA,GAA5HD,EAAAxQ,KAAAuQ,EAA6BV,EAAcY,EAAmF,EAAAH,CAAAA,IAAAA,OAAAA,GAAAA,EAAA9N,KAAA8N,EAAA9N,KAAA4N,GAAAA,GAAA9N,CAAAA,CAF9H,GAE8HA,OAAAA,QAAAC,QAAA2N,GAAAA,EAAA1N,KAAA0N,EAAA1N,KAAAsN,GAAAA,EAAAI,GAOpI,CAAC,MAAArN,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA8G,CAAA,EAnI0BlJ,GC+EjB2I,QAAAA,gBAAAA,GAAAA,GAAAA,QAAAA,aAAAA,QAAAA,WAUX,CAAA,IATC,gBAAA,kBACAA,GAAA,WAAA,aACAA,GAAA,SAAA,WACAA,GAAA,IAAA,MACAA,GAAA,QAAA,UACAA,GAAA,WAAA,aACAA,GAAA,OAAA,SACAA,GAAA,KAAA,OACAA,GAAA,QAAA,UAwtBUC,wBAAAA,GAAAA,QAAAA,UAAAA,QAAOA,QAelB,CAAA,IAdCA,GAAA,KAAA,GAAA,OAKAA,GAAAA,GAAA,6BAAA,GAAA,+BACAA,GAAAA,GAAA,MAAA,GAAA,QAEAA,GAAAA,GAAA,4BAAA,GAAA,8BACAA,GAAAA,GAAA,yBAAA,GAAA,2BACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,2BAAA,GAAA,6BAEAA,GAAAA,GAAA,4BAAA,GAAA,8BAmBUC,QAAAA,yBAAAA,GAAAA,GAAAA,QAAAA,sBAAAA,QAAAA,oBAMX,CAAA,IALC,YAAA,cACAA,GAAA,QAAA,UACAA,GAAA,YAAA,cACAA,GAAA,YAAA,cACAA,GAAA,aAAA,eA0MUC,QAAAA,iBAAAA,GAAAA,GAAAA,QAAWA,cAAXA,oBAGX,CAAA,IAFC,SAAA,WACAA,GAAA,SAAA,WA8JUC,QAAZA,gBAAA,GAAYA,GAAAA,QAAUA,aAAVA,QAAUA,WAGrB,CAAA,IAFCA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,KAAA,GAAA,OAghBUC,QAAAA,yBAAAA,GAAAA,GAAAA,QAAmBA,sBAAnBA,QAAmBA,oBAY9B,CAAA,IAXCA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,YAAA,GAAA,cAGW,IAgBDiH,GAgCAC,GA0BAC,GAtECC,GAAeA,gBACnBvM,SAAG,EAAArH,KACHuE,UACAsP,EAAAA,KAAAA,iBAHID,GAIGE,UAEhB,EAMYL,QAAZA,yBAAA,GAAYA,GAAAA,QAAAA,sBAAAA,QAAAA,oBA0BX,CAAA,IAzBCA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,KAAA,GAAA,OACAA,GAAAA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,aAAA,GAAA,eACAA,GAAAA,GAAA,IAAA,IAAA,MACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,WAAA,IAAA,aACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,OAAA,IAAA,SACAA,GAAAA,GAAA,IAAA,IAAA,MACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,OAAA,IAAA,SACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,KAAA,IAAA,OACAA,GAAAA,GAAA,YAAA,IAAA,cACAA,GAAAA,GAAA,IAAA,IAAA,MACAA,GAAAA,GAAA,WAAA,IAAA,aACAA,GAAAA,GAAA,QAAA,IAAA,UAOUC,QAAAA,uBAAAA,GAAAA,GAAAA,QAAiBA,oBAAjBA,QAAiBA,kBAyB5B,CAAA,IAxBCA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,WAAA,GAAA,aACAA,GAAAA,GAAA,SAAA,GAAA,WACAA,GAAAA,GAAA,gBAAA,GAAA,kBACAA,GAAAA,GAAA,iBAAA,GAAA,mBACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,kBAAA,IAAA,oBACAA,GAAAA,GAAA,0BAAA,IAAA,4BACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,iBAAA,IAAA,mBACAA,GAAAA,GAAA,qBAAA,IAAA,uBACAA,GAAAA,GAAA,SAAA,IAAA,WACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,qBAAA,IAAA,uBACAA,GAAAA,GAAA,gBAAA,IAAA,kBACAA,GAAAA,GAAA,QAAA,IAAA,UACAA,GAAAA,GAAA,4BAAA,IAAA,8BACAA,GAAAA,GAAA,cAAA,IAAA,gBACAA,GAAAA,GAAA,SAAA,IAAA,WAEUC,QAAZA,qBAAA,GAAYA,GAAAA,0BAAAA,QAAAA,gBAGX,CAAA,IAFCA,GAAA,OAAA,GAAA,SACAA,GAAAA,GAAA,YAAA,GAAA,cC/wDF,ICpCYI,GDoCNC,GAAkB,UAClBC,GAAoB,YACpBC,GAA0B,kBAE1BC,GAA2B,mBAEpBC,yBAAStL,GAQpB,SAAAsL,EAAY3Q,EAA8BC,GAA+B,IAAAjB,EAU5D,gBAV6BiB,IAAAA,GAA0B,IAClEjB,EAAAqG,EAAA/F,KAAMU,KAAAA,EAAeC,UARN2Q,mBAAa5R,EAAAA,EACb6R,aAAO,EAAA7R,EAEhB8R,mBAAqB,IAAIvH,IAA0GvK,EAEnI+R,sCAAuC,EAK7C/R,EAAK6R,QAAU7Q,EAAcwB,SAASC,QAEtCzC,EAAK4R,eAAgB,IAAII,EAAQC,sBAC9BC,WAAWlS,EAAK6R,QAAUN,UAAuB,CAAEY,mBAAoB,kBAAM7U,EAAUE,WAAW,IAClG4U,yBACAC,wBACAC,iBAAiBtS,EAAKiB,eAAiB+Q,EAAQV,SAASiB,MAAQP,EAAQV,SAAStD,MACjFwE,QAAQxS,CACb,CAnBoBU,EAAAiR,EAAAtL,GAmBnB,IAAAjF,EAAAuQ,EAAAjU,UAsbA,OAtbA0D,EAEKqR,IAAGA,SAACpR,GAAuB,IAAA,IAAAiC,EAER/F,KAD6C,OAApE8D,EAAQqR,SAAWC,KAAKC,iBAAiBC,kBAAkBH,SAAS9P,QAAAC,QAC7CS,EAAKjC,QAAyBkQ,GAAiB,OAAQlQ,IAAQyB,cAAhFrB,GAEN,OAAO6B,EAAKwP,2BAA2BrR,EAASuH,UAAW,EAC7D,CAAC,MAAA7F,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK2R,YAAW,SAACC,EAA2B3R,GAA+B,IAAA,IAAAiG,EAEnD/J,KAD6C,OAApE8D,EAAQqR,SAAWC,KAAKC,iBAAiBC,kBAAkBH,SAAS9P,QAAAC,QAC7CyE,EAAKjG,QAAoCkQ,gBAA4ByB,EAAqB,OAAQ3R,IAAQyB,KAAA,SAA3HrB,GAKN,OAFAnE,EAAUE,YAAcF,EAAUE,aAAeiE,EAASjE,YAEnD8J,EAAKwL,2BAA2BrR,EAASuH,UAAW,EAC7D,CAAC,MAAA7F,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK6R,mBAAkB,SAACC,GAAwB,IAC/C,OAAAtQ,QAAAC,QAAOtF,KAAK8D,QAAkCkQ,GAAe,WAAW2B,EAAoB,OAC9F,CAAC,MAAA/P,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEK+R,wBAAeD,OACnB,OAAAtQ,QAAAC,QAAOtF,KAAK8D,QAAmCkQ,GAAe,YAAY2B,EAAoB,OAChG,CAAC,MAAA/P,UAAAP,QAAAQ,OAAAD,KAAA/B,EAEKgS,gBAAeA,SAAC/R,GAAoB,IACxC,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAyBmQ,GAAiB,QAAS,OAAQnQ,GACzE,CAAC,MAAA8B,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKiS,uBAAsB,SAAChS,GAA2B,IACtD,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAgCmQ,kBAAiC,OAAQnQ,GACvF,CAAC,MAAA8B,UAAAP,QAAAQ,OAAAD,KAAA/B,EAEKkS,gBAAeA,SAACjS,GAA0B,IAC9C,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAyBmQ,GAAiC,eAAA,OAAQnQ,GAChF,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKmS,8BAA6B,SAAClS,GAAuC,QAAA8L,EAClD5P,KAAIqF,OAAAA,QAAAC,QAAJsK,EAAK9L,QAA4BmQ,GAAyC,uBAAA,OAAQnQ,IAAQyB,KAAA,SAA3GrB,GAEN,OAAO0L,EAAK2F,2BAA2BrR,EAASuH,UAAW,EAC7D,CAAC,MAAA7F,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKoS,cAAa,SAACC,EAA8BC,GAAW,IAK3D,OAAA9Q,QAAAC,QAAOtF,KAAK8D,QAAiBoQ,GAAuB,QAAQgC,EAAwB,OAJpD,CAC9BC,IAAKA,IAIT,CAAC,MAAAvQ,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKuS,cAAa,SAACF,GAA4B,IAK9C,OAAA7Q,QAAAC,QAAOtF,KAAK8D,QAAiBoQ,WAA+BgC,EAAwB,OAJpD,CAC9BC,IAAK,KAIT,CAAC,MAAAvQ,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKwS,mBAAkB,SAACH,EAA8BI,GAAgB,IAKrE,OAAAjR,QAAAC,QAAOtF,KAAK8D,QAAiBoQ,GAAuB,YAAYgC,EAAwB,OAJ/C,CACvCI,QAASA,IAIb,CAAC,MAAA1Q,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK0S,cAAa,SAACL,EAA8BpS,GAAgB,IAChE,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAiBoQ,GAAmCgC,YAAAA,EAAwB,OAAQpS,GAClG,CAAC,MAAA8B,UAAAP,QAAAQ,OAAAD,KAAA/B,EAEK2S,eAAcA,SAAC1S,GAAgC,IACnD,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAqC2S,kBAA2B,OAAQ3S,GACtF,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK6S,6BAA4B,SAACf,EAA0BgB,EAAsBC,OAAqBC,IAChG/S,EAAoC,CACxCgT,eAAgBH,EAChBC,aAAcA,EACdG,YAAazK,QAAAA,YAAY0K,UAG3B,OAAA3R,QAAAC,QAAOtF,KAAK8D,QAAiBqQ,GAAwB,UAAUwB,EAAoB,OAAQ7R,GAC7F,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKoT,2BAA0B,SAACtB,EAA0BuB,GAAc,IAAA,IACjEpT,EAAkC,CACtCqT,SAAUD,EAAOxW,QAAQ,KAAM,IAAIA,QAAQ,MAAO,IAAIA,QAAQ,KAAM,IACpEqW,YAAazK,QAAAA,YAAY0K,UAG3B,OAAA3R,QAAAC,QAAOtF,KAAK8D,QAAiBqQ,GAAgCwB,QAAAA,EAAoB,OAAQ7R,GAC3F,CAAC,MAAA8B,UAAAP,QAAAQ,OAAAD,KAAA/B,EAEKuT,0BAAyBA,SAACzB,GAAyB,IAAA,IAAA0B,EAErDrX,KADF,GAAI2V,EACF0B,EAAKC,iCAAiC3B,GACtC0B,EAAK9C,0BAA0BoB,OAC1B,CACL0B,EAAK7C,sCAAuC,EAE5C,QAAiD+C,EAAjDC,2pBAAAC,CAAiBJ,EAAK9C,mBAAmBmD,YAAQH,EAAAC,KAAAG,MAC/CC,cADWL,EAAAM,MACQC,kBAGrBT,EAAK9C,mBAAmBwD,OAC1B,CAEA,OAAKV,EAAK7C,sCAAwC6C,EAAKhD,cAAc2D,QAAUvD,EAAQwD,mBAAmBC,aAKnG7S,QAAQC,WAJb+R,EAAKhD,cAAc8D,IAAI,0BACvB9S,QAAAC,QAAO+R,EAAKhD,cAAc+D,QAI9B,CAAC,MAAAxS,UAAAP,QAAAQ,OAAAD,KAAA/B,EAEK0R,2BAA0BA,SAACI,GAAyB,IAAA,IAAA0C,EAMlDrY,KA8DH,OAxCC2V,GACF0C,EAAK9D,mBAAmBxD,IAAI4E,EAAkB,CAC5C2C,iBAAkB,GAClBC,sBAAsB,EACtBT,iBAAkB,OAItBO,EAAKhE,cAAc8D,IAAI,0BACvBE,EAAKhE,cAAcmE,GAAG,kCAAiCC,GAAqC,QA8BlEC,EA9BsEtK,EAAA,SAAAuK,GAAA,OAAAD,EAAAC,EA8BvFtT,QAAQC,SAAS,EA7BxB+S,EAAKf,iCAAiCmB,EAAe9C,mBAIhD0C,EAAK9D,mBAAmB5D,IAAI8H,EAAe9C,mBAAqB0C,EAAK7D,sCACxE6D,EAAK9D,mBAAmBxD,IAAI0H,EAAe9C,iBAAkB,CAC3D2C,iBAAkB,GAClBC,sBAAsB,EACtBT,iBAAkB,OAErB,IAAAxJ,EAEG+J,WAAAA,GAAAA,EAAK9D,mBAAmB5D,IAAI8H,EAAe9C,kBACC,OAA9C0C,EAAKO,yBAAyBH,GAAgB,WAAA,GAE1CA,EAAeI,WAC+C,OAAhER,EAAK9D,mBAAyB,OAACkE,EAAe9C,kBAAkB,WAAA,IAE3D0C,EAAK7D,qCAEyC,OAAjD6D,EAAKhE,cAAc8D,IAAI,0BAA0B9S,QAAAC,QACpC+S,EAAKjB,0BAA0BqB,EAAe9C,mBAAiBpQ,KAAAuT,SAAAA,GAAA,OAAAJ,EAAA,EAAAI,CAAA,EAAA,CALd,GAShET,EAAKU,8BAA8BN,EAAe9C,iBAAkB,IAAM,CAZ9B,EAY8B,CAb1E0C,GAa0E,OAAAhT,QAAAC,QAAAgJ,GAAAA,EAAA/I,KAAA+I,EAAA/I,KAAA6I,GAAAA,EAAAE,GAKhF,CAAC,MAAA1I,GAAAP,OAAAA,QAAAQ,OAAAD,EAAC,CAAA,GAACP,QAAAC,QAlEG,WAAK,QAAcwN,EAAA,OAAAzN,QAAAC,gCAAA,oBACnB0I,EAAA+E,UAAAD,EAAAC,EAUK1N,QAAQC,SAAS,CATpBqQ,GAEF0C,EAAKU,8BAA8BpD,EAAkB,KACtD,IAAA1H,EAEGoK,WAAAA,GAAAA,EAAKhE,cAAc2D,QAAUvD,EAAQwD,mBAAmBe,UAAS3T,OAAAA,QAAAC,QACtD+S,EAAKhE,cAAc4E,SAAO1T,KAAA2T,SAAAA,UAAApG,IAAAoG,CAAA,EAAA,CADrCb,GACqC,OAAApK,GAAAA,EAAA1I,KAAA0I,EAAA1I,KAAAyI,GAAAA,EAAAC,EAI3C,6DAZuBtJ,CAAA,EAYtB,SAAQc,GACP,OAAIkQ,GACF0C,EAAKf,iCAAiC3B,GAEtCtR,QAAQoB,MAAM,uEACd4S,EAAKU,8BAA8BpD,EAAkB,MAE9CtQ,QAAQC,WAGVD,QAAQQ,OAAOJ,EACxB,GACF,CAAC,MAAAG,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,CA4CKqT,IAAO1T,KAAA0M,WAAAA,IAAAA,WAAA9N,EAAAC,UAAA6N,EAAA7N,EAYNiB,QAAQC,QAAQ,KAAK,CAAA,IAAAZ,EAVxBiR,WAAAA,GAAAA,EAAgBtQ,OAAAA,QAAAC,QAEkB+S,EAAK3C,mBAAmBC,IAAiBpQ,cAAvE4T,GACNd,EAAKO,yBAAyBO,GAAuB,IAAA9G,EAE9ChN,QAAQC,QAAQ6T,UAAsBlH,IAAAI,CAAA,GAE7CgG,EAAK7D,sCAAuC,CAAK,CAP/CmB,GAO+C,OAAAjR,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,EAAAO,EAAA,EAIrD,CAAC,MAAAkB,UAAAP,QAAAQ,OAAAD,KAAA/B,EAEDuV,yBAAA,SAAyBC,EAAmBC,EAAoBC,EAAoBC,EAAqBC,GACvG,IACIC,EASJ,OANEA,EAJkC,oBAAXpZ,aAAqD,IAApBA,OAAOC,SAI/CoZ,KAAKvY,KAAKwY,UAAUH,GAAW,CAAE,IAEjCnY,OAAOC,KAAKH,KAAKwY,UAAUH,GAAW,CAAA,GAAK,UAAUxY,WAIzDjB,KAACsU,QAAgB+E,SAAAA,MAAaC,EAAU,IAAIC,EAAcC,KAAAA,GAAe,IAAE,IAAIE,CAC/F,EAAC7V,EAEDgW,qBAAA,SAAqBC,GACnB,OACEA,IAAyBvR,QAAoBA,qBAACwR,KACV,QAApCD,EAAqB7Y,YACrB6Y,IAAyBvR,QAAAA,qBAAqByR,KACV,QAApCF,EAAqB7Y,cAMzB,EAAC4C,EAEDoW,UAAA,SAAUC,GACR,IAAKA,EACH,SAKF,GAFAA,EAAmBA,EAAiBxZ,QAAQ,QAAS,KAEhD,WAAWyZ,KAAKD,GACnB,OAAO,EAST,IANA,IAAME,EAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACtCvX,EAASqX,EAAiBrX,OAC1BwX,EAAM,EACNC,EAAM,EACNzC,EAAQ,EAELhV,GACLgV,EAAQ0C,SAASL,EAAiBM,SAAS3X,GAAS,IAEpDyX,IADAD,GAAO,GACMD,EAAMvC,GAASA,EAG9B,OAAOyC,EAAM,IAAO,CACtB,EAACzW,EAEO+U,yBAAA,SAAyBH,GAAqC,IAAAgC,EACpEza,KAkHM0a,EAAoB1a,KAAKuU,mBAAmB/D,IAAIiI,EAAe9C,kBAEjE+E,GAAqBtZ,KAAKwY,UAAUnB,KAAoBiC,EAAkBpC,kBAE5EoC,EAAkBpC,iBAAmBlX,KAAKwY,UAAUnB,GAEhDzY,KAAK0D,iBACPW,QAAQC,MAAM,sCACdD,QAAQc,IAAIsT,EAAgB,CAAErT,MAAO,QAGvCpF,KAAK2D,OAAO6F,QAAQ3H,EAAuB4W,GA7Hf,SAACA,GAC7B,IAAIkC,GAAY,EAGVC,EAA+B,SAACC,GAEpC,IAAKF,EAAW,CACd,IAAMG,EAAkC,CACtCtY,QAASqY,EAAkBrY,QAC3B0T,qBAAsB2E,EAAkBpP,UACxCsP,sBAAuBtC,GAGzB,GACEoC,EAAkBpW,SAAWiP,QAAAA,kBAAkBsH,sBAC/CH,EAAkBpW,SAAWiP,0BAAkBuH,4BAC/C,CACAN,GAAY,EAGZ,IAAMO,EACJzC,EAAe0C,oBAAoBC,cAAcC,KAAK,SAACR,GAAsB,OAAAA,EAAkBS,aAAa,IAC5G7C,EAAe0C,oBAAoBI,aAAaF,KAAK,SAACR,UAAsBA,EAAkBS,aAAa,IAC3G7C,EAAe0C,oBAAoBK,UAAUH,KAAK,SAACR,GAAiB,OAAKA,EAAkBS,aAAa,IACxG7C,EAAe0C,oBAAoBM,QAAQJ,KAAK,SAACR,UAAsBA,EAAkBS,aAAa,IACtG7C,EAAe0C,oBAAoBO,MAAML,KAAK,SAACR,GAAiB,OAAKA,EAAkBS,aAAa,IACpG,KAEFR,EAAWa,iBAAmB,CAC5BC,cAAef,EAAkBe,cACjCC,oBAAqBhB,EAAiC,eAAK,KAC3DiB,yBAA2D,OAAjCZ,EAAwCA,EAA6BI,cAAgB,KAC/GS,KAAMlB,EAAkBkB,MAGtBtB,EAAK/W,iBACPW,QAAQC,MAAM,uCACdD,QAAQc,IAAI2V,EAAY,CAAE1V,MAAO,QAGnCqV,EAAK9W,OAAO6F,QAAQvH,EAAwB6Y,EAC9C,MAAWD,EAAkBpW,SAAWiP,QAAAA,kBAAkBsI,aACxDrB,GAAY,EAIZG,EAAWmB,UAAYxB,EAAKZ,qBAAqBtR,QAAoBA,qBAACkI,MAErCoK,KACwBf,uBACvDgB,EAAWmB,UAAYxB,EAAKZ,qBAFGgB,EAE2Cf,uBAGxEW,EAAK/W,iBACPW,QAAQC,MAAM,8BACdD,QAAQc,IAAI2V,EAAY,CAAE1V,MAAO,QAGnCqV,EAAK9W,OAAO6F,QAAQxH,EAAe8Y,IAC1BD,EAAkBpW,SAAWiP,QAAiBA,kBAACwI,kBACxDvB,GAAY,EAERF,EAAK/W,iBACPW,QAAQC,MAAM,kCACdD,QAAQc,IAAI2V,EAAY,CAAE1V,MAAO,QAGnCqV,EAAK9W,OAAO6F,QAAQtH,EAAmB4Y,GAE3C,CACF,EAGArC,EAAe0D,eAAeC,MAAMC,QAAQ,SAACxB,GAC3C,IAAKF,GAAaE,EAAkBpW,SAAWiP,QAAiBA,kBAAC4I,kBAAoBzB,EAAkB0B,gBAAiB,CACtH5B,GAAY,EACZF,EAAKlG,mBAAmB/D,IAAIiI,EAAe9C,kBAAkB4C,sBAAuB,EAEpF,IAAMuC,EAAa,CAAEjW,IAAKgW,EAAkB0B,iBAExC9B,EAAK/W,iBACPW,QAAQC,MAAM,mCACdD,QAAQc,IAAI2V,EAAY,CAAE1V,MAAO,QAGnCqV,EAAK9W,OAAO6F,QAAQzH,EAAoB+Y,EAC1C,MACEF,EAA6BC,EAEjC,IAEKF,GAAaF,EAAKlG,mBAAmB/D,IAAIiI,EAAe9C,kBAAkB4C,uBAC7EkC,EAAKlG,mBAAmB/D,IAAIiI,EAAe9C,kBAAkB4C,sBAAuB,EAEhFkC,EAAK/W,gBACPW,QAAQC,MAAM,mCAGhBmW,EAAK9W,OAAO6F,QAAQrH,IAGtBsW,EAAe0D,eAAef,cAAciB,QAAQ,SAACxB,GAAsB,OAAAD,EAA6BC,EAAkB,GAC1HpC,EAAe0D,eAAeZ,aAAac,QAAQ,SAACxB,UAAsBD,EAA6BC,EAAkB,GAGzHpC,EAAe0C,oBAAoBI,aAAac,QAAQ,SAACxB,UAAsBD,EAA6BC,EAAkB,GAC9HpC,EAAe0C,oBAAoBK,UAAUa,QAAQ,SAACxB,GAAsB,OAAAD,EAA6BC,EAAkB,GAC3HpC,EAAe0C,oBAAoBC,cAAciB,QAAQ,SAACxB,GAAiB,OAAKD,EAA6BC,EAAkB,GAC/HpC,EAAe0C,oBAAoBM,QAAQY,QAAQ,SAACxB,GAAiB,OAAKD,EAA6BC,EAAkB,GACzHpC,EAAe0C,oBAAoBiB,MAAMC,QAAQ,SAACxB,GAAsB,OAAAD,EAA6BC,EAAkB,GACvHpC,EAAe0C,oBAAoBqB,QAAQH,QAAQ,SAACxB,GAAsB,OAAAD,EAA6BC,EAAkB,GACzHpC,EAAe0C,oBAAoBO,MAAMW,QAAQ,SAACxB,GAAsB,OAAAD,EAA6BC,EAAkB,EACzH,CAeE4B,CAAsBhE,GAElBA,EAAeI,aACb7Y,KAAK0D,iBACPW,QAAQC,MAAM,kCACdD,QAAQc,IAAIsT,EAAgB,CAAErT,MAAO,QAGvCpF,KAAK2D,OAAO6F,QAAQ1H,EAAmB2W,GAEvCzY,KAAKsX,iCAAiCmB,EAAe9C,kBACrD3V,KAAKuU,0BAA0BkE,EAAe9C,oBAEvC3V,KAAK0D,gBACdW,QAAQqY,KAAK,4FAEjB,EAAC7Y,EAEa8Y,wBAAuB,SAAChH,GAAwB,QAAAvG,EAAA,WAqB5D,OAAO/J,QAAQC,SAAU,EAAAsX,EApBzB5c,KAAA4c,EAAKtF,iCAAiC3B,GAAkB,IAAA7G,EAAA,WAAA,GAEpD8N,EAAKrI,mBAAmB5D,IAAIgF,GAAiBtQ,OAAAA,QAAAC,QAClBsX,EAAKlH,mBAAmBC,IAAiBpQ,KAAA,SAAhEkT,GAAc1J,IAAAA,gBAEhB0J,EAAc,CAChBmE,EAAKhE,yBAAyBH,GAAgB,IAAAhK,gBAEzCgK,EAAeI,WACmClK,CAAAA,IAAAA,EAEjD,WAAA,IAACiO,EAAKpI,qCAEyC,OAAjDoI,EAAKvI,cAAc8D,IAAI,0BAA0B9S,QAAAC,QAC3CsX,EAAKxF,0BAA0BzB,IAAiBpQ,KAAA,WAAA,EAAA,CAHpD,GAGoD,GAAAoJ,GAAAA,EAAApJ,KAAA,OAAAoJ,EAAApJ,wBALxDqX,EAAK7D,8BAA8BpD,SAKqBlH,GAAAA,EAAAlJ,YAAAkJ,EAAAlJ,KAAA,WAAA,EAAA,CAAA,IAAA,GAAAwJ,GAAAA,EAAAxJ,YAAAwJ,EAAAxJ,KAAAF,WAAAA,EAAAA,EAAAA,CAdN,GAcMA,OAAAA,QAAAC,QAAAwJ,GAAAA,EAAAvJ,KAAAuJ,EAAAvJ,KAAA6J,GAAAA,IAOhE,CAAC,MAAAxJ,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEOkV,8BAAA,SAA8BpD,EAA2BkH,GAAuB,IAAAC,EAAvBD,KAC/D,YAD+DA,IAAAA,EAAmB,MAC9E7c,KAAKuU,mBAAmB5D,IAAIgF,GAAmB,CACjD,IAAM+E,EAAoB1a,KAAKuU,mBAAmB/D,IAAImF,GACtDiC,cAAc8C,EAAkB5C,kBAChC4C,EAAkB5C,iBAAmBiF,YAAY,WAAM,OAAAD,EAAKH,wBAAwBhH,EAAiB,EAAEkH,EACzG,CACF,EAAChZ,EAEOyT,iCAAA,SAAiC3B,GACnC3V,KAAKuU,mBAAmB5D,IAAIgF,IAC9BiC,cAAc5X,KAAKuU,mBAAmB/D,IAAImF,GAAkBmC,iBAEhE,EAAC1D,CAAA,EAzc2B5Q,GErCxBwZ,GAAuB,eAEvBC,GAAsB,wBAGtBC,GAAsB,uBAEfC,yBAAUrU,YAAAqU,IAAA,OAAArU,EAAAC,WAAAC,YAAAhJ,IAAA,CAAAmD,EAAAga,EAAArU,GAAA,IAAAjF,EAAAsZ,EAAAhd,UAwFpBgd,OAxFoBtZ,EAEfuZ,eAAcA,SAACtZ,GAAiB,IACpC,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAkBkZ,GAAsB,OAAQlZ,GAC9D,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKwZ,wBAAevZ,OACnB,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAkBkZ,GAAsB,MAAOlZ,GAC7D,CAAC,MAAA8B,GAAA,OAAAP,QAAAQ,OAAAD,KAAA/B,EAEKyZ,eAAcA,eAAAvT,IAAAA,EACZ/J,YAAIqF,QAAAC,QAAJyE,EAAKjG,QAAkBkZ,GAAsB,WAASzX,gBAQ5D,OANIwE,EAAKrG,gBACPW,QAAQC,MAAM,iCAGhByF,EAAKpG,OAAO6F,QAAQ9H,GAEb2D,QAAQC,SAAU,EAC3B,CAAC,MAAAM,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK0Z,YAAW,WAAA,IACf,OAAAlY,QAAAC,QAAOtF,KAAK8D,QAAkBkZ,GAAsB,OACtD,CAAC,MAAApX,GAAA,OAAAP,QAAAQ,OAAAD,KAAA/B,EAEK2Z,qBAAoBA,eACxB,OAAAnY,QAAAC,QAAOtF,KAAK8D,QAAmBkZ,GAAoB,aAAc,OACnE,CAAC,MAAApX,UAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK4Z,wBAAuB,WAAA,IAC3B,OAAApY,QAAAC,QAAOtF,KAAK8D,QAAiBkZ,uBAAyC,QACxE,CAAC,MAAApX,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAGK6Z,kBAASC,EAAuBC,GAAe,IAMnD,OAAAvY,QAAAC,QAAOtF,KAAK8D,QAAiBoZ,gBAAiC,OAL7B,CAC/BS,cAAeA,EACfC,OAAQA,IAIZ,CAAC,MAAAhY,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKga,+BAAsBC,OAC1B,OAAAzY,QAAAC,QAAOtF,KAAK8D,QAAoBoZ,GAAmB,iBAAiBY,EAAgC,WAAA,OACtG,CAAC,MAAAlY,GAAA,OAAAP,QAAAQ,OAAAD,KAAA/B,EAGKka,aAAYA,SAACC,EAAuBC,GAAwC,IAAA,IAC5EC,EAAc,GAUlB,OARID,GAAmBjb,OAAOmb,KAAKF,GAAiBpb,OAAS,IAK3Dqb,EAAkBE,IAJHpb,OAAOqb,QAAQJ,GAC3Bnd,IAAI,SAAAwd,GAAE,IAAKzG,EAAKyG,EAAS,GAAA,OAAAC,mBAAhBD,MAAuC,IAAIC,mBAAmB1G,EAAM,GAC7E1W,KAAK,MAKVkE,QAAAC,QAAOtF,KAAK8D,QAAyB0a,sBAAqBR,EAAgBE,EAAe,OAC3F,CAAC,MAAAtY,GAAA,OAAAP,QAAAQ,OAAAD,KAAA/B,EAGK4a,eAAcA,SAACC,GAAmB,IAKtC,OAAArZ,QAAAC,QAAOtF,KAAK8D,QAAiB6a,6BAA6B,OAJhC,CACxBD,YAAaA,IAIjB,CAAC,MAAA9Y,GAAA,OAAAP,QAAAQ,OAAAD,KAAA/B,EAGK+a,eAAcA,eAClB,OAAAvZ,QAAAC,QAAOtF,KAAK8D,QAAmBmZ,GAAqB,OACtD,CAAC,MAAArX,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKgb,WAAU,SAACC,OACf,OAAAzZ,QAAAC,QAAOtF,KAAK8D,QAAoBmZ,GAAuB6B,IAAAA,EAAoB,OAC7E,CAAC,MAAAlZ,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKkb,cAAaA,SAACD,GAAwB,IAC1C,OAAAzZ,QAAAC,QAAOtF,KAAK8D,QAAiBmZ,OAAuB6B,EAAoB,UAC1E,CAAC,MAAAlZ,UAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAGKmb,eAAc,SAAClb,GAAuB,IAC1C,OAAAuB,QAAAC,QAAOtF,KAAK8D,QA3FY,uBA2FuB,OAAQA,GACzD,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAAuX,CAAAA,EAAAA,CAAA,EAxF4B3Z,GCPlByb,gBAAQnW,SAAAA,GAAAmW,SAAAA,IAAA,QAAAxc,EAAAkK,EAAA3D,UAAAnG,OAAA+J,EAAA,IAAAjK,MAAAgK,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAA7D,UAAA6D,UAAApK,EAAAqG,EAAA/F,KAAAgG,MAAAD,EAAAgE,CAAAA,MAAAA,OAAAF,KAAAnK,MACFyc,QAAU,IAAIlS,IAAkBvK,CAAA,CAD9BU,EAAA8b,EAAAnW,GAC8B,IAAAjF,EAAAob,EAAA9e,UAgBhD8e,OAhBgDpb,EAE3Csb,OAAMA,SAACC,GAAc,IAAAjb,IAAAA,aAKzB,OAAOkB,QAAQC,QAAQS,EAAKmZ,QAAQ1O,IAAI4O,IAAW,KAAM,EAAArZ,EAJpD/F,KAAI0E,iBAAJqB,EAAKmZ,QAAQvO,IAAIyO,GAAOC,CAAAA,IAAAA,EAC3BtZ,EAAKmZ,QAAOpO,EAAZuO,EAAatO,IAAG1L,OAAAA,QAAAC,QAAeS,EAAKjC,QAAgB2I,4BAAkC2S,EAAU,QAAM7Z,KAAAuI,SAAAA,GAAtGgD,EAAA/N,KAAAsc,EAAiBD,EAAMtR,EAAiF,EAAAzI,CAAAA,IAAAA,OAAAA,QAAAC,QAAAZ,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,IAI5G,CAAC,MAAAyB,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKyb,SAAQ,SAACC,EAAcC,QAAAA,IAAAA,IAAAA,EAAgB,KAAG,IAC9C,OAAID,EACFla,QAAAC,QAAOma,UAAOC,UAAUH,EAAM,CAAEI,qBAAsB,IAAKC,OAAQ,GAAKJ,MAAOA,KAG1Ena,QAAQQ,QACjB,CAAC,MAAAD,GAAAP,OAAAA,QAAAQ,OAAAD,EAAAqZ,CAAAA,EAAAA,CAAA,CAjBkBnW,CAAQtF,GCavBqc,GAAuB,eACvBC,GAAkB,mBAClBC,GAAkB,mBAClBC,GAAsB,uBACtBC,GAAmB,oBAEZC,gBAAU,SAAApX,GAAA,SAAAoX,IAAA,IAAA,IAAAzd,EAAAkK,EAAA3D,UAAAnG,OAAA+J,EAAAjK,IAAAA,MAAAgK,GAAAE,EAAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAA7D,UAAA6D,GAEY,OAFZpK,EAAAqG,EAAA/F,KAAAgG,MAAAD,SAAAgE,OAAAF,KAAA5M,MACJmgB,mBAAqB,IAAInT,IAA8BvK,EAChE2d,cAAuB,GAAE3d,CAAA,CAFZU,EAAA+c,EAAApX,GAEY,IAAAjF,EAAAqc,EAAA/f,UAuQhC+f,OAvQgCrc,EAEzBwc,2BAAA,SAA2BC,GACjC,IAAMC,EAAIC,EAAA,CAAA,EAAQF,GAElB,OAAW,IAAAG,MAAMF,EAAM,CACrB/P,IAAGA,SAACkQ,EAAQC,GACV,MAAa,kBAATA,EACED,EAAOE,+BAAiC,IAAI5a,KAAK0a,EAAOE,gCAAkC,IAAI5a,KACzF0a,EAAOG,qBAAuB,EAEhCH,EAAO9E,cAER8E,EAAeC,EACzB,EAEA5P,IAAG,SAAC2P,EAAQC,EAAM9I,GAEhB,OADC6I,EAAeC,GAAQ9I,GAE1B,CAAA,GAEJ,EAAChU,EAGaid,eAAcA,WAAA,IAAA,IAAA3c,EAAA,WAM1B,OAAOkB,QAAQC,QAAQS,EAAKqa,cAAe,EAAAra,EALvC/F,KAAI0E,EAAA,WAAA,GAA0B,IAA9BqB,EAAKqa,cAAcvd,OAAYwC,OAAAA,QAAAC,QACVS,EAAKjC,QAAgBkc,GAA8B,UAAA,QAAMza,KAAA,SAA1Ewb,GACNhb,EAAKqa,cAAgBW,GAAY,EAAG,EAAA,CAF9B,GAE8B,OAAA1b,QAAAC,QAAAZ,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,IAIxC,CAAC,MAAAyB,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKmd,sBAAqBA,WAAA,IACK3b,OAAAA,QAAAC,QAAJtF,KAAK8gB,kBAAgBvb,KAAzC0b,SAAAA,GAEN,OAAO5b,QAAQC,QAAQ2b,EAAYngB,IAAI,SAACogB,GAAC,OAAKA,EAAEC,IAAI,GAAEC,OAAQ,EAChE,CAAC,MAAAxb,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKwd,gCAA+BA,SAACC,GAAmB,IACzBjc,OAAAA,QAAAC,QAAJtF,KAAK8gB,kBAAgBvb,KAAA,SAAzC0b,GAEN,IAAMM,EAAKN,EAAY5F,KAAK,SAAC6F,GAAM,OAAAA,EAAEC,OAASG,CAAW,GAAE,OAElDjc,QAAQC,QADbic,EAEAA,EAAG/F,UACA1a,IAAI,SAAC0gB,GAAM,OAAAA,EAAEC,IAAI,GACjBC,OAAO,SAAC7J,EAAO8J,EAAOC,GAAI,OAAKA,EAAKC,QAAQhK,KAAW8J,CAAK,GAC5DP,OAIgB,GAAG,EAC5B,CAAC,MAAAxb,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKie,2BAA0B,SAACC,OACD1c,OAAAA,QAAAC,QAAJtF,KAAK8gB,kBAAgBvb,cAAzC0b,GACN,IAAMe,EAA4B,GAQlC,OANAf,EAAY5E,QAAQ,SAACiE,GACfA,EAAQ9E,UAAUH,KAAK,SAACmG,GAAM,OAAAA,EAAEC,OAASM,CAAY,IACvDC,EAA0BC,KAAK3B,EAAQa,KAE3C,GAEO9b,QAAQC,QAAQ0c,EAA0BN,OAAO,SAAC7J,EAAO8J,EAAOC,GAAI,OAAKA,EAAKC,QAAQhK,KAAW8J,CAAK,GAAEP,OAAQ,EACzH,CAAC,MAAAxb,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKqe,qCAAoCA,SAACZ,EAA0BS,GAAoB,IACzD1c,OAAAA,QAAAC,QAAJtF,KAAK8gB,kBAAgBvb,cAAzC0b,GAEN,IAAMkB,EAAMlB,EAAY5F,KAAK,SAAC6F,GAAM,OAAAA,EAAEC,OAASG,CAAW,GAC1D,GAAIa,EAAK,CACP,IAAMC,EAAMD,EAAI3G,UAAUH,KAAK,SAACmG,GAAM,OAAAA,EAAEC,OAASM,CAAY,GAC7D,GAAIK,EACF,OAAO/c,QAAQC,QAAQ8c,EAAIrB,SAASK,KAAK,SAACiB,EAAGC,GAAM,OAAAD,EAAEZ,KAAKc,cAAcD,EAAEb,KAAK,GAEnF,CAEA,OAAOpc,QAAQC,QAAQ,GAAI,EAC7B,CAAC,MAAAM,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEK2e,kBAAiB,SAACC,GAAwB,IAAA,IAAAzU,EAAA,WAK9C,IAAM0U,EAAiBvT,EAAKgR,mBAAmB3P,IAAIiS,IAAqB,KAAK,OAEpEpd,QAAQC,QADbod,EACqBvT,EAAKkR,2BAA2BqC,GAGlC,KAAK,EAAAvT,EATvBnP,KAAIiO,EAAA,WAAA,IAAJkB,EAAKgR,mBAAmBxP,IAAI8R,GAAiBE,CAAAA,IAAAA,EAChDxT,EAAKgR,mBAAkBrP,EAAvB6R,EAAwB5R,IAAG1L,OAAAA,QAAAC,QAAyB6J,EAAKrL,QAA4Bkc,GAA+ByC,YAAAA,EAAoB,QAAMld,KAAA,SAAA8J,GAA9IyB,EAAA/N,KAAA4f,EAA4BF,EAAgBpT,EAAoG,EAAA,CAAA,CADzI,GACyI,OAAAhK,QAAAC,QAAA2I,GAAAA,EAAA1I,KAAA0I,EAAA1I,KAAAyI,GAAAA,IASpJ,CAAC,MAAApI,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK+e,YAAWA,WAAA,IAAA,IAAA/X,EACQ7K,KAAI,OAAAqF,QAAAC,QAAJuF,EAAK/G,QAAO,GAAuBkc,GAAuB,QAAMza,cAAjFwb,GACN,OAAOA,EAASjgB,IAAI,SAACwf,GAAY,OAAAzV,EAAKwV,2BAA2BC,EAAQ,EAAE,EAC7E,CAAC,MAAA1a,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKgf,uBAAcvC,GAAwB,IAAA,IAAA1Q,EACjB5P,KAAI,OAAAqF,QAAAC,QAAJsK,EAAK9L,QAAO,GAAqBkc,GAAuB,OAAQM,IAAQ/a,KAA3Fud,SAAAA,GACN,OAAOlT,EAAKyQ,2BAA2ByC,EAAY,EACrD,CAAC,MAAAld,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKkf,cAAaA,SAACzC,GAAwB,IAAArQ,IAAAA,EACbjQ,KAAIqF,OAAAA,QAAAC,QAAJ2K,EAAKnM,WAA4Bkc,GAAuB,MAAOM,IAAQ/a,KAA9Fyd,SAAAA,GACN,OAAO/S,EAAKoQ,2BAA2B2C,EAAgB,EACzD,CAAC,MAAApd,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKof,cAAaA,SAACR,GAAwB,IAC1C,OAAApd,QAAAC,QAAOtF,KAAK8D,QAAiBkc,GAAuByC,IAAAA,EAAoB,UAC1E,CAAC,MAAA7c,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEDqf,oBAAA,SAAoBnC,GAClB,OAAOA,EAASoC,OAAO,SAACC,EAAQ9C,GAC9B,IAAA+C,EAAiC/C,EAAQmB,KAAKhhB,MAAM,KAAKK,IAAI,SAACwiB,GAAC,OAAKA,EAAEC,MAAM,GAArEC,EAASH,EAAA,GAAEI,EAAWJ,EAAA,GAW7B,OATKD,EAAOI,KACVJ,EAAOI,GAAa,IAGtBJ,EAAOI,GAAWvB,KAAIzB,EACjBF,GAAAA,EACHmB,CAAAA,KAAMgC,GAAenD,EAAQmB,QAGxB2B,CACT,EAAG,CAAE,EACP,EAACvf,EAGK6f,YAAW,WAAA,IACf,OAAAre,QAAAC,QAAOtF,KAAK8D,QAAkB+b,GAAsB,OACtD,CAAC,MAAAja,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEK8f,eAAc,SAAC7f,GAAiB,IACpC,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAkB+b,GAAsB,OAAQ/b,GAC9D,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK+f,eAAcA,SAAC9f,GAAiB,IACpC,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAkB+b,GAAsB,MAAO/b,GAC7D,CAAC,MAAA8B,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKggB,qBAAoB,WAAA,IACxB,OAAAxe,QAAAC,QAAOtF,KAAK8D,QAAmB+b,GAAkC,aAAA,OACnE,CAAC,MAAAja,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKigB,wBAAuBA,WAAA,IAC3B,OAAAze,QAAAC,QAAOtF,KAAK8D,QAAiB+b,GAAoB,oBAAqB,QACxE,CAAC,MAAAja,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAGKkgB,mBAAkBA,SAAC7M,GAAe,IAAAG,IAClC2M,EAAc,GAKlB,OAJI9M,IACF8M,EAAc9M,EAAOxW,QAAQ,KAAM,IAAIA,QAAQ,MAAO,IAAIA,QAAQ,KAAM,KAG1E2E,QAAAC,QAAOtF,KAAK8D,QAAiBgc,GAAmBkE,IAAAA,EAAe,QACjE,CAAC,MAAApe,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEK8G,YAAW,SAACC,EAAkBsM,OAAemB,IAC3CvU,EAAkC,CACtC8G,SAAUA,GAGRoZ,EAAc,GAGjB,OAFG9M,IACF8M,EAAc9M,EAAOxW,QAAQ,KAAM,IAAIA,QAAQ,MAAO,IAAIA,QAAQ,KAAM,KACzE2E,QAAAC,QAEkCtF,KAAK8D,QAAoCgc,GAA4BkE,aAAAA,EAAe,OAAQlgB,IAAQyB,KAAjI0e,SAAAA,GAIN,OAFAlkB,EAAUE,YAAcgkB,EAAqBhkB,aAAeF,EAAUE,YAE/DoF,QAAQC,QAAQ2e,EAAsB,EAC/C,CAAC,MAAAre,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKqgB,qBAAoBA,SAACzC,GAAY,IAGnC,OAAApc,QAAAC,QAEqBtF,KAAK8D,QAA6C+b,GAAsC,iBAAA,OAJ9D,CAC/CkC,aAAcN,KAG+Glc,KAAA,SAAzHrB,GAEN,OAAIA,EAASjE,aACXF,EAAUE,YAAciE,EAASjE,YAC1BoF,QAAQC,SAAQ,IAGlBD,QAAQC,SAAQ,EAAO,EAChC,CAAC,MAAAM,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAGKsgB,WAAU,SAAC9a,EAAkBC,EAAkB8a,EAAuBzN,OAOxE,OAAAtR,QAAAC,QAE0BtF,KAAK8D,QAAuBmc,GAAkB,OARhC,CACxC5W,SAAUA,EACVC,SAAUA,EACV8a,aAAcA,EACdzN,aAAcA,EACd0N,aAAa,KAG2E9e,KAAA,SAApFgE,GAKN,OAHAxJ,EAAUE,YAAcsJ,EAActJ,YACtCF,EAAUG,aAAeqJ,EAAcrJ,aAEhCmF,QAAQC,QAAQiE,EAAe,EACxC,CAAC,MAAA3D,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKygB,iBAAgBA,SAAC7O,GAAyB,IACdpQ,OAAAA,QAAAC,QAAJtF,KAAK8D,QAA0Bmc,GAAgB,WAAWxK,EAAqB,SAAOlQ,KAA5GgE,SAAAA,GAKN,OAHAxJ,EAAUE,YAAcsJ,EAActJ,YACtCF,EAAUG,aAAeqJ,EAAcrJ,aAEhCmF,QAAQC,QAAQiE,EAAe,EACxC,CAAC,MAAA3D,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK0gB,iBAAgBA,WAAA,IACpB,OAAAlf,QAAAC,QAAOtF,KAAK8D,QAAyBmc,GAAkB,OACzD,CAAC,MAAAra,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAGK2gB,iBAAgBA,SAACC,EAA2BC,EAAyBC,GAA0B,IACxE,OAAAtf,QAAAC,QAAJtF,KAAK8D,QAA0Bic,GAAe,UAAU0E,EAAiB,IAAIC,EAAkB,OAAQC,IAAkBpf,KAAA,SAA1IrB,GAIN,OAFAnE,EAAUE,YAAciE,EAAS0gB,kBAAoB7kB,EAAUE,YAExDoF,QAAQC,QAAQpB,EAAU,EACnC,CAAC,MAAA0B,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKghB,4BAA2B,SAACJ,EAA2BC,OAC1Brf,OAAAA,QAAAC,QAAJtF,KAAK8D,QAAkCic,GAA0B0E,WAAAA,EAAqBC,IAAAA,EAAkB,QAAMnf,KAAA,SAArIuf,GAIN,OAFA/kB,EAAUE,YAAc6kB,EAAe7kB,aAAeF,EAAUE,YAEzDoF,QAAQC,QAAQwf,EAAgB,EACzC,CAAC,MAAAlf,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKkhB,0BAAyB,SAACnJ,EAAuBoJ,OAAkBC,IACnEC,EAAkBF,EAAS/jB,WAK/B,OAJIkkB,OAAOC,UAAUJ,KACnBE,EAAkBvd,QAAAA,SAASqd,IAG7B3f,QAAAC,QAAOtF,KAAK8D,QAAmCic,GAAe,cAAcnE,EAAa,aAAasJ,EAAmB,OAC3H,CAAC,MAAAtf,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEKwhB,6BAA4BA,SAACzJ,EAAuBoJ,GAAkB,IAAA,IACtEE,EAAkBF,EAAS/jB,WAK/B,OAJIkkB,OAAOC,UAAUJ,KACnBE,EAAkBvd,QAAQA,SAACqd,IAG7B3f,QAAAC,QAAOtF,KAAK8D,QAAsCic,GAAe,mBAAmBnE,EAAa,aAAasJ,EAAmB,OACnI,CAAC,MAAAtf,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAGKyhB,WAAUA,SAACxhB,GAAqB,IACpC,OAAAuB,QAAAC,QAAOtF,KAAK8D,QAAiB+b,kBAAoC,OAAQ/b,GAC3E,CAAC,MAAA8B,GAAAP,OAAAA,QAAAQ,OAAAD,EAAAsa,CAAAA,EAAAA,CAAA,CAzQoB,CAAQ1c,GCrBzB+hB,GAAY,YAELC,gBAAe,WAI1B,SAAAA,EAAYC,GACV,GAJFC,KAAAA,gBACQC,YAAM,EAGY,OAApBF,IAA6BA,EAAgB5iB,OAC/C,MAAU,IAAAQ,MAAM,2CAGlBrD,KAAK0lB,IAAMD,EACXzlB,KAAK2lB,OAAS3lB,KAAK4lB,SAASH,EAC9B,CAAC,IAAA5hB,EAAA2hB,EAAArlB,iBAAA0D,EAEDgiB,OAAA,SAAOC,GACL,IAAK9lB,KAAK2lB,OAAO9iB,OACf,OAAO7C,KAAK0lB,IAGdI,EAAaA,GAAc,GAG3B,IAFA,IAAMvjB,EAAS,GAENwjB,EAAI,EAAGA,EAAI/lB,KAAK2lB,OAAO9iB,SAAUkjB,EAAG,CAC3C,IAAM1lB,EAAQL,KAAK2lB,OAAOI,GACA,iBAAf1lB,EAAMohB,KACXqE,EAAWxe,eAAejH,EAAMohB,MAClClf,EAAO0f,KAAKjiB,KAAKgmB,OAAOF,EAAWzlB,EAAMohB,QAEzClf,EAAO0f,KAAK5hB,EAAMqlB,KAGpBnjB,EAAO0f,KAAK5hB,EAAMkf,KAEtB,CAEA,OAAOhd,EAAOpB,KAAK,GACrB,EAAC0C,EAEDoiB,eAAA,SAAeC,GAIb,IAHA,IAAM3jB,EAAS,CAAA,EACX4jB,EAAU,EAELJ,EAAI,EAAGA,EAAI/lB,KAAK2lB,OAAO9iB,QAAUsjB,EAAUD,EAAerjB,SAAUkjB,EAAG,CAC9E,IAAM1lB,EAAQL,KAAK2lB,OAAOI,GACA,iBAAf1lB,EAAMohB,OAEflf,EAAOlC,EAAMohB,MAAQzhB,KAAKomB,QADlBF,EAAeC,GACc9lB,EAAMgmB,aAC3CF,IAEJ,CAEA,KAAOA,EAAUD,EAAerjB,QAAQ,CACtC,IAAMyjB,EAAMJ,EAAeC,QACR,IAARG,IACT/jB,EAAO,IAAM4jB,GAAWnmB,KAAKomB,QAAQE,IAEvCH,GACF,CAEA,OAAO5jB,CACT,EAACsB,EAEO+hB,SAAA,SAASW,GAMf,IALA,IAEIhkB,EACAikB,EAHEb,EAAS,GAKgC,QAAvCpjB,EAASgjB,GAAUrS,KAAKqT,KAAqB,CAC/ChkB,EAAOof,QAAU6E,GACnBb,EAAO1D,KAAK,CAAE1C,KAAMgH,EAASrlB,MAAMslB,EAAWjkB,EAAOof,SAGvD,IAAI0E,GAAc,EAEdhmB,EAAQkC,EAAO,GAAGrB,MAAM,GAAI,GACL,IAAvBb,EAAMwhB,QAAQ,OAChBxhB,EAAQA,EAAMa,MAAM,GACpBmlB,GAAc,GAGhBV,EAAO1D,KAAK,CACVR,KAAMphB,EACNgmB,YAAAA,EACAX,IAAKnjB,EAAO,KAGdikB,EAAYjB,GAAUkB,SACxB,CAMA,OAJID,GAAa,GAAKA,EAAYD,EAAS1jB,QACzC8iB,EAAO1D,KAAK,CAAE1C,KAAMgH,EAASrlB,MAAMslB,KAG9Bb,CACT,EAAC9hB,EAEOmiB,OAAA,SAAOU,GACb,QAAwB,IAAbA,EACT,MAAO,YAGT,GAAiB,OAAbA,EACF,MAAO,OAGT,GAAwB,iBAAbA,EACT,OAAOA,EAGT,GAAwB,iBAAbA,EACT,OAAOA,EAASzlB,WAGlB,GAAwB,kBAAbylB,EACT,OAAOA,EAASzlB,WAGlB,GAAoC,mBAAzBylB,EAASC,YAClB,OAAOD,EAASC,cAGlB,GAAwB,iBAAbD,EAAuB,CAChC,IAAIpD,EAAIliB,KAAKwY,UAAU8M,GAKvB,OAJIpD,EAAEzgB,OAAS,KACbygB,EAAIA,EAAEpiB,MAAM,EAAG,IAAM,OAGhBoiB,CACT,CAEA,OAAOoD,EAASzlB,UAClB,EAAC4C,EAEOuiB,QAAA,SAAQM,EAAeL,GAC7B,MAAwB,mBAAbK,EACFA,IAGe,iBAAbA,EAGQ,OAAbA,GAMAL,GAA+C,mBAAzBK,EAASC,YAL1BD,EASFA,EAASzlB,WAGXylB,CACT,EAAClB,CAAA,CA3JyB,GJLhBzR,QAAAA,cAAAA,GAAAA,GAAAA,QAAQA,WAARA,iBAOX,CAAA,IANCA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,YAAA,GAAA,cACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,MAAA,GAAA,QACAA,GAAAA,GAAA,SAAA,GAAA,WKDF,IC2BY6S,GAYAC,GCsOAC,GAuKAC,GAuCAC,GCldAC,GC4EAC,GAWAC,GAaAC,GAaAC,GA6DAC,GA4EAC,GA2HAC,GAiFAC,GJ7cCC,yBAAI5e,GAQf,SAAA4e,EAAYjkB,EAA8BC,EAAiCikB,EAA4BC,GAAgCnlB,IAAAA,EAUpI,YAVuCiB,IAAAA,IAAAA,GAA0B,QAAOikB,IAAAA,IAAAA,EAAuB,UAAKC,IAAAA,IAAAA,EAA2B,MAChInlB,EAAAqG,EAAA/F,KAAA/C,KAAMyD,EAAeC,UARNmkB,kBAAYplB,EAAAA,EACZqlB,eAAS,EAAArlB,EACTslB,mBAAa,EAAAtlB,EACbulB,oBAAYvlB,EAErBwlB,aAAe,KAKrBxlB,EAAKolB,aAAe,GACpBplB,EAAKqlB,UAAYH,EACjBllB,EAAKslB,cAAgBH,EACrBnlB,EAAKulB,aAAe1hB,KAAK4hB,IAAmB,GAAfP,EAAmB,KAE5CllB,EAAKslB,cAAgB,GACvBtlB,EAAK0lB,oBAAmB,GACzB1lB,CACH,CAnBeU,EAAAukB,EAAA5e,GAmBd,IAAAjF,EAAA6jB,EAAAvnB,UAqHA,OArHA0D,EAEDukB,MAAA,WACE,OAAOpoB,KAAKmoB,oBAAmB,EACjC,EAACtkB,EAEDwkB,MAAA,SAAM9B,GACJ,OAAWvmB,KAACsoB,IAAIvU,QAAAA,SAASwU,SAAUhC,KAAQrlB,MAAA6B,KAAAiG,UAAY,GACzD,EAACnF,EAED4B,MAAA,SAAM8gB,GACJ,OAAWvmB,KAACsoB,IAAIvU,iBAAS1Q,MAAOkjB,EAAQrlB,GAAAA,MAAA6B,KAAAiG,aAC1C,EAACnF,EAED6Y,KAAA,SAAK6J,GACH,OAAOvmB,KAAKsoB,IAAIvU,QAAAA,SAASyU,QAASjC,EAAQrlB,GAAAA,MAAA6B,KAAAiG,UAAY,GACxD,EAACnF,EAED4kB,KAAA,SAAKlC,GACH,YAAY+B,IAAIvU,QAAQA,SAAC2U,YAAanC,EAAQ,GAAArlB,MAAA6B,KAAAiG,UAAA,GAChD,EAACnF,EAEDS,MAAA,SAAMiiB,GACJ,OAAWvmB,KAACsoB,IAAIvU,QAAAA,SAASiB,MAAOuR,EAAQ,GAAArlB,MAAA6B,KAAAiG,UAAA,GAC1C,EAACnF,EAED8kB,MAAA,SAAMpC,GACJ,YAAY+B,IAAIvU,iBAAS6U,MAAOrC,KAAQrlB,MAAA6B,KAAAiG,aAC1C,EAACnF,EAEOykB,IAAA,SAAIO,EAAiBtC,EAAkBT,GAC7C,IAAMgD,EAAkB,CACtBzP,WAAW,IAAIrT,MAAO+iB,SACtBF,MAAOA,EACPtC,SAAUA,EACVT,WAAYA,GAGRL,EAAkB,IAAID,GAAgBsD,EAAIvC,UAC1CyC,EAASvD,EAAgBI,OAAOJ,EAAgBQ,eAAe6C,EAAIhD,aAEzE,GAAI9lB,KAAK0D,eACP,OAAQmlB,GACN,KAAK9U,QAAQA,SAACwU,SAId,KAAKxU,QAAQA,SAAC1Q,MACZgB,QAAQoB,MAAMujB,GACd,MAEF,KAAKjV,QAAQA,SAACyU,QACZnkB,QAAQqY,KAAKsM,GACb,MAEF,KAAKjV,QAAQA,SAAC2U,YACZrkB,QAAQokB,KAAKO,GACb,MAEF,KAAKjV,QAAAA,SAASiB,MAId,KAAKjB,QAAAA,SAAS6U,MACZvkB,QAAQC,MAAM0kB,GACd,MAEF,QACE3kB,QAAQikB,IAAIU,GAalB,OARIhpB,KAAK8nB,UAAY,GAAK9nB,KAAK+nB,cAAgB,KAC7C/nB,KAAK6nB,aAAa5F,KAAK6G,GAEnB9oB,KAAK8nB,UAAY,GAAK9nB,KAAK6nB,aAAahlB,QAAU7C,KAAK8nB,WACzD9nB,KAAKmoB,oBAAmB,KAIrB,IAAIniB,MAAO2gB,cAAiB,KAAO5S,QAAQA,SAAC8U,GAAOI,cAAgB,KAAQD,CACpF,EAACnlB,EAEOskB,mBAAA,SAAmBe,GAAanjB,IAAAA,OACtCojB,aAAanpB,KAAKioB,cAElB,IAAImB,EAAU/jB,QAAQC,UAEtB,GAAItF,KAAK6nB,aAAahlB,OAAQ,CAC5B,IAAMwmB,EAAWrpB,KAAK6nB,aAAayB,OAAO,EAAGtpB,KAAK8nB,WAE9CuB,EAASxmB,OAAS,IAChB7C,KAAK0D,gBACPW,QAAQokB,KAAK,qCAAsCY,EAASxmB,QAG9DumB,EAAUppB,KAAK8D,QAtHC,cAsH8B,OAAQulB,GAAe,MAAC,SAACE,OAAKC,GAC1EA,EAAAzjB,EAAK8hB,cAAa4B,QAAO1gB,MAAAygB,EAAIH,GAGzBtjB,EAAK8hB,aAAahlB,OAASkD,EAAKiiB,cAClCjiB,EAAK8hB,aAAayB,OAAO,EAAGvjB,EAAK8hB,aAAahlB,OAASkD,EAAKiiB,cAG1DjiB,EAAKrC,gBACPW,QAAQqY,KAAK,oDAAqD3W,EAAK8hB,aAAahlB,OAExF,GAEJ,CAMA,OAJIqmB,GAAQlpB,KAAK+nB,cAAgB,IAC/B/nB,KAAKioB,aAAeyB,WAAW,kBAAM3jB,EAAKoiB,oBAAmB,EAAK,EAAEnoB,KAAK+nB,gBAGpEqB,CACT,EAAC1B,CAAA,EAxIsBlkB,GKHZmmB,gBAAO,SAAA7gB,GAAA6gB,SAAAA,WAAA7gB,EAAAC,MAAA/I,KAAAgJ,YAAAnF,IAAAA,CAGjB8lB,OAHiBxmB,EAAAwmB,EAAA7gB,GAAA6gB,EAAAxpB,UACZypB,KAAI,WAAA,IACR,OAAAvkB,QAAAC,QAAOtF,KAAK8D,QAJS,WAIuB,OAC9C,CAAC,MAAA8B,GAAA,OAAAP,QAAAQ,OAAAD,EAAA+jB,CAAAA,EAAAA,CAAA,CAHiB,CAAQnmB,GCFtBqmB,GAAsB,cAEfC,gBAAQ,SAAAhhB,GAAA,SAAAghB,IAAA,IAAA,IAAArnB,EAAAkK,EAAA3D,UAAAnG,OAAA+J,EAAAjK,IAAAA,MAAAgK,GAAAE,EAAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAA7D,UAAA6D,GAEQ,OAFRpK,EAAAqG,EAAA/F,KAAAgG,MAAAD,EAAA,CAAA9I,MAAA8M,OAAAF,KAAA5M,MACX+pB,wBAAkB,EAAAtnB,EAClBunB,yBAAmB,EAAAvnB,CAAA,CAFRU,EAAA2mB,EAAAhhB,GAEQ,IAAAjF,EAAAimB,EAAA3pB,UAgB1B2pB,OAhB0BjmB,EAErBomB,iBAAgB,WAAA,IAAA9lB,IAAAA,EAAAA,WAKpB,OAAOkB,QAAQC,QAAQS,EAAKgkB,oBAAsB,KAAM,EAAAhkB,EAJnD/F,KAAI0E,EAAA,WAAA,IAAJqB,EAAKgkB,mBAAkB1kB,OAAAA,QAAAC,QACMS,EAAKjC,QAAa+lB,GAAqB,QAAMtkB,KAAAuI,SAAAA,GAA7E/H,EAAKgkB,mBAAkBjc,CAAuD,EAAAzI,CADvE,GACuEA,OAAAA,QAAAC,QAAAZ,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,IAIlF,CAAC,MAAAyB,GAAA,OAAAP,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKqmB,kBAAiB,WAAA,IAAAlc,IAAAA,EAAAA,WAKrB,OAAO3I,QAAQC,QAAQyE,EAAKigB,qBAAuB,KAAM,EAAAjgB,EAJpD/J,KAAIiO,EAAL,WAAA,IAAClE,EAAKigB,oBAAmB,OAAA3kB,QAAAC,QACMyE,EAAKjG,QAAgB+lB,GAAmB,mBAAoB,QAAMtkB,KAAA2I,SAAAA,GAAnGnE,EAAKigB,oBAAmB9b,CAA4E,EAAA,CADlG,GACkG,OAAA7I,QAAAC,QAAA2I,GAAAA,EAAA1I,KAAA0I,EAAA1I,KAAAyI,GAAAA,IAIxG,CAAC,MAAApI,GAAAP,OAAAA,QAAAQ,OAAAD,EAAAkkB,CAAAA,EAAAA,CAAA,CAlBkB,CAAQtmB,GCAvB2mB,GAAiC,2BAE1BC,yBAAQthB,GAAAshB,SAAAA,IAAA,QAAA3nB,EAAAkK,EAAA3D,UAAAnG,OAAA+J,MAAAjK,MAAAgK,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAA7D,UAAA6D,GACiEpK,OADjEA,EAAAqG,EAAA/F,KAAAgG,MAAAD,EAAAgE,CAAAA,MAAAA,OAAAF,WACXyd,sBAAwB,IAAIrd,IAAgDvK,CAAA,CADjEU,EAAAinB,EAAAthB,GACiEjF,IAAAA,EAAAumB,EAAAjqB,UA8GnF,OA9GmF0D,EAE9EymB,sBAAqB,SAACC,EAAmBC,YAAnBD,IAAAA,EAAgB,QAAGC,IAAAA,IAAAA,GAA0B,GAAK,IAC5E,OAAAnlB,QAAAC,QAAOtF,KAAK8D,QAAyCqmB,GAA+CI,iBAAAA,qBAAwBC,EAAkB,OAChJ,CAAC,MAAA5kB,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK4mB,sBAAqBA,SAACzF,GAAkB,IAAA,IACxCE,EAAkBF,EAAS/jB,WAK/B,OAJIkkB,OAAOC,UAAUJ,KACnBE,EAAkBvd,QAAAA,SAASqd,IAG7B3f,QAAAC,QAAOtF,KAAK8D,QAA4CqmB,GAA8B,qBAAqBjF,EAAmB,OAChI,CAAC,MAAAtf,GAAA,OAAAP,QAAAQ,OAAAD,EAAA/B,CAAAA,EAAAA,EAEK6mB,kCAAyB1F,EAAoB2F,EAAmBC,OAChC,OAAAvlB,QAAAC,QAAJtF,KAAK6qB,qBAAqB7F,EAAU2F,EAAUC,IAAOrlB,KAAA,SAA/EulB,GACN,OAAOA,EACJC,QAAQ,SAACC,UAAQA,EAAIC,cAAc,GACnC7J,KAAK,SAACiB,EAAGC,GAAC,WAAStc,KAAKsc,EAAE4I,0BAA0BhlB,UAAY,IAAIF,KAAKqc,EAAE6I,0BAA0BhlB,SAAS,EAAE,EACrH,CAAC,MAAAN,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAA/B,EAEKgnB,qBAAoB,SAAC7F,EAAoB2F,EAAmBC,GAAe,QAAAzmB,EAAA,WA+E/E,IAAMgnB,EAAiBC,EAAUT,GAC3BU,EAAeD,EAAUR,GAE/B,OAAOU,EACJ5J,OAAO,SAACxa,GACP,IAAMqkB,EAAcH,EAAUlkB,EAAKskB,MACnC,OAAOD,GAAeJ,GAAkBI,GAAeF,CACzD,GACCjK,KAAK,SAACiB,EAAQC,UAAe,IAAAtc,KAAKqc,EAAEmJ,MAAMtlB,UAAY,IAAIF,KAAKsc,EAAEkJ,MAAMtlB,SAAS,EAAE,EAAAwI,EAhF5E1O,KANLklB,EAAkBF,EAAS/jB,WAK/B,GAJIkkB,OAAOC,UAAUJ,KACnBE,EAAkBvd,QAAAA,SAASqd,KAGxB2F,IAAaC,EAChB,OAAAvlB,QAAAC,QAAOoJ,EAAK5K,QACPqmB,GAAiDjF,mBAAAA,EAA4ByF,cAAAA,GAAY,gBAAaC,GAAU,IACnH,QAIJ,IAAIU,EAAa5c,EAAK2b,sBAAsB7Z,IAAI0U,IAAoB,GAEhEuG,EAAYd,EACVe,EAAUd,EACZe,GAAa,EAIXP,EAAY,SAACQ,GACjB,MAAiB,iBAANA,GAAkB,sBAAsBzR,KAAKyR,GAAWA,EAC5D,IAAI5lB,KAAK4lB,GAAGjF,cAAclmB,MAAM,KAAK,EAC9C,EAEMorB,EAAWT,EAAU,IAAIplB,MAK/B,GAFAslB,EAAWlK,KAAK,SAACiB,EAAQC,GAAM,OAAS,IAAAtc,KAAKqc,EAAEmJ,MAAMtlB,UAAY,IAAIF,KAAKsc,EAAEkJ,MAAMtlB,SAAS,GAEvFolB,EAAWzoB,OAAS,EAAG,CACzB,IAAMipB,EAAiBR,EAAWA,EAAWzoB,OAAS,GAChDkpB,EAAkBT,EAAW,GAE7BU,EAAcZ,EAAUT,GACxBsB,EAAYb,EAAUR,GACtBsB,EAAiBd,EAAUW,EAAgBP,MAC3CW,EAAgBf,EAAUU,EAAeN,MAGzCY,EAAgBJ,GAAeE,GAAkBD,GAAaE,EAG9DE,EAAgBJ,GAAaJ,EAE/BO,IAAkBC,EAEpBV,GAAa,EACJS,GAAiBC,GAG1BZ,EAAYI,EACZF,GAAa,GACJK,GAAeE,GAAkBD,EAAYE,IAGtDV,EAAYU,EACZR,GAAa,EAGjB,CAAC,IAAAjnB,EAEGinB,WAAAA,GAAAA,EAAUtmB,OAAAA,QAAAC,QACUoJ,EAAK5K,QACtBqmB,GAAiDjF,mBAAAA,EAA4BuG,cAAAA,GAAa,gBAAaC,GAAW,IACrH,QACDnmB,KAAA,SAHK+mB,GAMN,IAAMC,EAAU,IAAIvf,IACpBse,EAAWjP,QAAQ,SAACnV,GAAS,OAAKqlB,EAAQxb,IAAIqa,EAAUlkB,EAAKskB,MAAOtkB,EAAK,GACzEolB,EAAQjQ,QAAQ,SAACnV,GAAc,OAAAqlB,EAAQxb,IAAIqa,EAAUlkB,EAAKskB,MAAOtkB,EAAK,GAEtEokB,EAAa3oB,MAAMpB,KAAKgrB,EAAQ7U,UAChChJ,EAAK2b,sBAAsBtZ,IAAImU,EAAiBoG,EAAY,GAZ1DK,UAY0DtmB,QAAAC,QAAAZ,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,IAahE,CAAC,MAAAyB,GAAAP,OAAAA,QAAAQ,OAAAD,EAAA,CAAA,EAAAwkB,CAAA,EA/G0B5mB,GN0BjBojB,QAAZA,iBAAA,GAAYA,GAAAA,QAAWA,cAAXA,QAAWA,YAKtB,KAJC,KAAA,OACAA,GAAA,KAAA,OACAA,GAAA,KAAA,OACAA,GAAA,KAAA,OAQUC,QAAZA,qBAAA,GAAYA,GAAAA,QAAAA,kBAAAA,QAAAA,gBAMX,CAAA,IALC,QAAA,UACAA,GAAA,QAAA,UACAA,GAAA,MAAA,QACAA,GAAA,YAAA,cACAA,GAAA,KAAA,OCiOUC,QAAAA,uBAAAA,GAAAA,GAAAA,QAAAA,oBAAAA,QAAAA,kBASX,CAAA,IARCA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,2BAAA,GAAA,6BACAA,GAAAA,GAAA,mBAAA,GAAA,qBACAA,GAAAA,GAAA,+BAAA,GAAA,iCACAA,GAAAA,GAAA,iBAAA,GAAA,mBACAA,GAAAA,GAAA,wCAAA,GAAA,0CACAA,GAAAA,GAAA,qBAAA,GAAA,uBA+JUC,QAAZA,wBAAA,GAAYA,GAAAA,QAAAA,qBAAAA,QAAAA,mBAQX,CAAA,IAPC,KAAA,OACAA,GAAA,aAAA,eACAA,GAAA,WAAA,aACAA,GAAA,iBAAA,mBACAA,GAAA,QAAA,UACAA,GAAA,KAAA,OACAA,GAAA,QAAA,UAgCUC,iCAAAA,GAAAA,QAAAA,mBAAAA,QAAAA,iBAIX,CAAA,IAHC,WAAA,aACAA,GAAA,SAAA,WACAA,GAAA,SAAA,WCrdUC,QAAZA,oBAAA,GAAYA,GAAAA,QAAAA,iBAAAA,QAAAA,eAKX,CAAA,IAJC,QAAA,UACAA,GAAA,QAAA,UACAA,GAAA,IAAA,MACAA,GAAA,IAAA,MCwEUC,0CAAAA,GAAAA,QAAAA,4BAAAA,QAAyBA,0BAGpC,KAFCA,GAAA,kBAAA,GAAA,oBACAA,GAAAA,GAAA,cAAA,GAAA,gBASUC,QAAAA,wBAAAA,GAAAA,GAAAA,QAAkBA,qBAAlBA,2BAIX,CAAA,IAHC,SAAA,WACAA,GAAA,WAAA,aACAA,GAAA,oBAAA,sBAUUC,QAAZA,cAAA,GAAYA,GAAAA,mBAAAA,QAAAA,SAMX,CAAA,IALC,KAAA,OACAA,GAAA,OAAA,SACAA,GAAA,WAAA,aACAA,GAAA,UAAA,YACAA,GAAA,SAAA,WAQUC,QAAAA,sBAAAA,GAAAA,GAAAA,QAAAA,mBAAAA,QAAgBA,iBAK3B,KAJC,WAAA,aACAA,GAAA,SAAA,WACAA,GAAA,kBAAA,oBACAA,GAAA,SAAA,WAyDUC,QAAZA,uBAAA,GAAYA,GAAAA,QAAiBA,oBAAjBA,0BAKX,CAAA,IAJCA,GAAA,iBAAA,GAAA,mBACAA,GAAAA,GAAA,QAAA,GAAA,UACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,uBAAA,GAAA,yBAwEUC,0CAAAA,GAAAA,QAAAA,4BAAAA,QAAAA,0BAIX,CAAA,IAHCA,GAAA,kBAAA,GAAA,oBACAA,GAAAA,GAAA,cAAA,GAAA,gBACAA,GAAAA,GAAA,uBAAA,GAAA,yBAwHUC,QAAZA,oBAAA,GAAYA,GAAAA,QAAcA,iBAAdA,uBAQX,CAAA,IAPC,KAAA,OACAA,GAAA,SAAA,WACAA,GAAA,SAAA,WACAA,GAAA,SAAA,WACAA,GAAA,SAAA,WACAA,GAAA,WAAA,aACAA,GAAA,WAAA,aA0EUC,QAAAA,kBAAAA,GAAAA,GAAAA,QAAYA,eAAZA,qBAMX,CAAA,IALC,KAAA,OACAA,GAAA,OAAA,SACAA,GAAA,MAAA,QACAA,GAAA,IAAA,MACAA,GAAA,SAAA,WI3bF,IACMnkB,GAAe,IAAIC,OAAO,KAkBnBipB,gBAAU,WAiCrB,SAAAA,EAAY5nB,GAAiB,IAAAmB,EAAAtD,KAAAA,EAkCjBzC,KAAIA,KArDCsU,aAAO,EAAAtU,KACP0D,oBACAikB,EAAAA,KAAAA,yBACAC,sBAAgB,EAAA5nB,KAChByD,mBACAgpB,EAAAA,KAAAA,qBAED9oB,EAAAA,KAAAA,OAASC,EAAM,QAAA5D,KACf0sB,YACAC,EAAAA,KAAAA,oBACArE,SAAG,EAAAtoB,KACH4sB,UAAI,EAAA5sB,KACJ6sB,eACArR,EAAAA,KAAAA,eACAsR,EAAAA,KAAAA,oBACAC,cAAQ,EAAA/sB,KACRyb,aAAO,EAAAzb,KACPgtB,aAGd,EAAAhtB,KAAKsU,SAAW1P,EAAO0P,SArDJ,yBAqD+B5T,QAAQ,OAAQ,IAElEV,KAAKysB,gBAAkB,IAAIQ,gBAE3BjtB,KAAKyD,cAAgBypB,EAAK,QAACC,OAAO,CAChCjoB,QAASlF,KAAKsU,QACd8Y,QAAS,EACTC,OAAQrtB,KAAKysB,gBAAgBY,OAC7BvoB,QAAO0b,KACF5b,EAAOE,QACVwoB,CAAAA,OAAQ,mBACR,eAAgB,mBAChB,kBAAmB1oB,EAAO2oB,UAAY,SAI1CC,EAAgB,QAACxtB,KAAKyD,uBAAsBgqB,GAAa,QAkFnBxb,EAlFuB9N,EAAA,SAAA4O,GAAA,OAAAd,EAAAc,EAkFpD1N,QAAQQ,OAAO4nB,EAAc,EAjF9BC,EAAa,mBAEnB,GAAID,EAAc3pB,QAAQ6pB,OAASD,EACjC,OAAOroB,QAAQQ,OAAO4nB,GACvB,IAAA/oB,EAAA,WAAA,GAEG3E,EAAUG,aAAYyE,0CAEtB,IAAIC,EAAkC,CACpCZ,OAAQ,OACRa,IAAK6oB,EACL5oB,QAAS,CAAEC,cAAe,UAAYhF,EAAUG,cAEhD0tB,iBAAiB,GAmBlB,OAhBGnrB,EAAKiB,iBACPW,QAAQC,MAAM,OAAShB,IACvBe,QAAQC,MAAM,sBACdD,QAAQC,MAAMhB,IACde,QAAQC,MAASM,EAAOZ,YAAWvB,EAAK6R,QAAU1P,EAAOC,KACzDR,QAAQC,MAAMhB,IAEVsB,EAAOE,UACTT,QAAQC,MAAM,iBACdD,QAAQc,IAAIP,EAAOE,UAGjBF,EAAOL,OACTF,QAAQC,MAAM,iBACdD,QAAQc,IAAIP,EAAOL,KAAM,CAAEa,MAAO,SAErCC,QAAAC,QAE6B7C,EAAKgB,cAAcmB,IAAOW,KAAA,SAAlDsoB,GAML,GAJGprB,EAAKiB,iBACPW,QAAQC,MAAM,sBACdD,QAAQc,IAAI0oB,EAAgBtpB,KAAM,CAAEa,MAAO,OAC3Cf,QAAQC,MAAMhB,KAGZuqB,EAAgBtpB,MAAQspB,EAAgBtpB,KAAKC,QAC/CzE,CAAAA,EAAUE,YAAc4tB,EAAgBtpB,KAAKhC,OAAOtC,YACpDF,EAAUG,aAAe2tB,EAAgBtpB,KAAKhC,OAAOrC,aAEjDuC,EAAKiB,iBACPW,QAAQC,MAAM,mCACdD,QAAQc,IAAI0oB,EAAgBtpB,KAAKhC,OAAQ,CAAE6C,MAAO,QAGpD3C,EAAKkB,OAAO6F,QAAQ7H,EAAoBksB,EAAgBtpB,KAAKhC,QAEzDkrB,IACFA,EAAcvpB,SAASU,OAAOE,QAAuB,cAAI,UAAY/E,EAAUE,aAChF,IAAAoS,EAEMhN,QAAQC,QAAQmoB,GAAc,OAAAxb,EAAA,EAAAI,CAAA,CAEjC5P,EAAKiB,gBACPW,QAAQC,MAAM,iCAGhB7B,EAAKkB,OAAO6F,QAAQ9H,EAExB,EAAA,6DA3DwBiD,GA2Dfc,SAAAA,GAMP,MALIhD,EAAKiB,gBACPW,QAAQC,MAAM,iCAGhB7B,EAAKkB,OAAO6F,QAAQ9H,GACd+D,CACR,GACS1F,EAAUE,cACfwC,EAAKiB,gBACPW,QAAQC,MAAM,iCAGhB7B,EAAKkB,OAAO6F,QAAQ9H,GACrB,CA3EA,UA2EA2D,QAAAC,QAAAZ,GAAAA,EAAAa,KAAAb,EAAAa,KAAApB,GAAAA,EAAAO,GAGH,CAAC,MAAAkB,GAAA,OAAAP,QAAAQ,OAAAD,MAEDkoB,EAAAA,QAAW9tB,KAAKyD,cAAe,CAC7BsqB,QAASnpB,EAAOmpB,SAAW,EAC3BC,WAAYF,EAAU,QAACG,iBACvBC,QAAS,SAACC,EAAY1oB,EAAO8jB,GACvBxjB,EAAKrC,gBACPW,QAAQoB,MAAM,YAAc0oB,EAAa,UAAW1oB,GAGtD,IAAMqV,EAAa,CAAEqT,WAAYA,GAE7BpoB,EAAKrC,iBACPW,QAAQC,MAAM,2BACdD,QAAQc,IAAI2V,EAAY,CAAE1V,MAAO,QAGnCW,EAAKpC,OAAO6F,QAAQ5H,EAAYkZ,EAClC,IAGF9a,KAAK0D,eAAiBkB,EAAOlB,iBAAkB,EAC/C1D,KAAK2nB,aAAe/iB,EAAO+iB,cAAgB,IAC3C3nB,KAAK4nB,iBAAmBhjB,EAAOgjB,kBAAoB,IAEnD5nB,KAAK0sB,OAAS,IAAI/C,GAAO3pB,KAAKyD,cAAezD,KAAK0D,gBAClD1D,KAAK2sB,QAAU,IAAI7C,GAAQ9pB,KAAKyD,cAAezD,KAAK0D,gBACpD1D,KAAKsoB,IAAM,IAAIZ,GAAI1nB,KAAKyD,cAAezD,KAAK0D,eAAgB1D,KAAK2nB,aAAc3nB,KAAK4nB,kBACpF5nB,KAAK4sB,KAAO,IAAI/jB,GAAe7I,KAAKyD,cAAezD,KAAK0D,gBACxD1D,KAAK6sB,UAAY,IAAI1P,GAAUnd,KAAKyD,cAAezD,KAAK0D,gBACxD1D,KAAKwb,UAAY,IAAI0E,GAAUlgB,KAAKyD,cAAezD,KAAK0D,gBACxD1D,KAAK8sB,QAAU,IAAIpgB,GAAQ1M,KAAKyD,cAAezD,KAAK0D,gBACpD1D,KAAK+sB,SAAW,IAAI3Y,GAASpU,KAAKyD,cAAezD,KAAK0D,gBACtD1D,KAAKyb,QAAU,IAAIwD,GAAQjf,KAAKyD,cAAezD,KAAK0D,gBACpD1D,KAAKgtB,QAAU,IAAI5C,GAAQpqB,KAAKyD,cAAezD,KAAK0D,gBAEhD1D,KAAK0D,sBAEa0qB,IAAhB/pB,QAAQc,KAA2C,oBAAdkpB,WAAmD,gBAAtBA,UAAU/N,WAC9Ejc,QAAQc,IAAM,SAACmpB,GAAS,OAAKjqB,QAAQC,MAAMlD,KAAKwY,UAAU0U,EAAM,KAAM,GAAG,EAG/E,QAAC9B,EAAArsB,UAEYouB,iBAAK,QAAAxkB,EACZ/J,KAEH,OAFG+J,EAAKrG,gBACPW,QAAQokB,KAAK,+BACdpjB,QAAAC,QACKyE,EAAKue,IAAIF,SAAO7iB,gBAIrB,OAFGwE,EAAKrG,gBACPW,QAAQokB,KAAK,qCACdpjB,QAAAC,QACKyE,EAAKgjB,SAAS3V,6BAA2B7R,KAE/C,WAUA,OAVIwE,EAAKrG,gBACPW,QAAQokB,KAAK,oCAEf1e,EAAKpG,OAAO6qB,wBAERzkB,EAAKrG,gBACPW,QAAQokB,KAAK,8BAEf1e,EAAK0iB,gBAAgBgC,QAEdppB,QAAQC,SAAU,EAC3B,EAAA,CAAC,MAAAM,UAAAP,QAAAQ,OAAAD,KAAA4mB,CAAA,CAvMoB,GAAVA,GAEJhrB,iBAAmBA,EAFfgrB,GAGJ9qB,iBAAmBA,EAHf8qB,GAIJ7qB,mBAAqBA,EAJjB6qB,GAKJ5qB,WAAaA,EALT4qB,GAMJ3qB,sBAAwBA,EANpB2qB,GAOJ1qB,kBAAoBA,EAPhB0qB,GAQJzqB,mBAAqBA,EARjByqB,GASJxqB,cAAgBA,EATZwqB,GAUJvqB,uBAAyBA,EAVrBuqB,GAWJtqB,kBAAoBA,EAXhBsqB,GAYJrqB,mBAAqBA,yCfjDsBusB,gBAC3CpT,mBAAa,EAAAtb,KAEb2uB,aAEAC,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAET6uB,oBAEAnQ,EAAAA,KAAAA,wBAEAoQ,2BAAqB,EAAA9uB,KAErB+uB,4BAAsB,EAAA/uB,KAKtB4b,mBAAa,EAAA5b,KAEbgvB,2BAEAjT,EAAAA,KAAAA,iBAEAxX,UAAI,EAAAvE,KAEJglB,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAET,CAAA,sCWjCwC,WAAAxC,KAC/BovB,kBACA3jB,EAAAA,KAAAA,eAET,CAAA,kBHlBoB,WAAAzL,KAEXyL,eAAS,EAAAzL,KAETqvB,iBAAW,EAAArvB,KAEXsvB,kBAAY,EAAAtvB,KAEZuvB,kBAAY,EAAAvvB,KAEZwvB,kBAAY,EAAAxvB,KAEZyvB,gBAAU,EAAAzvB,KAEV0vB,oBAAc,EAAA1vB,KAEd2vB,UAAI,EAAA3vB,KAEJgY,WAAK,EAAAhY,KAEL4vB,cAAQ,EAAA5vB,KAER0e,iBAAW,EAAA1e,KAEX6vB,eAAS,EAAA7vB,KACT8vB,cAET,CAAA,uBRoByBC,gBAChBC,iCAA2B,EAAAhwB,KAC3BiwB,iCACAC,EAAAA,KAAAA,wCACAC,uDAAiD,EAAAnwB,KACjDowB,8BACAC,EAAAA,KAAAA,qCACAC,sBAAgB,EAAAtwB,KAChBuwB,uBACAC,EAAAA,KAAAA,iCACAC,6BAAuB,EAAAzwB,KACvB0wB,yBAAmB,EAAA1wB,KACnB2wB,yCAAmC,EAAA3wB,KACnC4wB,yCACAC,EAAAA,KAAAA,2CACAC,oCAA8B,EAAA9wB,KAC9B+wB,gCACAC,EAAAA,KAAAA,qCAGT,CAAA,gEAmoC2B,WAClBC,KAAAA,+BAEAvS,iBAAW,EAAA1e,KAEX4b,mBAEAoT,EAAAA,KAAAA,kCAEAhK,cAAQ,EAAAhlB,KAERkxB,kBAOAC,EAAAA,KAAAA,gCAEAC,gBAAU,EAAApxB,KAEV2uB,aAAO,EAAA3uB,KACP+b,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,0DAmtB8BwC,gBAC9BC,eAAS,EAAAtxB,KACTuxB,gBACAC,EAAAA,KAAAA,oBACAC,gBAAU,EAAAzxB,KACV0xB,eAAS,EAAA1xB,KACT2xB,gBAAU,CAAA,kBQx5DC,WAAA3xB,KACXglB,cAAQ,EAAAhlB,KACR4xB,4BAAsB,EAAA5xB,KACtB6xB,0BAAoB,CAAA,iCR2EM,WAK1BxxB,KAAAA,kBAEAyxB,mBAAa,EAAA9xB,KAEb+xB,UACAC,EAAAA,KAAAA,iCACAC,8BAAwB,EAAAjyB,KACxBkyB,8BAAwB,EAAAlyB,KAExB0e,iBAAW,EAAA1e,KAEX4b,mBAEAoT,EAAAA,KAAAA,kCAEAhK,cAAQ,EAAAhlB,KAERkxB,kBAOAC,EAAAA,KAAAA,yBAEAC,EAAAA,KAAAA,gBAEAzC,EAAAA,KAAAA,oBACA5S,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,4DAGgC,WAAA7uB,KAEhC8xB,mBAEAC,EAAAA,KAAAA,iBACAI,cAAQ,EAAAnyB,KACRsb,mBAEAqT,EAAAA,KAAAA,oBAEAC,iBAAW,EAAA5uB,KAEXyL,eAEAojB,EAAAA,KAAAA,2BAEAnQ,iBAAW,EAAA1e,KAEX8uB,2BAEAC,EAAAA,KAAAA,4BAKAnT,EAAAA,KAAAA,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAAQ,EAAAjvB,KAERkvB,mBAAa,EAAAlvB,KACb6Y,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,6BgBrMe,WAAAxC,KACtB8xB,mBAAa,EAAA9xB,KACb+xB,UAAI,CAAA,8BAEmB,WACvB1xB,KAAAA,WAET,CAAA,4BhB6tC8B+xB,WAKrB/xB,KAAAA,WAEAyxB,EAAAA,KAAAA,0BAEAC,UAAI,EAAA/xB,KAEJ0e,iBAEA9C,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErBglB,cAAQ,EAAAhlB,KAERkxB,kBAAY,EAAAlxB,KAOZmxB,yBAEAC,EAAAA,KAAAA,uBAEAzC,aAAO,EAAA3uB,KACP+b,UAEAtQ,EAAAA,KAAAA,sBAEAojB,oBAAc,CAAA,6CAEa7uB,KAC3B8xB,mBACAC,EAAAA,KAAAA,UACAI,EAAAA,KAAAA,cACA7W,EAAAA,KAAAA,0BAEAqT,aAAO,EAAA3uB,KAEP4uB,iBAEAnjB,EAAAA,KAAAA,sBAEAojB,oBAAc,EAAA7uB,KAEd0e,iBAAW,EAAA1e,KAEX8uB,2BAAqB,EAAA9uB,KAErB+uB,4BAKAnT,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErB+b,UAEAxX,EAAAA,KAAAA,UAEAygB,EAAAA,KAAAA,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAGT,CAAA,mBF3tCqB6vB,WACZC,KAAAA,iBACAP,EAAAA,KAAAA,UACAQ,EAAAA,KAAAA,cACAC,EAAAA,KAAAA,iBACAL,EAAAA,KAAAA,qBACA9hB,aAAO,CAAA,wBWjFUoiB,gBAEjBhnB,eAAS,EAAAzL,KAET0yB,mBAAa,EAAA1yB,KAEb2yB,YAAM,EAAA3yB,KAENyK,mBAEAmoB,EAAAA,KAAAA,sBAEAC,cAAQ,EAAA7yB,KAER8yB,gBAEAnc,EAAAA,KAAAA,kBAEAyN,EAAAA,KAAAA,kBAEAsL,EAAAA,KAAAA,2BAEAqD,iBAAW,EAAA/yB,KAEXgzB,YAEAC,EAAAA,KAAAA,8BAEAC,sBAAgB,EAAAlzB,KAChB8vB,cAAQ,CAAA,wBEzBS,WAAA9vB,KACjByL,eACAinB,EAAAA,KAAAA,mBACAS,EAAAA,KAAAA,kBACAP,eAAS,EAAA5yB,KACT6yB,cAAQ,EAAA7yB,KACRozB,oBACAC,EAAAA,KAAAA,cACAvD,EAAAA,KAAAA,qBACAwD,oBAAc,CAAA,mCAEGtzB,KACjByL,eAAS,EAAAzL,KACTyK,mBACAioB,EAAAA,KAAAA,mBACAC,EAAAA,KAAAA,mBACAlR,UAAI,EAAAzhB,KACJuzB,kBAAY,EAAAvzB,KACZivB,cACAtY,EAAAA,KAAAA,kBACAyN,EAAAA,KAAAA,yBACAsL,oBAAc,EAAA1vB,KACdglB,cAAQ,EAAAhlB,KACRwzB,sBACAC,EAAAA,KAAAA,eACA3D,EAAAA,KAAAA,qCFGe4D,WAEfjoB,KAAAA,eAEAgW,EAAAA,KAAAA,iBAEAkS,mBAAa,EAAA3zB,KAEb4zB,yBAAmB,EAAA5zB,KAEnB6zB,kCAA4B,EAAA7zB,KAE5B8zB,6BAEAvY,EAAAA,KAAAA,yBAEAH,mBAAa,EAAApb,KAEboc,WAEA2X,EAAAA,KAAAA,qBACAjE,EAAAA,KAAAA,cAGT,CAAA,iCAAmC,WAE1BzvB,KAAAA,kBACAyxB,mBAAa,EAAA9xB,KAEbg0B,qBAAe,EAAAh0B,KACfi0B,yBAAmB,EAAAj0B,KACnB+xB,UACAI,EAAAA,KAAAA,qBAEAK,iBAAW,EAAAxyB,KACX4uB,iBAEAnjB,EAAAA,KAAAA,eAEAuZ,EAAAA,KAAAA,cAEAkP,EAAAA,KAAAA,+BAEAC,qBAAe,EAAAn0B,KAEfo0B,wBAAkB,EAAAp0B,KAElBq0B,gCAA0B,EAAAr0B,KAE1Bs0B,gCACAxE,EAAAA,KAAAA,cAGT,CAAA,qCAA4B9vB,KAEnBK,WAEAk0B,EAAAA,KAAAA,uBAEAC,gBAAU,EAAAx0B,KAEVy0B,iBAAW,EAAAz0B,KAEX00B,gBAAU,EAAA10B,KACV20B,gBACA/F,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAETglB,cAEAkP,EAAAA,KAAAA,wBAEAC,EAAAA,KAAAA,qBAEAC,EAAAA,KAAAA,+BAEAC,gCAA0B,EAAAr0B,KAE1Bs0B,gCACAxE,EAAAA,KAAAA,mDAG6B,WAAA9vB,KAE7B8xB,mBAEA8C,EAAAA,KAAAA,wBACAC,EAAAA,KAAAA,4BACAjG,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAETglB,cAAQ,EAAAhlB,KAERk0B,wBAAkB,EAAAl0B,KAElBm0B,qBAEAC,EAAAA,KAAAA,+BAEAC,gCAA0B,EAAAr0B,KAE1Bs0B,gCACAxE,EAAAA,KAAAA,cAGT,CAAA,6CAAoC9vB,KAK3BkX,YAAM,EAAAlX,KAEN8Z,0BAAoB,EAAA9Z,KACpB80B,8BACAlG,EAAAA,KAAAA,iBAEAnjB,EAAAA,KAAAA,eAEAuZ,EAAAA,KAAAA,qBAEAkP,wBAAkB,EAAAl0B,KAElBm0B,qBAEAC,EAAAA,KAAAA,+BAEAC,gCAA0B,EAAAr0B,KAE1Bs0B,gCAA0B,EAAAt0B,KAC1B8vB,cAAQ,CAAA,0BTsBWiF,WAEnBtS,KAAAA,6BAEAuS,mBAAa,EAAAh1B,KACbgyB,0BACAC,EAAAA,KAAAA,qCACAC,8BAAwB,EAAAlyB,KAExB0e,iBAEA9C,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErBglB,cAEAkM,EAAAA,KAAAA,yBAOAC,yBAAmB,EAAAnxB,KAEnBoxB,gBAAU,EAAApxB,KAEV2uB,aAAO,EAAA3uB,KACP+b,UAEAtQ,EAAAA,KAAAA,sBAEAojB,oBAAc,CAAA,gCAGWoG,WAEzBxR,KAAAA,wBAEAhB,sBAAgB,EAAAziB,KAChBsb,mBAEAqT,EAAAA,KAAAA,oBAEAC,iBAAW,EAAA5uB,KAEXyL,eAAS,EAAAzL,KAET6uB,oBAAc,EAAA7uB,KAEd0e,iBAEAoQ,EAAAA,KAAAA,kCAEAC,4BAAsB,EAAA/uB,KAKtB4b,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAEAC,EAAAA,KAAAA,mBACArW,EAAAA,KAAAA,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,mBWxOK,WACZiJ,KAAAA,sBACAypB,6BAAuB,EAAAl1B,KACvB4uB,iBACA8D,EAAAA,KAAAA,mBACAC,EAAAA,KAAAA,mBACAlR,UAAI,EAAAzhB,KACJ2W,kBAAY,EAAA3W,KACZokB,kBACA+Q,EAAAA,KAAAA,iBACAC,EAAAA,KAAAA,4BACAC,4BAAsB,EAAAr1B,KACtB8vB,cAAQ,CAAA,qCX+NW9vB,KAKnBK,WAAK,EAAAL,KAELu0B,gBAAU,EAAAv0B,KACVgyB,0BACAC,EAAAA,KAAAA,qCACAC,8BAAwB,EAAAlyB,KAExB0e,iBAEA9C,EAAAA,KAAAA,mBAEAoT,EAAAA,KAAAA,2BAEAhK,EAAAA,KAAAA,qBAEAkM,kBAAY,EAAAlxB,KAOZmxB,yBAEAC,EAAAA,KAAAA,uBAEAzC,aAAO,EAAA3uB,KACP+b,UAEAtQ,EAAAA,KAAAA,sBAEAojB,oBAAc,CAAA,2CAEW7uB,KACzB20B,gBAAU,EAAA30B,KACVs1B,8BAAwB,EAAAt1B,KACxBu0B,gBACAhY,EAAAA,KAAAA,4BAEAoS,aAAO,EAAA3uB,KAEP4uB,iBAEAnjB,EAAAA,KAAAA,eAEAojB,EAAAA,KAAAA,oBAEAnQ,EAAAA,KAAAA,wBAEAoQ,2BAAqB,EAAA9uB,KAErB+uB,4BAKAnT,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErB+b,UAAI,EAAA/b,KAEJuE,UAAI,EAAAvE,KAEJglB,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAET,CAAA,gCAtSuBxC,KAEd4yB,eAEAC,EAAAA,KAAAA,qBAEAlc,kBAAY,EAAA3W,KAEZm1B,iBAAW,EAAAn1B,KAEX0vB,oBAAc,EAAA1vB,KAEdu1B,qBAET,CAAA,sBgB3EwBC,WACfjB,KAAAA,gBACAC,EAAAA,KAAAA,gBACAC,EAAAA,KAAAA,wBACAC,gBAAU,CAAA,uBAGM,WAAA10B,KAEhBK,WAAK,EAAAL,KAELy1B,qBAAe,EAAAz1B,KAEf01B,0BAAoB,EAAA11B,KAEpB21B,mCAA6B,EAAA31B,KAE7B41B,qBAAe,EAAA51B,KAEf61B,0BAAoB,CAAA,uBP2JJC,WAEhBC,KAAAA,0BAEAC,qBAAe,CAAA,qBT4nCD,WAKd31B,KAAAA,kBAEAs0B,gBAAU,EAAA30B,KACVs1B,8BAAwB,EAAAt1B,KAExBu0B,gBAAU,EAAAv0B,KAKVi2B,SAEAzB,EAAAA,KAAAA,uBAEAC,iBAAW,EAAAz0B,KAEX00B,gBAEAwB,EAAAA,KAAAA,oBAEAC,EAAAA,KAAAA,gBACAC,EAAAA,KAAAA,gCAEA1X,iBAAW,EAAA1e,KAEX4b,mBAEAoT,EAAAA,KAAAA,kCAEAhK,cAAQ,EAAAhlB,KAERkxB,kBAAY,EAAAlxB,KAOZmxB,yBAAmB,EAAAnxB,KAEnBoxB,gBAEAzC,EAAAA,KAAAA,oBACA5S,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,gDAEoBwH,gBACpB1B,gBAAU,EAAA30B,KACVs1B,8BACAf,EAAAA,KAAAA,gBACAhY,EAAAA,KAAAA,qBAEAoS,EAAAA,KAAAA,oBAEAC,iBAAW,EAAA5uB,KAEXyL,eAEAojB,EAAAA,KAAAA,2BAEAnQ,iBAAW,EAAA1e,KAEX8uB,2BAAqB,EAAA9uB,KAErB+uB,4BAAsB,EAAA/uB,KAKtB4b,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,cAEAvgB,EAAAA,KAAAA,YAEAwqB,EAAAA,KAAAA,qBAEAC,mBAAa,EAAAlvB,KACb6Y,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,yCAtzC2B,WAElCkwB,KAAAA,0BAEA4D,cAAQ,EAAAt2B,KAERK,WAEA41B,EAAAA,KAAAA,SAEAC,EAAAA,KAAAA,oBAEAC,EAAAA,KAAAA,uBAEAvG,cAAQ,EAAA5vB,KAERu2B,0BAGT,CAAA,0BAyP4B,WACnBrF,KAAAA,kBACAc,EAAAA,KAAAA,0BACAC,EAAAA,KAAAA,qCACAC,8BAAwB,EAAAlyB,KAExB0e,iBAEA9C,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErBglB,cAAQ,EAAAhlB,KAORmxB,yBAAmB,EAAAnxB,KAEnBoxB,gBAEAzC,EAAAA,KAAAA,oBACA5S,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,oBAET,CAAA,2CAAkC7uB,KAEzB2uB,aAEAC,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAET6uB,oBAEAnQ,EAAAA,KAAAA,wBAEAoQ,2BAAqB,EAAA9uB,KAErB+uB,4BAKAnT,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErB+b,UAAI,EAAA/b,KAEJuE,UAAI,EAAAvE,KAEJglB,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,gBACAsW,EAAAA,KAAAA,sBAEA3sB,EAAAA,KAAAA,8CAy+BcxC,KACdkxB,kBAEAxS,EAAAA,KAAAA,wBAEA9C,mBAAa,EAAA5b,KAEbgvB,2BAAqB,EAAAhvB,KAErBglB,cAAQ,EAAAhlB,KAORmxB,yBAEAC,EAAAA,KAAAA,uBAEAzC,aAAO,EAAA3uB,KACP+b,UAEAtQ,EAAAA,KAAAA,eAEAojB,EAAAA,KAAAA,oBAET,CAAA,2BAA6B,WAEpBF,KAAAA,oBAEAC,iBAAW,EAAA5uB,KAEXyL,eAAS,EAAAzL,KAET6uB,oBAAc,EAAA7uB,KAEd0e,iBAEAoQ,EAAAA,KAAAA,kCAEAC,4BAAsB,EAAA/uB,KAKtB4b,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAEAC,EAAAA,KAAAA,mBACArW,EAAAA,KAAAA,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,0BW//BY,WAAAxC,KACnBmhB,UACA3F,EAAAA,KAAAA,eAET,CAAA,gCM9dkC,WAAAxb,KAEzBqK,iBAEAC,EAAAA,KAAAA,iBAEAE,EAAAA,KAAAA,eAEAC,EAAAA,KAAAA,uCRuLY,WAEZmkB,KAAAA,wBAEA4H,sBAAgB,EAAAx2B,KAEhBy2B,mBAEAC,EAAAA,KAAAA,yBAEAC,EAAAA,KAAAA,+BAEAC,EAAAA,KAAAA,mCAEAC,oBAAc,EAAA72B,KAEd82B,4BAEA1B,EAAAA,KAAAA,4BAEAC,4BAAsB,EAAAr1B,KAEtB+2B,uBAAiB,EAAA/2B,KAEjBg3B,sBAAgB,EAAAh3B,KAEhBi3B,WAEAC,EAAAA,KAAAA,oBAEAC,eAAS,EAAAn3B,KAETo3B,mBAEAC,EAAAA,KAAAA,cAEAC,EAAAA,KAAAA,gBACAC,EAAAA,KAAAA,6BAEA9rB,eAAS,EAAAzL,KAET0yB,mBAAa,EAAA1yB,KAEb2yB,YAAM,EAAA3yB,KAENyK,mBAEAmoB,EAAAA,KAAAA,eAEAC,EAAAA,KAAAA,cAEAC,EAAAA,KAAAA,uBAEAnc,kBAAY,EAAA3W,KAEZokB,kBAEAsL,EAAAA,KAAAA,2BAEAqD,iBAAW,EAAA/yB,KAEXgzB,YAAM,EAAAhzB,KAENizB,uBAAiB,EAAAjzB,KAEjBkzB,sBACApD,EAAAA,KAAAA,0CAEoB0H,WAEpBjc,KAAAA,kBAEAH,EAAAA,KAAAA,0BAEAqc,kBAAY,EAAAz3B,KAEZ03B,uBAEA3D,EAAAA,KAAAA,4BAEA3X,WAAK,CAAA,iCAaqBub,WAC1BlW,KAAAA,UACAmW,EAAAA,KAAAA,sBACA/f,WAAK,CAAA,yCAEkB7X,KAEvBK,WAAK,EAAAL,KACL8xB,mBAAa,EAAA9xB,KAEbg0B,qBACAC,EAAAA,KAAAA,gCACAlC,UAAI,EAAA/xB,KACJmyB,cACA0F,EAAAA,KAAAA,gBAEArF,EAAAA,KAAAA,iBACAsF,EAAAA,KAAAA,iCACAlJ,iBAAW,EAAA5uB,KAEXyL,eAEAuZ,EAAAA,KAAAA,qBAEA+S,iBAAW,EAAA/3B,KACX8vB,cAAQ,EAAA9vB,KACRg4B,aAAO,EAAAh4B,KACPi4B,0BAET,CAAA,uBAAyBC,gBAEhB/B,gBAAU,EAAAn2B,KAEVK,WAAK,EAAAL,KACL20B,gBAAU,EAAA30B,KAEVu0B,gBAEAC,EAAAA,KAAAA,uBAEAC,iBAAW,EAAAz0B,KAEX00B,gBAEAyD,EAAAA,KAAAA,iCAEAC,EAAAA,KAAAA,cACAxJ,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAETglB,cAEA+S,EAAAA,KAAAA,wBACAjI,cAAQ,EAAA9vB,KACRg4B,aAAO,EAAAh4B,KACPi4B,0BAAoB,CAAA,kCAEJj4B,KAChBq4B,cACAC,EAAAA,KAAAA,gBACA7sB,EAAAA,KAAAA,eACAinB,EAAAA,KAAAA,0BACA6F,cAAQ,EAAAv4B,KACRw4B,cAAQ,EAAAx4B,KACRy4B,gBAAU,EAAAz4B,KACV4uB,iBACA8J,EAAAA,KAAAA,qBACA5I,EAAAA,KAAAA,cAGT,CAAA,iCAAmC,WAE1BgC,KAAAA,0BAEA8C,wBAAkB,EAAA50B,KAClB60B,4BAAsB,EAAA70B,KACtB4uB,iBAAW,EAAA5uB,KAEXyL,eAEAuZ,EAAAA,KAAAA,qBAEA+S,iBAAW,EAAA/3B,KACX8vB,cACAkI,EAAAA,KAAAA,aACAC,EAAAA,KAAAA,0BAET,CAAA,kCAAoC,WAC3BU,KAAAA,yBACAC,wBAAkB,EAAA54B,KAClB64B,0BAAoB,EAAA74B,KACpB0e,iBAAW,EAAA1e,KACX84B,qBACAlK,EAAAA,KAAAA,iBAEAnjB,EAAAA,KAAAA,eAEAuZ,EAAAA,KAAAA,qBAEA+S,iBAAW,EAAA/3B,KACX8vB,cAAQ,EAAA9vB,KACRg4B,aAAO,EAAAh4B,KACPi4B,0BAET,CAAA,8BAAgC,WACvBc,KAAAA,oBACAC,EAAAA,KAAAA,4BACAC,EAAAA,KAAAA,oCACAC,+BAAyB,EAAAl5B,KACzBm5B,8BAAwB,EAAAn5B,KACxBo5B,0BAAoB,EAAAp5B,KACpBq5B,2BACAC,EAAAA,KAAAA,kCACAC,EAAAA,KAAAA,yBACAC,EAAAA,KAAAA,sBACAC,aAAO,EAAAz5B,KAEP05B,iBAEAC,EAAAA,KAAAA,wBAEAC,yBAAmB,EAAA55B,KACnB4uB,iBAAW,EAAA5uB,KAEXyL,eAAS,EAAAzL,KAETglB,cAEA+S,EAAAA,KAAAA,iBACAjI,EAAAA,KAAAA,cACAkI,EAAAA,KAAAA,oBACAC,0BAAoB,CAAA,+BAEI,WAKxB/gB,KAAAA,mBAEA4C,0BAAoB,EAAA9Z,KACpB4uB,iBAEAnjB,EAAAA,KAAAA,eAEAuZ,EAAAA,KAAAA,cAEA+S,EAAAA,KAAAA,wBACAjI,cAAQ,EAAA9vB,KACRg4B,aACAC,EAAAA,KAAAA,oDDhYkB,WAAAj4B,KAClBwxB,aAAO,CAAA,sBVwUQqI,WACfvH,KAAAA,wBACAjiB,aAAO,EAAArQ,KACP85B,iBAAW,EAAA95B,KACX+5B,iBAAW,EAAA/5B,KACXg6B,kBAAY,EAAAh6B,KACZi6B,oBAAc,EAAAj6B,KACdk6B,iBAAW,CAAA,uBA8GK,WAAAl6B,KAChBsyB,iBAAW,EAAAtyB,KACXglB,cAAQ,EAAAhlB,KACRm6B,kBAAY,EAAAn6B,KACZo6B,kBAAY,EAAAp6B,KACZq6B,YACAJ,EAAAA,KAAAA,oBAET,CAAA,iBY1fmBK,gBACV1L,iBAAW,EAAA5uB,KACXu6B,kBAAY,EAAAv6B,KACZyL,eACAinB,EAAAA,KAAAA,mBACA8H,EAAAA,KAAAA,qBACAC,gBAAU,EAAAz6B,KACV06B,WAAK,EAAA16B,KACL26B,WACAC,EAAAA,KAAAA,kBACAC,EAAAA,KAAAA,mCACAC,qBAAe,EAAA96B,KACf+6B,2BAAqB,CAAA,mCVgzDOC,gBAC5BlkB,oBAAc,EAAA9W,KACd4W,kBACAG,EAAAA,KAAAA,qCW/vDYkkB,gBACZrM,iBAAW,EAAA5uB,KACXw2B,sBAAgB,EAAAx2B,KAChByK,mBACAywB,EAAAA,KAAAA,aACAnI,EAAAA,KAAAA,wBACAC,YAAM,EAAAhzB,KACN0vB,oBACA/Y,EAAAA,KAAAA,yBACAyN,kBAAY,EAAApkB,KACZm7B,kBAAY,EAAAn7B,KACZiyB,8BACAC,EAAAA,KAAAA,8BACAkJ,EAAAA,KAAAA,iCACAjE,eAAS,EAAAn3B,KACT+2B,uBAAiB,EAAA/2B,KACjByL,eACAinB,EAAAA,KAAAA,mBACAS,EAAAA,KAAAA,kBACAP,eAAS,EAAA5yB,KACT6yB,cAAQ,EAAA7yB,KACRozB,oBACAC,EAAAA,KAAAA,cACAvD,EAAAA,KAAAA,qBACAwD,oBAAc,CAAA,2CAMsB+H,gBACpCC,WAAK,EAAAt7B,KACL0e,iBAAW,EAAA1e,KACXu7B,eACAC,EAAAA,KAAAA,aACAC,EAAAA,KAAAA,mDH5CmBC,WACnBC,KAAAA,eACAC,EAAAA,KAAAA,mBACAC,EAAAA,KAAAA,kBACAC,EAAAA,KAAAA,mBACAC,EAAAA,KAAAA,oBACAC,EAAAA,KAAAA,cACAC,EAAAA,KAAAA,mBACAC,EAAAA,KAAAA,yBACAC,EAAAA,KAAAA,qBACAC,EAAAA,KAAAA,sBACAC,EAAAA,KAAAA,cACAC,EAAAA,KAAAA,aACAC,EAAAA,KAAAA,sBACAC,gBAAU,EAAAx8B,KACVy8B,cAAQ,CAAA,mBCgXI,WAAAz8B,KACZ0e,iBAET,CAAA,gCQ9akC,WAAA1e,KACzBqJ,cAAQ,CAAA,6BjBuacqzB,gBACtB1K,0BAAoB,EAAAhyB,KACpBiyB,8BAAwB,EAAAjyB,KACxBkyB,8BAAwB,EAAAlyB,KAExB0e,iBAEA9C,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErBglB,cAOAmM,EAAAA,KAAAA,gCAEAC,gBAAU,EAAApxB,KAEV2uB,aACA5S,EAAAA,KAAAA,iBAEAtQ,eAAS,EAAAzL,KAET6uB,oBAGT,CAAA,mCA2gC0B7uB,KAEjB0e,iBAAW,EAAA1e,KAEX4b,mBAAa,EAAA5b,KAEbgvB,2BAEAhK,EAAAA,KAAAA,qBAOAmM,yBAAmB,EAAAnxB,KAEnBoxB,gBAEAzC,EAAAA,KAAAA,aACA5S,EAAAA,KAAAA,UAEAtQ,EAAAA,KAAAA,sBAEAojB,oBAAc,CAAA,qCAEK7uB,KACnBixB,wBAEAvS,EAAAA,KAAAA,wBAEA9C,mBAAa,EAAA5b,KAEbgvB,2BAEAhK,EAAAA,KAAAA,qBAEAkM,kBAAY,EAAAlxB,KAOZmxB,yBAAmB,EAAAnxB,KAEnBoxB,gBAAU,EAAApxB,KAEV2uB,aACA5S,EAAAA,KAAAA,iBAEAtQ,eAAS,EAAAzL,KAET6uB,oBAGT,CAAA,iDA6ZwC7uB,KAC/BsxB,eAAS,EAAAtxB,KACTuxB,gBAAU,EAAAvxB,KACVwxB,aACAC,EAAAA,KAAAA,uBACAC,eAAS,EAAA1xB,KACT2xB,gBAET,CAAA,+BW/0DiC,WACxBgL,KAAAA,uBACAC,EAAAA,KAAAA,0BACAC,yBAAmB,EAAA78B,KACnB88B,8BAAwB,EAAA98B,KACxB+8B,qBACAC,EAAAA,KAAAA,oBAET,CAAA,sCb2Z6Bh9B,KACpBi9B,QAAE,EAAAj9B,KACF0e,iBAAW,CAAA,2BUtcS,WAAA1e,KAEpByL,eAAS,EAAAzL,KAETk9B,0BAAoB,EAAAl9B,KAEpB0vB,oBAAc,EAAA1vB,KAEdm9B,oBAAc,EAAAn9B,KAEdo9B,qBAAe,EAAAp9B,KAEfq9B,mBAAa,EAAAr9B,KAEbs9B,gBAAU,CAAA,wBGkCO,WACjBC,KAAAA,cACA94B,EAAAA,KAAAA,mBACAmqB,iBAAW,EAAA5uB,KACX04B,qBAAe,CAAA,mCFsUE14B,KAEjBu9B,cAAQ,EAAAv9B,KAERyE,YAAM,EAAAzE,KAENw9B,sBAEAC,EAAAA,KAAAA,8BAEA7O,iBAAW,EAAA5uB,KAEX04B,qBAGT,CAAA,0BAA4BgF,gBAEnBH,cAAQ,EAAAv9B,KAERyE,YAEA+4B,EAAAA,KAAAA,6BAEAC,uBAAiB,EAAAz9B,KAEjB4uB,iBAAW,EAAA5uB,KAEX04B,qBAAe,CAAA,uBX+UC,WAAA14B,KAChBsyB,iBAAW,EAAAtyB,KACX29B,kBAAY,EAAA39B,KACZ49B,kBAET,CAAA,mBEqBqB,WAAA59B,KACZyL,eAAS,EAAAzL,KACTyhB,UACA/C,EAAAA,KAAAA,wBACAmf,cAAQ,EAAA79B,KACRglB,cACA8Y,EAAAA,KAAAA,8BACAC,wBAAkB,CAAA,0BiBh0BC,WAAA/9B,KACnBiK,kBAGT,CAAA,mBTwEqB,WAAAjK,KAEZ8R,cAAQ,EAAA9R,KAER+R,eAAS,EAAA/R,KAETmV,cAAQ,EAAAnV,KAER0e,iBAAW,CAAA,2BShFSsf,WAEpB30B,KAAAA,cAEAC,EAAAA,KAAAA,cAEA+a,EAAAA,KAAAA,iBAEA4Z,EAAAA,KAAAA,oDAGsB,WAAAj+B,KAEtBk+B,+BAAyB,EAAAl+B,KAEzBm+B,wBAAkB,EAAAn+B,KAElBo+B,6BAAuB,EAAAp+B,KAEvBq+B,8BAAwB,EAAAr+B,KAExBs+B,iBAEAC,EAAAA,KAAAA,0BAEAC,EAAAA,KAAAA,eAEA90B,EAAAA,KAAAA,+BAEAC,EAAAA,KAAAA,oCAEAC,EAAAA,KAAAA,kCAGT,CAAA,kCAAyB5J,KAEhBqJ,cAAQ,EAAArJ,KAERsJ,cAAQ,CAAA,8BN6EItJ,KACZ4uB,iBAAW,EAAA5uB,KACXw2B,sBACAiI,EAAAA,KAAAA,iBACAC,EAAAA,KAAAA,0BACAC,gBAAU,EAAA3+B,KACV4+B,kBACAC,EAAAA,KAAAA,qBACA1J,iBAAW,EAAAn1B,KACXiyB,8BAAwB,EAAAjyB,KACxBkyB,8BACAvC,EAAAA,KAAAA,UACA3X,EAAAA,KAAAA,kBACA8mB,qBAAe,EAAA9+B,KACf++B,gBAAU,EAAA/+B,KACV82B,4BACA1B,EAAAA,KAAAA,qBACAC,EAAAA,KAAAA,mCACA2J,WAAK,EAAAh/B,KACLi/B,eAAS,EAAAj/B,KACTk/B,eACAC,EAAAA,KAAAA,+BACAC,EAAAA,KAAAA,oCACAC,mBAAa,EAAAr/B,KACbs/B,aAAO,EAAAt/B,KACPu/B,sBACAC,EAAAA,KAAAA,iCACAC,gBAAU,EAAAz/B,KACV0/B,cACAvI,EAAAA,KAAAA,eACAwI,EAAAA,KAAAA,sBACAC,eAAS,EAAA5/B,KACTi3B,WAAK,EAAAj3B,KACLo7B,0BACA9D,EAAAA,KAAAA,gBACA/b,EAAAA,KAAAA,yBACAH,mBAAa,EAAApb,KACb6/B,oBAAc,EAAA7/B,KACdk3B,aACAzb,EAAAA,KAAAA,aACAhQ,EAAAA,KAAAA,sBACAhB,mBAAa,EAAAzK,KACb0yB,mBAAa,EAAA1yB,KACb2yB,YACAlR,EAAAA,KAAAA,UACA8R,EAAAA,KAAAA,yBACAtE,cAAQ,EAAAjvB,KACR2W,kBACAyN,EAAAA,KAAAA,yBACAsL,oBAAc,EAAA1vB,KACdglB,cAAQ,EAAAhlB,KACRwzB,sBACAC,EAAAA,KAAAA,eACA3D,EAAAA,KAAAA,2DAS0B9vB,KAC1ByhB,UAAI,EAAAzhB,KACJ43B,eACA/f,EAAAA,KAAAA,WAET,CAAA,8BAAgC,WAAA7X,KACvByL,eACAq0B,EAAAA,KAAAA,oBACAhO,EAAAA,KAAAA,0BACAC,UAAI,EAAA/xB,KACJglB,cAAQ,EAAAhlB,KACR+3B,iBACAF,EAAAA,KAAAA,gBAEArF,EAAAA,KAAAA,wBAKAuN,kBAAY,EAAA//B,KAEZggC,wBAAkB,EAAAhgC,KAClB8vB,cAET,CAAA,8BXsPgCmQ,gBAEvBxqB,uBAAiB,EAAAzV,KACjB0kB,oBACAD,EAAAA,KAAAA,8BACAyb,qBAAe,EAAAlgC,KACfmgC,iBAAW,EAAAngC,KACXogC,sBAAgB,EAAApgC,KAChBqgC,0BACArO,EAAAA,KAAAA,iCACAC,8BAAwB,EAAAjyB,KACxBkyB,8BAEAxT,EAAAA,KAAAA,iBAEA9C,EAAAA,KAAAA,mBAEAoT,EAAAA,KAAAA,kCAEAhK,cAAQ,EAAAhlB,KAERkxB,kBAOAC,EAAAA,KAAAA,gCAEAC,gBAAU,EAAApxB,KAEV2uB,aACA5S,EAAAA,KAAAA,iBAEAtQ,eAAS,EAAAzL,KAET6uB,oBAET,CAAA,oCAAsC,WAAA7uB,KAC7ByV,uBAAiB,EAAAzV,KACjBykB,uBACAyb,EAAAA,KAAAA,4BACAE,sBAAgB,EAAApgC,KAChBqgC,0BACA/kB,EAAAA,KAAAA,mBAEAqT,EAAAA,KAAAA,aAEAC,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAET6uB,oBAEAnQ,EAAAA,KAAAA,wBAEAoQ,2BAAqB,EAAA9uB,KAErB+uB,4BAAsB,EAAA/uB,KAKtB4b,mBAAa,EAAA5b,KAEbgvB,2BAEAjT,EAAAA,KAAAA,iBAEAxX,UAAI,EAAAvE,KAEJglB,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAGT,CAAA,yBWvE2B,WAAAxC,KAClByhB,UACAV,EAAAA,KAAAA,sCAtQgB,WAChBsX,KAAAA,cACAiI,EAAAA,KAAAA,uBACA70B,eAAS,EAAAzL,KACT0yB,mBAAa,EAAA1yB,KACbu4B,cACAC,EAAAA,KAAAA,cACAC,EAAAA,KAAAA,uBACA7J,iBAAW,EAAA5uB,KACX04B,qBACA5I,EAAAA,KAAAA,kDAE4B,WAC5BnZ,KAAAA,kBACAyN,EAAAA,KAAAA,yBAEA/a,cAAQ,EAAArJ,KAERsJ,cAAQ,EAAAtJ,KAERqkB,iBAEA4Z,EAAAA,KAAAA,sDAEwBsC,WACxB90B,KAAAA,sBACAyL,YAAM,EAAAlX,KACN8Z,0BAAoB,EAAA9Z,KACpBglB,cACA+S,EAAAA,KAAAA,iBAKAgI,EAAAA,KAAAA,yBAEAC,wBAAkB,EAAAhgC,KAClB8vB,cAAQ,CAAA,0CAE2B0Q,gBACnCze,kBAAY,CAAA,2CAEwB0e,WACpCxgC,KAAAA,6DAOoCygC,gBACpCpF,WAAK,EAAAt7B,KACL0e,iBAAW,EAAA1e,KACXu7B,eACAC,EAAAA,KAAAA,aACAC,EAAAA,KAAAA,0DXgjD0B,WAAAz7B,KAE1Bmc,oBAEAsI,EAAAA,KAAAA,8BAEAyb,qBAAe,EAAAlgC,KAEfqZ,eACA4Y,EAAAA,KAAAA,8BACAC,EAAAA,KAAAA,8BACAkO,EAAAA,KAAAA,6BACAC,0BAAoB,EAAArgC,KACpButB,cACApY,EAAAA,KAAAA,qBAEAwrB,aAAO,EAAA3gC,KAKP0yB,mBAAa,EAAA1yB,KAOb4gC,oBAAc,EAAA5gC,KAEds2B,cAEAuK,EAAAA,KAAAA,qBAEAjR,cAAQ,EAAA5vB,KAERu2B,0BAEA7X,EAAAA,KAAAA,wBAKAoiB,wBAAkB,EAAA9gC,KAKlB+gC,6BAKAC,EAAAA,KAAAA,uCAEAC,eAAS,CAAA,6CAziCkBjhC,KAE3BC,iBAEAwL,EAAAA,KAAAA,eAEAy1B,EAAAA,KAAAA,uBAET,CAAA,0BWpkB4B,WACnBz1B,KAAAA,eACAmjB,EAAAA,KAAAA,wBACA8J,qBAAe,EAAA14B,KACf0yB,mBACAjR,EAAAA,KAAAA,iBACA/C,iBAAW,EAAA1e,KACXmhC,eAAS,EAAAnhC,KACTshB,iBACA0D,EAAAA,KAAAA,cACApJ,EAAAA,KAAAA,0BACAwlB,0BAAoB,EAAAphC,KACpB6gB,yBAAmB,EAAA7gB,KACnB4gB,mCACAygB,EAAAA,KAAAA,wBACAC,EAAAA,KAAAA,6BACAxR,cAAQ,EAAA9vB,KACRuhC,YAAM,CAAA,iCAEoBC,gBAC1B/1B,eAAS,EAAAzL,KACT6+B,cAAQ,EAAA7+B,KACRyhB,UACA/C,EAAAA,KAAAA,wBACAoR,cAAQ,EAAA9vB,KACR+gB,cAET,CAAA,0CAAiC/gB,KACxBqH,SAAG,EAAArH,KACHyhB,UACAggB,EAAAA,KAAAA,gBACAC,EAAAA,KAAAA,yBACAC,qBAAe,EAAA3hC,KACf4hC,oBAAc,CAAA,4CAEuBC,gBACrCC,WAAK,EAAA9hC,KACL6X,WAAK,CAAA,yBAEakqB,gBAClBt2B,eAAS,EAAAzL,KACT4uB,iBACA8J,EAAAA,KAAAA,4BACAjX,UAAI,EAAAzhB,KACJgiC,cAAQ,EAAAhiC,KACRiiC,aACAH,EAAAA,KAAAA,WACAI,EAAAA,KAAAA,kBACAzoB,aAAO,EAAAzZ,KACP8vB,cAAQ,CAAA,gCAEiBqS,gBACzBvmB,mBAAa,EAAA5b,KACboiC,sBAAgB,EAAApiC,KAChBogC,sBACAC,EAAAA,KAAAA,0BACAO,EAAAA,KAAAA,2BACAyB,cAAQ,EAAAriC,KACRglB,cAAQ,EAAAhlB,KACRsiC,oBACAC,EAAAA,KAAAA,0BACAC,2BAAqB,EAAAxiC,KACrByiC,eACAC,EAAAA,KAAAA,kBACAC,EAAAA,KAAAA,wBACAC,gCAA0B,EAAA5iC,KAC1B6iC,+BAAyB,EAAA7iC,KACzB8iC,cACA1R,EAAAA,KAAAA,gBAET,CAAA,2CXqgBkCpxB,KACzButB,cAAQ,EAAAvtB,KACRmV,cAAQ,EAAAnV,KACR0e,iBACAqkB,EAAAA,KAAAA,sCACAC,oBAAc,EAAAhjC,KAEdoxB,gBACA6R,EAAAA,KAAAA,yBAET,CAAA,kBSnYoB,WAAAjjC,KAEXyL,eAEAy3B,EAAAA,KAAAA,uBAEAC,EAAAA,KAAAA,oBAEAC,EAAAA,KAAAA,0BAEAxU,iBAAW,EAAA5uB,KAEXqjC,eAET,CAAA,kCTkDoCC,gBAK3BpsB,YAAM,EAAAlX,KAEN8Z,0BACAkY,EAAAA,KAAAA,iCACAC,8BAAwB,EAAAjyB,KACxBkyB,8BAAwB,EAAAlyB,KAExB0e,iBAAW,EAAA1e,KAEX4b,mBAEAoT,EAAAA,KAAAA,kCAEAhK,cAAQ,EAAAhlB,KAERkxB,kBAOAC,EAAAA,KAAAA,yBAEAC,EAAAA,KAAAA,gBAEAzC,EAAAA,KAAAA,oBACA5S,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,6DAEiC0U,gBACjCzpB,0BAAoB,EAAA9Z,KACpB80B,8BACA5d,EAAAA,KAAAA,mBACAoE,mBAAa,EAAAtb,KAEb2uB,aAAO,EAAA3uB,KAEP4uB,iBAAW,EAAA5uB,KAEXyL,eAEAojB,EAAAA,KAAAA,2BAEAnQ,iBAAW,EAAA1e,KAEX8uB,2BAEAC,EAAAA,KAAAA,4BAKAnT,EAAAA,KAAAA,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAAQ,EAAAjvB,KAERkvB,mBAAa,EAAAlvB,KACb6Y,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,8CFwqCqBxC,KAC5BsyB,iBAAW,EAAAtyB,KACXwjC,kBAAY,EAAAxjC,KACZyjC,kBAAY,CAAA,6BE5QUC,gBAEtB5pB,0BAAoB,EAAA9Z,KAKpBkX,YAKAysB,EAAAA,KAAAA,wBAKAC,mBAAa,EAAA5jC,KAEb0e,iBAAW,EAAA1e,KAEX4b,mBAAa,EAAA5b,KAEbgvB,2BAEAhK,EAAAA,KAAAA,qBAEAkM,kBAAY,EAAAlxB,KAOZmxB,yBAEAC,EAAAA,KAAAA,uBAEAzC,aAAO,EAAA3uB,KACP+b,UAEAtQ,EAAAA,KAAAA,sBAEAojB,oBAAc,CAAA,mCAEcgV,WAC5B/pB,KAAAA,iCACAgb,8BAAwB,EAAA90B,KACxBkX,YACAoE,EAAAA,KAAAA,0BAEAqT,aAAO,EAAA3uB,KAEP4uB,iBAAW,EAAA5uB,KAEXyL,eAAS,EAAAzL,KAET6uB,oBAEAnQ,EAAAA,KAAAA,wBAEAoQ,2BAAqB,EAAA9uB,KAErB+uB,4BAKAnT,EAAAA,KAAAA,mBAEAoT,EAAAA,KAAAA,2BAEAjT,EAAAA,KAAAA,iBAEAxX,UAAI,EAAAvE,KAEJglB,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAET,CAAA,2BQxgD6B,WAAAxC,KACpByhB,UAAI,EAAAzhB,KACJyL,eAAS,EAAAzL,KACT8jC,uBAAiB,CAAA,2UGmPA,WAAA9jC,KACjByL,eACAs4B,EAAAA,KAAAA,eACAC,EAAAA,KAAAA,qBACAC,YAAM,CAAA,iCMpSoB,WAAAjkC,KAC1B4K,cAAQ,CAAA,kCAEmBs5B,WAC3BC,KAAAA,uBACAlkC,EAAAA,KAAAA,iBAET,CAAA,+CjBsjBsCD,KAC7Bwb,eACAJ,EAAAA,KAAAA,0BACAG,kBAAY,EAAAvb,KACZyb,aACAW,EAAAA,KAAAA,WACAI,EAAAA,KAAAA,aACAd,EAAAA,KAAAA,kBACA0oB,UAAI,CAAA,yCAGmBpkC,KACvBqkC,aAAO,EAAArkC,KAEPwb,eAAS,EAAAxb,KAETob,mBAEAG,EAAAA,KAAAA,yBAEAE,aAAO,EAAAzb,KAEPoc,WAEAI,EAAAA,KAAAA,aAEAd,EAAAA,KAAAA,WAEA0oB,EAAAA,KAAAA,uDAsN0BpkC,KAC1BihC,eACApoB,EAAAA,KAAAA,uBAEAyrB,wBAAkB,EAAAtkC,KAElBukC,wBAEAC,EAAAA,KAAAA,iCAEA9R,mBAAa,EAAA1yB,KAEb0e,iBAOA/I,EAAAA,KAAAA,6BAEA8uB,2BAAqB,EAAAzkC,KAOrB4gC,oBAAc,EAAA5gC,KAEd0kC,sBAAgB,EAAA1kC,KAEhB2gC,aAEAuC,EAAAA,KAAAA,8BAEA5M,cAAQ,EAAAt2B,KAERmc,oBAEAhB,EAAAA,KAAAA,yBAEAwpB,EAAAA,KAAAA,kBACAxvB,EAAAA,KAAAA,mDAE6ByvB,gBAC7Bn5B,eAAS,EAAAzL,KACT4uB,iBAAW,EAAA5uB,KACX6kC,oBAAc,EAAA7kC,KACd8kC,qBACAC,EAAAA,KAAAA,wBACA1mB,aAAO,CAAA,oDAE2Bre,KAClCglC,mBACAC,EAAAA,KAAAA,wBACAlC,+BAAyB,EAAA/iC,KACzBklC,iBAGT,CAAA,yBAu9B2BC,WAElBhpB,KAAAA,2BAEAhB,yBAAmB,EAAAnb,KACnButB,cACApY,EAAAA,KAAAA,qBAEAwrB,aAAO,EAAA3gC,KAKP0yB,mBAAa,EAAA1yB,KAOb4gC,oBAAc,EAAA5gC,KAEds2B,cAEAuK,EAAAA,KAAAA,qBAEAjR,cAAQ,EAAA5vB,KAERu2B,0BAEA7X,EAAAA,KAAAA,iBAKAoiB,EAAAA,KAAAA,wBAKAC,EAAAA,KAAAA,oCAKAC,gCAA0B,EAAAhhC,KAE1BihC,eAET,CAAA,0BAxgC4BmE,gBAEnB35B,eAAS,EAAAzL,KAETkhC,uBAGT,CAAA,+BAgsBiC,WAAAlhC,KACxBoc,WAAK,EAAApc,KACLob,mBACAG,EAAAA,KAAAA,yBACAiB,aAAO,EAAAxc,KACPokC,UAGT,CAAA,yBAA2BiB,gBAClBhB,aAAO,EAAArkC,KAEPoc,WAEAhB,EAAAA,KAAAA,0BAEAG,kBAAY,EAAAvb,KAEZwc,aAAO,EAAAxc,KAEPokC,UAAI,EAAApkC,KAEJslC,cAEAC,EAAAA,KAAAA,gDAvtByB,WAAAvlC,KACzB6Y,gBAAU,EAAA7Y,KAEVskC,wBAEAC,EAAAA,KAAAA,+BAEAC,0BAAoB,EAAAxkC,KAEpB0yB,mBAEAhU,EAAAA,KAAAA,iBAOA/I,EAAAA,KAAAA,sBAEA8uB,EAAAA,KAAAA,kCAOA7D,oBAAc,EAAA5gC,KAEd0kC,sBAEA/D,EAAAA,KAAAA,oBAEAuC,uBAAiB,EAAAljC,KAEjBs2B,cAEAna,EAAAA,KAAAA,2BAEAhB,yBAAmB,EAAAnb,KAEnB2kC,kBACAxvB,EAAAA,KAAAA,4CAEsB,WAAAnV,KAEtB0e,iBAEA9C,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErBglB,cAEAkM,EAAAA,KAAAA,kBAOAC,EAAAA,KAAAA,yBAEAC,EAAAA,KAAAA,uBAEAzC,aAAO,EAAA3uB,KACP+b,UAEAtQ,EAAAA,KAAAA,sBAEAojB,oBAAc,CAAA,mCAEuB,WAErCF,KAAAA,oBAEAC,iBAAW,EAAA5uB,KAEXyL,eAEAojB,EAAAA,KAAAA,2BAEAnQ,iBAAW,EAAA1e,KAEX8uB,2BAEAC,EAAAA,KAAAA,mCAKAnT,mBAAa,EAAA5b,KAEbgvB,2BAEAjT,EAAAA,KAAAA,UAEAxX,EAAAA,KAAAA,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAEAC,EAAAA,KAAAA,0BACArW,gBAAU,EAAA7Y,KACVmvB,sBAAgB,EAAAnvB,KAEhBwC,aAAO,CAAA,qBWzrBOgjC,WACdC,KAAAA,6BACAC,4BAAsB,EAAA1lC,KACtB2lC,mCACAC,EAAAA,KAAAA,iCACAC,2BAAqB,EAAA7lC,KACrB8lC,iCAA2B,EAAA9lC,KAC3B+lC,yBACAC,EAAAA,KAAAA,wBACAC,EAAAA,KAAAA,sCACAC,8BAAwB,EAAAlmC,KACxBmmC,4BAAsB,EAAAnmC,KACtBomC,8BACAC,EAAAA,KAAAA,kDAEkBC,WAClBC,KAAAA,2BACAC,uBAAiB,EAAAxmC,KACjBymC,mCAA6B,EAAAzmC,KAC7B0mC,2BACAC,EAAAA,KAAAA,gCACAC,EAAAA,KAAAA,sCACAC,2BAAqB,EAAA7mC,KACrB8mC,0BACAC,EAAAA,KAAAA,4BACAC,2BAAqB,EAAAhnC,KACrBinC,6BAAuB,EAAAjnC,KACvBknC,oCACAC,EAAAA,KAAAA,4BACAC,EAAAA,KAAAA,2CACAC,8BAAwB,EAAArnC,KACxBsnC,4BAAsB,EAAAtnC,KACtBunC,8BACAC,EAAAA,KAAAA,sBAET,CAAA,wBAgG0BC,WACjBh8B,KAAAA,sBACAgW,UAAI,EAAAzhB,KACJ0e,iBAAW,EAAA1e,KACXmhC,eACAvlB,EAAAA,KAAAA,mBACAiF,EAAAA,KAAAA,gCACAD,mCAA6B,EAAA5gB,KAC7BqhC,wBACAC,EAAAA,KAAAA,6BACAC,YAAM,CAAA,4BXyKemG,gBAErBtoB,YAAM,EAAApf,KAEN2nC,oBACAvH,EAAAA,KAAAA,6BACApO,0BAAoB,EAAAhyB,KACpBiyB,8BACAC,EAAAA,KAAAA,qCAEAxT,iBAAW,EAAA1e,KAEX4b,mBAAa,EAAA5b,KAEbgvB,2BAAqB,EAAAhvB,KAErBglB,cAEAkM,EAAAA,KAAAA,yBAOAC,yBAAmB,EAAAnxB,KAEnBoxB,gBAEAzC,EAAAA,KAAAA,oBACA5S,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,uDAE2B+Y,WAE3BxoB,KAAAA,YACA3J,EAAAA,KAAAA,8BACAoyB,mBAAa,EAAA7nC,KACbogC,sBACA9kB,EAAAA,KAAAA,0BAEAqT,aAAO,EAAA3uB,KAEP4uB,iBAEAnjB,EAAAA,KAAAA,sBAEAojB,oBAAc,EAAA7uB,KAEd0e,iBAEAoQ,EAAAA,KAAAA,kCAEAC,4BAAsB,EAAA/uB,KAKtB4b,mBAAa,EAAA5b,KAEbgvB,2BAAqB,EAAAhvB,KAErB+b,UAEAxX,EAAAA,KAAAA,iBAEAygB,cAAQ,EAAAhlB,KAERyE,YAEAwqB,EAAAA,KAAAA,cAEAC,EAAAA,KAAAA,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAGT,CAAA,6CAoToCxC,KAE3Bof,YAGT,CAAA,mCAAqC0oB,gBAE5BC,gBAAU,EAAA/nC,KAEVgoC,sBAET,CAAA,gCAKkCC,gBAEzBvV,mBAAa,EAAA1yB,KAEbkoC,4BAAsB,EAAAloC,KAEtBmoC,yBAAmB,EAAAnoC,KACnBmV,cAEAyZ,EAAAA,KAAAA,wBAEAnjB,eAAS,EAAAzL,KAET6uB,oBAEAnQ,EAAAA,KAAAA,wBAEAoQ,2BAAqB,EAAA9uB,KAErB+uB,4BAKAnT,EAAAA,KAAAA,0BAEAoT,2BAAqB,EAAAhvB,KAErB+b,UAEAxX,EAAAA,KAAAA,UAEAygB,EAAAA,KAAAA,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAAO,CAAA,wBAGU4lC,gBACjB7a,cAAQ,EAAAvtB,KACRmV,cAEAkzB,EAAAA,KAAAA,gCAEAC,EAAAA,KAAAA,qCAEAlX,EAAAA,KAAAA,uBAKA6R,yBAAmB,CAAA,oCAGDjjC,KAKlByL,eAEA88B,EAAAA,KAAAA,sDAGwBC,gBAExBL,yBAAmB,EAAAnoC,KACnBmV,cAAQ,EAAAnV,KAER4uB,iBAAW,EAAA5uB,KAEXyL,eAEAojB,EAAAA,KAAAA,2BAEAnQ,iBAAW,EAAA1e,KAEX8uB,2BAEAC,EAAAA,KAAAA,4BAKAnT,EAAAA,KAAAA,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAAQ,EAAAjvB,KAERkvB,mBAAa,EAAAlvB,KACb6Y,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,uCAGcxC,KAErBijC,yBACAvkB,EAAAA,KAAAA,oDAG2B+pB,WAE3B7Z,KAAAA,iBAEAnjB,EAAAA,KAAAA,sBAEAojB,oBAAc,EAAA7uB,KAEd0e,iBAEAoQ,EAAAA,KAAAA,kCAEAC,4BAAsB,EAAA/uB,KAKtB4b,mBAAa,EAAA5b,KAEbgvB,2BAAqB,EAAAhvB,KAErB+b,UAEAxX,EAAAA,KAAAA,iBAEAygB,cAAQ,EAAAhlB,KAERyE,YAEAwqB,EAAAA,KAAAA,cAEAC,EAAAA,KAAAA,mBACArW,EAAAA,KAAAA,uBACAsW,sBAAgB,EAAAnvB,KAEhBwC,aAET,CAAA,2BSntB6B,WAAAxC,KACpB0oC,mBAAa,EAAA1oC,KACb2oC,gBACAC,EAAAA,KAAAA,4BAGT,CAAA,wBQzb0BC,gBACjB1+B,iBAAW,CAAA,iCjB22De,WAC1BgN,KAAAA,qBACAJ,iBAAW,CAAA,qBAhOG+xB,WAEdC,KAAAA,oBAEAt0B,aAAO,EAAAzU,KAEPgpC,sBAEAC,EAAAA,KAAAA,sDS7tCmBjpC,KAEnB2d,mBAAa,EAAA3d,KAEb4d,YAAM,CAAA,gCDpZmB,WAAA5d,KACzByhB,UAAI,EAAAzhB,KACJC,iBAAW,EAAAD,KACXkpC,gBAAU,CAAA,mBG+RE,WACZz9B,KAAAA,eACAinB,EAAAA,KAAAA,0BACAyW,YAAM,EAAAnpC,KACN4uB,iBAAW,EAAA5uB,KACXyhB,UACA8d,EAAAA,KAAAA,sBACAzP,EAAAA,KAAAA,qBACAsZ,cAAQ,EAAAppC,KAKRyb,aAAO,EAAAzb,KAKPqpC,qBACAC,EAAAA,KAAAA,wBACAC,EAAAA,KAAAA,2DAEyBC,gBACzB3I,cAAQ,EAAA7gC,KACR6+B,cAAQ,EAAA7+B,KACRypC,oBACAnwB,EAAAA,KAAAA,gBACAC,EAAAA,KAAAA,uBACAmwB,mBAAa,EAAA1pC,KACb2pC,mBAAa,EAAA3pC,KACbykB,uBACAxkB,EAAAA,KAAAA,wBACAo/B,mBAAa,EAAAr/B,KACbu/B,sBACAE,EAAAA,KAAAA,gBACAmK,EAAAA,KAAAA,qBACAjK,eAAS,CAAA,2BAEWkK,WACpBC,KAAAA,4BACAC,mBAAa,EAAA/pC,KACbgqC,mBACAC,EAAAA,KAAAA,+DAE6B,WAC7Bx+B,KAAAA,eACApL,EAAAA,KAAAA,kBACAm6B,cAAQ,CAAA,+CAQqBx6B,KAC7BkqC,qBAAe,EAAAlqC,KACfmqC,uBACAC,EAAAA,KAAAA,gCACAC,sBAAgB,CAAA,iCAVUC,WAC1BC,KAAAA,+BACAC,0BAAoB,EAAAxqC,KACpByqC,4BAAsB,EAAAzqC,KACtB0qC,yBAET,CAAA,yBAM2BC,gBAClBC,gBAAU,EAAA5qC,KACVof,YAAM,CAAA,wBAEWyrB,gBACjBC,kBAAY,EAAA9qC,KACZ4kB,sBAAgB,EAAA5kB,KAChB+qC,uBACAC,EAAAA,KAAAA,sBACAC,EAAAA,KAAAA,+CM7YiB,WAAAjrC,KAEjBE,kBAAY,EAAAF,KAEZC,iBAAW,EAAAD,KAEXkrC,gCAA0B,CAAA,6CCxEYC,WACtClc,KAAAA,cACAmc,EAAAA,KAAAA,sBACApmB,EAAAA,KAAAA,cACA+Y,EAAAA,KAAAA,2DlBguD2BsN,WAE3B/0B,KAAAA,mFkBhuDmC,WAAAtW,KACnCwrB,UAAI,EAAAxrB,KACJorC,sBACApmB,EAAAA,KAAAA,cACAsmB,EAAAA,KAAAA,8BACAC,EAAAA,KAAAA,6BACAxN,EAAAA,KAAAA,+BACAyN,0BAAoB,EAAAxrC,KACpByrC,gCAA0B,EAAAzrC,KAC1B0rC,6BAAuB,EAAA1rC,KACvB2rC,2BAAqB,EAAA3rC,KACrBwwB,0BAAoB,EAAAxwB,KACpB4rC,sBAAgB,EAAA5rC,KAChBirB,oBAAc,CAAA,qCAEgB4gB,WAC9Bl2B,KAAAA,sBACA8uB,EAAAA,KAAAA,2BACA9D,EAAAA,KAAAA,oBACAmL,qBAAe,EAAA9rC,KACf+rC,oBAAc,EAAA/rC,KACdgsC,yBAAmB,EAAAhsC,KACnBisC,oBAAc,EAAAjsC,KACdksC,yBACAC,EAAAA,KAAAA,sCACAC,EAAAA,KAAAA,2CACAC,EAAAA,KAAAA,mBACAC,EAAAA,KAAAA,wBACA7qB,EAAAA,KAAAA,UACAyJ,EAAAA,KAAAA,8BACAlG,EAAAA,KAAAA,cACApJ,EAAAA,KAAAA,0BACAoT,2BAAqB,EAAAhvB,KACrBusC,gCAA0B,EAAAvsC,KAC1BwsC,6BAAuB,EAAAxsC,KACvBysC,2BAAqB,EAAAzsC,KACrB0sC,0BACAtM,EAAAA,KAAAA,sBACAuM,EAAAA,KAAAA,eACAzd,EAAAA,KAAAA,mBACA0d,EAAAA,KAAAA,yBACAC,uBAAiB,EAAA7sC,KACjB8sC,yBAAmB,EAAA9sC,KACnB+sC,wBAAkB,CAAA,yBlB6rDA,WAAA/sC,KAClByhB,UAAI,EAAAzhB,KACJgtC,aACAC,EAAAA,KAAAA,6BACAjoB,cAAQ,CAAA,0CkB/rD2BkoB,WACnCC,KAAAA,UACAC,EAAAA,KAAAA,WACApoB,EAAAA,KAAAA,qBACAtG,iBAAW,EAAA1e,KACX+9B,wBAAkB,EAAA/9B,KAClBqtC,kBAAY,CAAA,2CAEwBC,WACpC5uB,KAAAA,iBACAsG,EAAAA,KAAAA,cACA+Y,EAAAA,KAAAA,+BACAwP,oBAAc,CAAA,yBlBitDI,WAAAvtC,KAElBmW,SAET,CAAA,kDgBtvD8B,WAAAnW,KAErBK,WAAK,EAAAL,KAEL0kC,sBAAgB,CAAA,4BhBmsBK,WAAA1kC,KAErBwtC,qBAAe,EAAAxtC,KAEfytC,oBAEAC,EAAAA,KAAAA,yBACA1b,0BAAoB,EAAAhyB,KACpBiyB,8BACAC,EAAAA,KAAAA,qCAEAxT,iBAAW,EAAA1e,KAEX4b,mBAEAoT,EAAAA,KAAAA,kCAEAhK,cAAQ,EAAAhlB,KAERkxB,kBAOAC,EAAAA,KAAAA,yBAEAC,EAAAA,KAAAA,gBAEAzC,EAAAA,KAAAA,oBACA5S,UAAI,EAAA/b,KAEJyL,eAEAojB,EAAAA,KAAAA,uDAE2B,WAAA7uB,KAC3BwtC,qBACAC,EAAAA,KAAAA,2BACAC,kBAAY,EAAA1tC,KAEZ2uB,aAEAC,EAAAA,KAAAA,iBAEAnjB,EAAAA,KAAAA,eAEAojB,EAAAA,KAAAA,2BAEAnQ,iBAAW,EAAA1e,KAEX8uB,2BAEAC,EAAAA,KAAAA,mCAKAnT,mBAAa,EAAA5b,KAEbgvB,2BAEAjT,EAAAA,KAAAA,iBAEAxX,UAAI,EAAAvE,KAEJglB,cAEAvgB,EAAAA,KAAAA,mBAEAwqB,cAAQ,EAAAjvB,KAERkvB,mBAAa,EAAAlvB,KACb6Y,gBAAU,EAAA7Y,KACVmvB,sBAEA3sB,EAAAA,KAAAA,qCAg1BgBmrC,gBAEhBH,qBAAe,EAAAxtC,KAEfytC,oBAEA/uB,EAAAA,KAAAA,wBAEA9C,mBAAa,EAAA5b,KAEbgvB,2BAEAhK,EAAAA,KAAAA,cAEAkM,EAAAA,KAAAA,kBAOAC,EAAAA,KAAAA,gCAEAC,gBAAU,EAAApxB,KAEV2uB,aACA5S,EAAAA,KAAAA,iBAEAtQ,eAAS,EAAAzL,KAET6uB,oBAAc,CAAA,6BAEQ+e,gBACtBJ,qBAAe,EAAAxtC,KACfytC,oBAEA9e,EAAAA,KAAAA,aAEAC,EAAAA,KAAAA,iBAEAnjB,EAAAA,KAAAA,sBAEAojB,oBAAc,EAAA7uB,KAEd0e,iBAEAoQ,EAAAA,KAAAA,kCAEAC,4BAAsB,EAAA/uB,KAKtB4b,mBAEAoT,EAAAA,KAAAA,kCAEAjT,UAAI,EAAA/b,KAEJuE,UAEAygB,EAAAA,KAAAA,qBAEAvgB,YAAM,EAAAzE,KAENivB,cAAQ,EAAAjvB,KAERkvB,mBAAa,EAAAlvB,KACb6Y,gBACAsW,EAAAA,KAAAA,6BAEA3sB,aAAO,CAAA,6BA0GIxC,KAEX6tC,iBAEAC,EAAAA,KAAAA"}
1
+ {"version":3,"file":"index.js","sources":["../src/apiTokens.ts","../src/eventTypes.ts","../src/apiError.ts","../src/baseApi.ts","../src/authentication/index.ts","../src/lookups/types.ts","../src/lookups/index.ts","../src/payments/types.ts","../src/payments/index.ts","../src/log/types.ts","../src/consumers/index.ts","../src/qr/index.ts","../src/merchants/index.ts","../src/log/messageTemplate.ts","../src/log/index.ts","../src/common/types.ts","../src/consumers/types.ts","../src/devices/types.ts","../src/merchants/types.ts","../src/system/index.ts","../src/content/index.ts","../src/reports/index.ts","../src/index.ts","../src/tokens/types.ts","../src/authentication/types.ts","../src/reports/types.ts"],"sourcesContent":["// Using this from React requires the following to be applied in the application somewhere.\r\n// import { Buffer } from 'buffer'\r\n// global.Buffer = Buffer\r\n\r\nclass ApiTokens {\r\n public accessToken: string | null = null;\r\n public refreshToken: string | null = null;\r\n\r\n public decodeToken(token?: string): any {\r\n if (token) {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n if (isBrowser) {\r\n // Browser compatible version.\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n .join(''),\r\n );\r\n\r\n return JSON.parse(jsonPayload) || {};\r\n } else {\r\n const base64 = Buffer.from(token.split('.')[1], 'base64').toString();\r\n return JSON.parse(base64) || {};\r\n }\r\n }\r\n\r\n return {};\r\n }\r\n}\r\n\r\nexport default new ApiTokens();\r\n","export const OnSessionStarted = Symbol('login.session.started');\r\nexport const OnSessionExpired = Symbol('login.session.expired');\r\nexport const OnAutomaticRefresh = Symbol('login.session.refreshed');\r\nexport const OnApiRetry = Symbol('api.retry');\r\nexport const OnPaymentStatusUpdate = Symbol('payment.status');\r\nexport const OnPaymentComplete = Symbol('payment.complete');\r\nexport const OnRequires3DSecure = Symbol('payment.wait.requires3dSecure');\r\nexport const OnRequiresPin = Symbol('payment.wait.requiresPin');\r\nexport const OnRequiresConfirmation = Symbol('payment.wait.requiresConfirmation');\r\nexport const OnRequiresAddress = Symbol('payment.wait.requiresAddress');\r\nexport const OnComplete3DSecure = Symbol('payment.complete3dSecure');\r\n","export class ApiError extends Error {\r\n public constructor(\r\n public statusCode: number,\r\n public result: any,\r\n message?: string,\r\n ) {\r\n let newMessage = message;\r\n\r\n // Turn the message into a single string if there are multiple validation errors.\r\n if (Array.isArray(result) && result.length > 0) {\r\n newMessage = result.join(' ');\r\n } else if (typeof result === 'string' || result instanceof String) {\r\n newMessage = result.toString();\r\n }\r\n\r\n super(newMessage);\r\n Object.setPrototypeOf(this, ApiError.prototype);\r\n }\r\n}\r\n","import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { ApiError } from './apiError';\r\nimport ApiTokens from './apiTokens';\r\nimport PubSub from 'pubsub-js';\r\n\r\nconst LogSeparator = '-'.repeat(120);\r\n\r\nexport { default as ApiTokens } from './apiTokens';\r\n\r\nexport abstract class BaseApi {\r\n private readonly axiosInstance: AxiosInstance;\r\n\r\n protected readonly consoleLogging: boolean;\r\n protected readonly events = PubSub;\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false) {\r\n this.axiosInstance = axiosInstance;\r\n this.consoleLogging = consoleLogging || false;\r\n }\r\n\r\n protected async request<T>(endpoint: string, method: string, body: any = null, token: string | null = null): Promise<T> {\r\n let response: AxiosResponse<any, any>;\r\n\r\n try {\r\n let config: AxiosRequestConfig<any> = {\r\n method: method,\r\n url: endpoint,\r\n };\r\n\r\n if (token || ApiTokens.accessToken) {\r\n config.headers = { Authorization: 'Bearer ' + (token || ApiTokens.accessToken) };\r\n }\r\n\r\n if (body) {\r\n body = this.convertDatesToIso(body);\r\n config.data = body;\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n' + LogSeparator);\r\n console.debug(`${method}: ${this.axiosInstance.defaults.baseURL}${endpoint}`);\r\n console.debug(LogSeparator);\r\n\r\n if (config.headers) {\r\n console.debug('-- HEADERS --');\r\n console.dir(config.headers);\r\n }\r\n\r\n if (config.data) {\r\n console.debug('-- REQUEST --');\r\n console.dir(config.data, { depth: null });\r\n }\r\n }\r\n\r\n response = await this.axiosInstance(config);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n-- RESPONSE --');\r\n console.dir(response.data, { depth: null });\r\n }\r\n } catch (error) {\r\n if (this.consoleLogging) {\r\n if (error.response) {\r\n console.error(`\\r\\n-- ERROR ${error.response.status} --\\r\\n`, error.response.data);\r\n } else {\r\n console.error(`\\r\\n-- ERROR ${error.errno || error.code} --\\r\\n`, error.code);\r\n }\r\n\r\n console.debug(LogSeparator);\r\n }\r\n\r\n let statusCode = 0;\r\n let result = null;\r\n let message = null;\r\n\r\n if (error.response) {\r\n if (error.response.data) {\r\n result = error.response.data.result || null;\r\n message = error.response.data.message || null;\r\n statusCode = error.response.data.status || error.response.status;\r\n } else {\r\n statusCode = error.response.status;\r\n }\r\n }\r\n\r\n throw new ApiError(statusCode, result, message || error.message);\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug(LogSeparator);\r\n }\r\n\r\n if (response.data) {\r\n if (!response.data.success && typeof response.data !== 'string') {\r\n throw new ApiError(response.data.status || response.status, response.data.result || null, response.data.message || null);\r\n }\r\n\r\n return response.data.result || response.data || null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // *** Generated by AI ***\r\n // AI was too retarded to figure out how to do this in an Axios interceptor.\r\n // Being a superior human being, I moved this into the request method above.\r\n private convertDatesToIso(obj: any): any {\r\n if (obj === null || obj === undefined) {\r\n return obj;\r\n }\r\n\r\n // Handle Date objects.\r\n if (obj instanceof Date) {\r\n if (isNaN(obj.getTime())) {\r\n throw new Error('Invalid date provided');\r\n }\r\n\r\n // Get timezone offset in minutes and convert to hours:minutes format.\r\n const offset = -obj.getTimezoneOffset();\r\n const offsetHours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, '0');\r\n const offsetMinutes = String(Math.abs(offset) % 60).padStart(2, '0');\r\n const offsetSign = offset >= 0 ? '+' : '-';\r\n\r\n // Extract date and time components.\r\n const year = obj.getFullYear();\r\n const month = String(obj.getMonth() + 1).padStart(2, '0');\r\n const day = String(obj.getDate()).padStart(2, '0');\r\n const hours = String(obj.getHours()).padStart(2, '0');\r\n const minutes = String(obj.getMinutes()).padStart(2, '0');\r\n const seconds = String(obj.getSeconds()).padStart(2, '0');\r\n\r\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}${offsetSign}${offsetHours}:${offsetMinutes}`;\r\n }\r\n\r\n // Handle arrays.\r\n if (Array.isArray(obj)) {\r\n return obj.map((item) => this.convertDatesToIso(item));\r\n }\r\n\r\n // Handle plain objects.\r\n if (typeof obj === 'object' && obj.constructor === Object) {\r\n const converted: any = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n converted[key] = this.convertDatesToIso(obj[key]);\r\n }\r\n }\r\n return converted;\r\n }\r\n\r\n return obj;\r\n }\r\n}\r\n","import { BaseApi, ApiTokens } from '../baseApi';\r\nimport { FaceCheckResult } from '../common/types';\r\nimport { OnSessionStarted, OnSessionExpired } from '../eventTypes';\r\nimport { FaceMovementDetectionLevel } from '../lookups/types';\r\nimport { ChangePasswordRequest, ForgotPasswordRequest, LivenessRequest, LoginRequest, OtpVerificationRequest, SelfieRequest, TokenResponse } from './types';\r\n\r\nconst baseAuthEndpoint = '/v1/auth';\r\n\r\nexport class Authentication extends BaseApi {\r\n isLoggedIn(): boolean {\r\n if (ApiTokens.accessToken) {\r\n try {\r\n return new Date().getTime() < ApiTokens.decodeToken(ApiTokens.accessToken).exp * 1000;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n async login(username: string, password: string): Promise<TokenResponse> {\r\n const request: LoginRequest = {\r\n username: username,\r\n password: password,\r\n };\r\n\r\n ApiTokens.accessToken = null;\r\n ApiTokens.refreshToken = null;\r\n\r\n try {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/login`, 'POST', request);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n\r\n return Promise.resolve(tokenResponse);\r\n } catch (loginError) {\r\n // Change the access token if there is a response property for a new token. This may clear the token which is also expected.\r\n if (loginError.result) {\r\n ApiTokens.accessToken =\r\n loginError.result.changePasswordAccessToken || loginError.result.validatePhoneNumberAccessToken || loginError.result.resendEmailVerificationToken;\r\n }\r\n\r\n throw loginError;\r\n }\r\n }\r\n\r\n async logout(): Promise<void> {\r\n const refreshToken = ApiTokens.refreshToken;\r\n\r\n ApiTokens.accessToken = null;\r\n ApiTokens.refreshToken = null;\r\n\r\n if (refreshToken) {\r\n await this.request(`${baseAuthEndpoint}/logout`, 'POST', null, refreshToken);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n async refresh(token?: string): Promise<TokenResponse> {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/refresh`, 'POST', null, token || ApiTokens.refreshToken);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async checkLiveness(base64Images: string[]): Promise<FaceMovementDetectionLevel> {\r\n const request: LivenessRequest = {\r\n base64Images: base64Images,\r\n };\r\n\r\n return this.request<FaceMovementDetectionLevel>(`${baseAuthEndpoint}/liveness`, 'POST', request);\r\n }\r\n\r\n async checkFace(base64Image: string): Promise<FaceCheckResult> {\r\n const request: SelfieRequest = {\r\n base64Image: base64Image,\r\n };\r\n\r\n return this.request<FaceCheckResult>(`${baseAuthEndpoint}/face-check`, 'POST', request);\r\n }\r\n\r\n async changePassword(oldPassword: string, newPassword: string): Promise<TokenResponse> {\r\n const request: ChangePasswordRequest = {\r\n oldPassword: oldPassword,\r\n newPassword: newPassword,\r\n resetCode: null,\r\n userReference: null,\r\n };\r\n\r\n try {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/password/change`, 'POST', request);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n\r\n return Promise.resolve(tokenResponse);\r\n } catch (loginError) {\r\n // Change the access token if there is a response property for a new token. This may clear the token which is also expected.\r\n if (loginError.result) {\r\n ApiTokens.accessToken =\r\n loginError.result.changePasswordAccessToken || loginError.result.validatePhoneNumberAccessToken || loginError.result.resendEmailVerificationToken;\r\n }\r\n\r\n throw loginError;\r\n }\r\n }\r\n\r\n async forgotPassword(username: string): Promise<void> {\r\n const request: ForgotPasswordRequest = {\r\n username: username,\r\n };\r\n\r\n return this.request<void>(`${baseAuthEndpoint}/password/forgot`, 'POST', request);\r\n }\r\n\r\n async validateOtp(otpValue: string): Promise<TokenResponse> {\r\n const request: OtpVerificationRequest = {\r\n otpValue: otpValue,\r\n };\r\n\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/otp/validate`, 'POST', request);\r\n\r\n if (tokenResponse) {\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionStarted --');\r\n }\r\n\r\n this.events.publish(OnSessionStarted);\r\n }\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async resendOtp(): Promise<void> {\r\n return this.request<void>(`${baseAuthEndpoint}/otp/resend`, 'POST');\r\n }\r\n\r\n async resendEmailAddressVerification(): Promise<void> {\r\n return this.request<void>(`${baseAuthEndpoint}/email/verify/resend`, 'POST', null);\r\n }\r\n\r\n getCurrentConsumerReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).consumer_reference || null;\r\n }\r\n\r\n getCurrentMerchantReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).merchant_reference || null;\r\n }\r\n\r\n getCurrentBusinessReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).business_reference || null;\r\n }\r\n\r\n getCurrentTerminalReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).terminal_reference || null;\r\n }\r\n\r\n getCurrentUserReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).reference || null;\r\n }\r\n\r\n getCurrentUserName(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).user_name || null;\r\n }\r\n\r\n getRedirectAction(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).redirect_action || null;\r\n }\r\n\r\n getMobileNumber(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).mobile_number || null;\r\n }\r\n\r\n getEmailAddress(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).email_address || null;\r\n }\r\n}\r\n","export enum Bank {\r\n None = 'None',\r\n ABD = 'ABD',\r\n ACB = 'ACB',\r\n ABL = 'ABL',\r\n ABG = 'ABG',\r\n ABS = 'ABS',\r\n ADB = 'ADB',\r\n ADS = 'ADS',\r\n ALM = 'ALM',\r\n ANS = 'ANS',\r\n APX = 'APX',\r\n ASL = 'ASL',\r\n BSL = 'BSL',\r\n BOA = 'BOA',\r\n BOG = 'BOG',\r\n BSP = 'BSP',\r\n BPS = 'BPS',\r\n BLM = 'BLM',\r\n BSI = 'BSI',\r\n CAL = 'CAL',\r\n CBG = 'CBG',\r\n CBN = 'CBN',\r\n DFL = 'DFL',\r\n ECO = 'ECO',\r\n EPG = 'EPG',\r\n ETZ = 'ETZ',\r\n EXP = 'EXP',\r\n FPL = 'FPL',\r\n FAB = 'FAB',\r\n FBL = 'FBL',\r\n FDL = 'FDL',\r\n FBO = 'FBO',\r\n FBN = 'FBN',\r\n FCM = 'FCM',\r\n FNB = 'FNB',\r\n FNBSW = 'FNBSW',\r\n FNBLS = 'FNBLS',\r\n FNBNM = 'FNBNM',\r\n GCB = 'GCB',\r\n GPB = 'GPB',\r\n GPG = 'GPG',\r\n GMY = 'GMY',\r\n GTB = 'GTB',\r\n HBN = 'HBN',\r\n HBT = 'HBT',\r\n ITC = 'ITC',\r\n JBN = 'JBN',\r\n JUN = 'JUN',\r\n KOR = 'KOR',\r\n KSB = 'KSB',\r\n MBN = 'MBN',\r\n MLU = 'MLU',\r\n MOL = 'MOL',\r\n NGL = 'NGL',\r\n NIB = 'NIB',\r\n OPI = 'OPI',\r\n NSL = 'NSL',\r\n PSW = 'PSW',\r\n PBL = 'PBL',\r\n PBN = 'PBN',\r\n RBG = 'RBG',\r\n RBL = 'RBL',\r\n SAS = 'SAS',\r\n SBN = 'SBN',\r\n SCB = 'SCB',\r\n SCH = 'SCH',\r\n SIS = 'SIS',\r\n SOG = 'SOG',\r\n STB = 'STB',\r\n TIT = 'TIT',\r\n TRB = 'TRB',\r\n UBA = 'UBA',\r\n UBN = 'UBN',\r\n UMB = 'UMB',\r\n UNB = 'UNB',\r\n UNI = 'UNI',\r\n UNL = 'UNL',\r\n USL = 'USL',\r\n WBN = 'WBN',\r\n ZEN = 'ZEN',\r\n AFB = 'AFB',\r\n AFBB = 'AFBB',\r\n NED = 'NED',\r\n STD = 'STD',\r\n STDSW = 'STDSW',\r\n STDLS = 'STDLS',\r\n STDNM = 'STDNM',\r\n CAP = 'CAP',\r\n CAPB = 'CAPB',\r\n MER = 'MER',\r\n BID = 'BID',\r\n ALB = 'ALB',\r\n HBZ = 'HBZ',\r\n SAF = 'SAF',\r\n DIS = 'DIS',\r\n RMB = 'RMB',\r\n BZZ = 'BZZ',\r\n INV = 'INV',\r\n TYB = 'TYB',\r\n HOL = 'HOL',\r\n BOC = 'BOC',\r\n ENL = 'ENL',\r\n FBMB = 'FBMB',\r\n HSBC = 'HSBC',\r\n JPMCB = 'JPMCB',\r\n OMB = 'OMB',\r\n SARB = 'SARB',\r\n SAPB = 'SAPB',\r\n VBS = 'VBS',\r\n SBI = 'SBI',\r\n}\r\nexport class BankData {\r\n public isAvailable: boolean;\r\n public bank: Bank;\r\n public bankCode: string;\r\n public routingCode?: string;\r\n public bankName: string;\r\n public country: Country;\r\n}\r\nexport enum Channel {\r\n Unknown = 'Unknown',\r\n Web = 'Web',\r\n USSD = 'USSD',\r\n Callback = 'Callback',\r\n Generated = 'Generated',\r\n Settlement = 'Settlement',\r\n Scheduled = 'Scheduled',\r\n MobileApplication = 'MobileApplication',\r\n SDK = 'SDK',\r\n POS = 'POS',\r\n SuperPOS = 'SuperPOS',\r\n}\r\nexport enum ConsumerFileType {\r\n Unspecified = 'Unspecified',\r\n FaceImage = 'FaceImage',\r\n IdentityDocumentFront = 'IdentityDocumentFront',\r\n IdentityDocumentBack = 'IdentityDocumentBack',\r\n Liveness = 'Liveness',\r\n ProfileImage = 'ProfileImage',\r\n Signature = 'Signature',\r\n ConsumerAgreement = 'ConsumerAgreement',\r\n LoanContract = 'LoanContract',\r\n LoanSettlementQuote = 'LoanSettlementQuote',\r\n LoanPaidUpLetter = 'LoanPaidUpLetter',\r\n LoanStatement = 'LoanStatement',\r\n BankAccountLetter = 'BankAccountLetter',\r\n BankAccountStatement = 'BankAccountStatement',\r\n}\r\nexport enum Country {\r\n None = 'None',\r\n AFG = 'AFG',\r\n ALB = 'ALB',\r\n DZA = 'DZA',\r\n ASM = 'ASM',\r\n AND = 'AND',\r\n AGO = 'AGO',\r\n AIA = 'AIA',\r\n ATA = 'ATA',\r\n ATG = 'ATG',\r\n ARG = 'ARG',\r\n ARM = 'ARM',\r\n ABW = 'ABW',\r\n AUS = 'AUS',\r\n AUT = 'AUT',\r\n AZE = 'AZE',\r\n BHS = 'BHS',\r\n BHR = 'BHR',\r\n BGD = 'BGD',\r\n BRB = 'BRB',\r\n BLR = 'BLR',\r\n BEL = 'BEL',\r\n BLZ = 'BLZ',\r\n BEN = 'BEN',\r\n BMU = 'BMU',\r\n BTN = 'BTN',\r\n BOL = 'BOL',\r\n BES = 'BES',\r\n BIH = 'BIH',\r\n BWA = 'BWA',\r\n BVT = 'BVT',\r\n BRA = 'BRA',\r\n IOT = 'IOT',\r\n VGB = 'VGB',\r\n BRN = 'BRN',\r\n BGR = 'BGR',\r\n BFA = 'BFA',\r\n BDI = 'BDI',\r\n KHM = 'KHM',\r\n CMR = 'CMR',\r\n CAN = 'CAN',\r\n CPV = 'CPV',\r\n CYM = 'CYM',\r\n CAF = 'CAF',\r\n TCD = 'TCD',\r\n CHL = 'CHL',\r\n CHN = 'CHN',\r\n CXR = 'CXR',\r\n CCK = 'CCK',\r\n COL = 'COL',\r\n COM = 'COM',\r\n COG = 'COG',\r\n COK = 'COK',\r\n CRI = 'CRI',\r\n CIV = 'CIV',\r\n HRV = 'HRV',\r\n CUB = 'CUB',\r\n CUW = 'CUW',\r\n CYP = 'CYP',\r\n CZE = 'CZE',\r\n COD = 'COD',\r\n DNK = 'DNK',\r\n DJI = 'DJI',\r\n DMA = 'DMA',\r\n DOM = 'DOM',\r\n ECU = 'ECU',\r\n EGY = 'EGY',\r\n SLV = 'SLV',\r\n GNQ = 'GNQ',\r\n ERI = 'ERI',\r\n EST = 'EST',\r\n ETH = 'ETH',\r\n FLK = 'FLK',\r\n FRO = 'FRO',\r\n FJI = 'FJI',\r\n FIN = 'FIN',\r\n FRA = 'FRA',\r\n FXX = 'FXX',\r\n GUF = 'GUF',\r\n PYF = 'PYF',\r\n ATF = 'ATF',\r\n GAB = 'GAB',\r\n GMB = 'GMB',\r\n GEO = 'GEO',\r\n DEU = 'DEU',\r\n GHA = 'GHA',\r\n GIB = 'GIB',\r\n GRC = 'GRC',\r\n GRL = 'GRL',\r\n GRD = 'GRD',\r\n GLP = 'GLP',\r\n GUM = 'GUM',\r\n GTM = 'GTM',\r\n GIN = 'GIN',\r\n GNB = 'GNB',\r\n GUY = 'GUY',\r\n HTI = 'HTI',\r\n HMD = 'HMD',\r\n VAT = 'VAT',\r\n HND = 'HND',\r\n HKG = 'HKG',\r\n HUN = 'HUN',\r\n ISL = 'ISL',\r\n IND = 'IND',\r\n IDN = 'IDN',\r\n IRN = 'IRN',\r\n IRQ = 'IRQ',\r\n IRL = 'IRL',\r\n IMN = 'IMN',\r\n ISR = 'ISR',\r\n ITA = 'ITA',\r\n JAM = 'JAM',\r\n JPN = 'JPN',\r\n JOR = 'JOR',\r\n KAZ = 'KAZ',\r\n KEN = 'KEN',\r\n KIR = 'KIR',\r\n KOR = 'KOR',\r\n PRK = 'PRK',\r\n KWT = 'KWT',\r\n KGZ = 'KGZ',\r\n LAO = 'LAO',\r\n LVA = 'LVA',\r\n LBN = 'LBN',\r\n LSO = 'LSO',\r\n LBR = 'LBR',\r\n LBY = 'LBY',\r\n LIE = 'LIE',\r\n LTU = 'LTU',\r\n LUX = 'LUX',\r\n MAC = 'MAC',\r\n MKD = 'MKD',\r\n MDG = 'MDG',\r\n MWI = 'MWI',\r\n MYS = 'MYS',\r\n MDV = 'MDV',\r\n MLI = 'MLI',\r\n MLT = 'MLT',\r\n MHL = 'MHL',\r\n MTQ = 'MTQ',\r\n MRT = 'MRT',\r\n MUS = 'MUS',\r\n MYT = 'MYT',\r\n MEX = 'MEX',\r\n FSM = 'FSM',\r\n MDA = 'MDA',\r\n MCO = 'MCO',\r\n MNG = 'MNG',\r\n MSR = 'MSR',\r\n MNE = 'MNE',\r\n MAR = 'MAR',\r\n MOZ = 'MOZ',\r\n MMR = 'MMR',\r\n NAM = 'NAM',\r\n NRU = 'NRU',\r\n NPL = 'NPL',\r\n NLD = 'NLD',\r\n NCL = 'NCL',\r\n NZL = 'NZL',\r\n NIC = 'NIC',\r\n NER = 'NER',\r\n NGA = 'NGA',\r\n NIU = 'NIU',\r\n NFK = 'NFK',\r\n MNP = 'MNP',\r\n NOR = 'NOR',\r\n OMN = 'OMN',\r\n PAK = 'PAK',\r\n PLW = 'PLW',\r\n PSE = 'PSE',\r\n PAN = 'PAN',\r\n PNG = 'PNG',\r\n PRY = 'PRY',\r\n PER = 'PER',\r\n PHL = 'PHL',\r\n PCN = 'PCN',\r\n POL = 'POL',\r\n PRT = 'PRT',\r\n PRI = 'PRI',\r\n QAT = 'QAT',\r\n REU = 'REU',\r\n ROU = 'ROU',\r\n RUS = 'RUS',\r\n RWA = 'RWA',\r\n WSM = 'WSM',\r\n SMR = 'SMR',\r\n STP = 'STP',\r\n SAU = 'SAU',\r\n SEN = 'SEN',\r\n SRB = 'SRB',\r\n SYC = 'SYC',\r\n SLE = 'SLE',\r\n SGP = 'SGP',\r\n SXM = 'SXM',\r\n SVK = 'SVK',\r\n SVN = 'SVN',\r\n SLB = 'SLB',\r\n SOM = 'SOM',\r\n ZAF = 'ZAF',\r\n SGS = 'SGS',\r\n SSD = 'SSD',\r\n ESP = 'ESP',\r\n LKA = 'LKA',\r\n SHN = 'SHN',\r\n KNA = 'KNA',\r\n LCA = 'LCA',\r\n MAF = 'MAF',\r\n SPM = 'SPM',\r\n VCT = 'VCT',\r\n SDN = 'SDN',\r\n SUR = 'SUR',\r\n SJM = 'SJM',\r\n SWZ = 'SWZ',\r\n SWE = 'SWE',\r\n CHE = 'CHE',\r\n SYR = 'SYR',\r\n TWN = 'TWN',\r\n TJK = 'TJK',\r\n TZA = 'TZA',\r\n THA = 'THA',\r\n TLS = 'TLS',\r\n TGO = 'TGO',\r\n TKL = 'TKL',\r\n TON = 'TON',\r\n TTO = 'TTO',\r\n TUN = 'TUN',\r\n TUR = 'TUR',\r\n TKM = 'TKM',\r\n TCA = 'TCA',\r\n TUV = 'TUV',\r\n UGA = 'UGA',\r\n UKR = 'UKR',\r\n ARE = 'ARE',\r\n GBR = 'GBR',\r\n QZZ = 'QZZ',\r\n USA = 'USA',\r\n UMI = 'UMI',\r\n VIR = 'VIR',\r\n URY = 'URY',\r\n UZB = 'UZB',\r\n VUT = 'VUT',\r\n VEN = 'VEN',\r\n VNM = 'VNM',\r\n WLF = 'WLF',\r\n ESH = 'ESH',\r\n YEM = 'YEM',\r\n ZMB = 'ZMB',\r\n ZWE = 'ZWE',\r\n}\r\nexport class CountryData {\r\n public isAvailable: boolean;\r\n public country: Country;\r\n public countryName: string;\r\n public longIsoCode: string;\r\n public shortIsoCode: string;\r\n public numericIsoCode: number;\r\n public dialingCode: string;\r\n}\r\nexport enum Currency {\r\n None = 'None',\r\n AFN = 'AFN',\r\n ALL = 'ALL',\r\n ANG = 'ANG',\r\n ARS = 'ARS',\r\n AUD = 'AUD',\r\n AWG = 'AWG',\r\n AZN = 'AZN',\r\n BAM = 'BAM',\r\n BBD = 'BBD',\r\n BGN = 'BGN',\r\n BMD = 'BMD',\r\n BND = 'BND',\r\n BOB = 'BOB',\r\n BRL = 'BRL',\r\n BSD = 'BSD',\r\n BWP = 'BWP',\r\n BYN = 'BYN',\r\n BZD = 'BZD',\r\n CAD = 'CAD',\r\n CHF = 'CHF',\r\n CLP = 'CLP',\r\n CNY = 'CNY',\r\n COP = 'COP',\r\n CRC = 'CRC',\r\n CUP = 'CUP',\r\n CZK = 'CZK',\r\n DKK = 'DKK',\r\n DOP = 'DOP',\r\n EGP = 'EGP',\r\n EUR = 'EUR',\r\n FJD = 'FJD',\r\n FKP = 'FKP',\r\n GBP = 'GBP',\r\n GHS = 'GHS',\r\n GIP = 'GIP',\r\n GTQ = 'GTQ',\r\n GYD = 'GYD',\r\n HKD = 'HKD',\r\n HNL = 'HNL',\r\n HRK = 'HRK',\r\n HUF = 'HUF',\r\n IDR = 'IDR',\r\n ILS = 'ILS',\r\n INR = 'INR',\r\n IRR = 'IRR',\r\n ISK = 'ISK',\r\n JMD = 'JMD',\r\n JPY = 'JPY',\r\n KGS = 'KGS',\r\n KHR = 'KHR',\r\n KPW = 'KPW',\r\n KRW = 'KRW',\r\n KYD = 'KYD',\r\n KZT = 'KZT',\r\n LAK = 'LAK',\r\n LBP = 'LBP',\r\n LKR = 'LKR',\r\n LRD = 'LRD',\r\n MKD = 'MKD',\r\n MNT = 'MNT',\r\n MUR = 'MUR',\r\n MXN = 'MXN',\r\n MYR = 'MYR',\r\n MZN = 'MZN',\r\n NAD = 'NAD',\r\n NGN = 'NGN',\r\n NIO = 'NIO',\r\n NOK = 'NOK',\r\n NPR = 'NPR',\r\n NZD = 'NZD',\r\n OMR = 'OMR',\r\n PAB = 'PAB',\r\n PEN = 'PEN',\r\n PHP = 'PHP',\r\n PKR = 'PKR',\r\n PLN = 'PLN',\r\n PYG = 'PYG',\r\n QAR = 'QAR',\r\n RON = 'RON',\r\n RSD = 'RSD',\r\n RUB = 'RUB',\r\n SAR = 'SAR',\r\n SBD = 'SBD',\r\n SCR = 'SCR',\r\n SEK = 'SEK',\r\n SGD = 'SGD',\r\n SHP = 'SHP',\r\n SOS = 'SOS',\r\n SRD = 'SRD',\r\n SVC = 'SVC',\r\n SYP = 'SYP',\r\n THB = 'THB',\r\n TRY = 'TRY',\r\n TTD = 'TTD',\r\n TWD = 'TWD',\r\n UAH = 'UAH',\r\n USD = 'USD',\r\n UYU = 'UYU',\r\n UZS = 'UZS',\r\n VES = 'VES',\r\n VND = 'VND',\r\n XCD = 'XCD',\r\n YER = 'YER',\r\n ZAR = 'ZAR',\r\n ZWD = 'ZWD',\r\n}\r\nexport class CurrencyData {\r\n public isAvailable: boolean;\r\n public currency: Currency;\r\n public currencyName: string;\r\n public currencyCode: string;\r\n public symbol: string;\r\n public numericIsoCode: number;\r\n}\r\nexport enum DayOfWeek {\r\n Sunday = 'Sunday',\r\n Monday = 'Monday',\r\n Tuesday = 'Tuesday',\r\n Wednesday = 'Wednesday',\r\n Thursday = 'Thursday',\r\n Friday = 'Friday',\r\n Saturday = 'Saturday',\r\n}\r\nexport enum FaceMovementDetectionLevel {\r\n None = 'None',\r\n OneRangeOfMotion = 'OneRangeOfMotion',\r\n MultipleRangesOfMotion = 'MultipleRangesOfMotion',\r\n AllRangesOfMotion = 'AllRangesOfMotion',\r\n}\r\nexport enum Gender {\r\n Male = 'Male',\r\n Female = 'Female',\r\n}\r\nexport class IdAndDescription {\r\n public id: number;\r\n public description: string;\r\n}\r\nexport enum IdentityDocumentType {\r\n None = 'None',\r\n National = 'National',\r\n Passport = 'Passport',\r\n Drivers = 'Drivers',\r\n Other = 'Other',\r\n GhanaCard = 'GhanaCard',\r\n SocialSecurity = 'SocialSecurity',\r\n Voter = 'Voter',\r\n IdCard = 'IdCard',\r\n}\r\n/** The status of an insurance policy. */\r\nexport enum InsurancePolicyStatus {\r\n Unknown = 'Unknown',\r\n Pending = 'Pending',\r\n Active = 'Active',\r\n Lapsed = 'Lapsed',\r\n Cancelled = 'Cancelled',\r\n Suspended = 'Suspended',\r\n Expired = 'Expired',\r\n}\r\nexport enum KybProvider {\r\n None = 'None',\r\n Manual = 'Manual',\r\n}\r\nexport enum KybStatus {\r\n NotRequired = 'NotRequired',\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n Rejected = 'Rejected',\r\n}\r\n/** The KYC service provider identifier. */\r\nexport enum KycProvider {\r\n None = 'None',\r\n SmileIdentity = 'SmileIdentity',\r\n GMoney = 'GMoney',\r\n NIA = 'NIA',\r\n Manual = 'Manual',\r\n}\r\n/** The KYC verification status. */\r\nexport enum KycStatus {\r\n None = 'None',\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n Rejected = 'Rejected',\r\n Review = 'Review',\r\n}\r\n/** The KYC verification type. */\r\nexport enum KycVerificationType {\r\n Identity = 'Identity',\r\n Liveness = 'Liveness',\r\n Facial = 'Facial',\r\n Other = 'Other',\r\n}\r\nexport enum Language {\r\n None = 'None',\r\n AAR = 'AAR',\r\n AFR = 'AFR',\r\n AGQ = 'AGQ',\r\n AKA = 'AKA',\r\n AMH = 'AMH',\r\n ARA = 'ARA',\r\n ARN = 'ARN',\r\n ASM = 'ASM',\r\n ASA = 'ASA',\r\n AST = 'AST',\r\n AZE = 'AZE',\r\n BAK = 'BAK',\r\n BAS = 'BAS',\r\n BEL = 'BEL',\r\n BEM = 'BEM',\r\n BEZ = 'BEZ',\r\n BUL = 'BUL',\r\n BIN = 'BIN',\r\n BAM = 'BAM',\r\n BEN = 'BEN',\r\n BOD = 'BOD',\r\n BRE = 'BRE',\r\n BRX = 'BRX',\r\n BOS = 'BOS',\r\n BYN = 'BYN',\r\n CAT = 'CAT',\r\n CHE = 'CHE',\r\n CGG = 'CGG',\r\n CHR = 'CHR',\r\n COS = 'COS',\r\n CES = 'CES',\r\n CHU = 'CHU',\r\n CYM = 'CYM',\r\n DAN = 'DAN',\r\n DAV = 'DAV',\r\n DEU = 'DEU',\r\n DJE = 'DJE',\r\n DSB = 'DSB',\r\n DUA = 'DUA',\r\n DIV = 'DIV',\r\n DYO = 'DYO',\r\n DZO = 'DZO',\r\n EBU = 'EBU',\r\n EWE = 'EWE',\r\n ELL = 'ELL',\r\n ENG = 'ENG',\r\n EPO = 'EPO',\r\n SPA = 'SPA',\r\n EST = 'EST',\r\n EUS = 'EUS',\r\n EWO = 'EWO',\r\n FAS = 'FAS',\r\n FUL = 'FUL',\r\n FIN = 'FIN',\r\n FIL = 'FIL',\r\n FAO = 'FAO',\r\n FRA = 'FRA',\r\n FUR = 'FUR',\r\n FRY = 'FRY',\r\n GLE = 'GLE',\r\n GLA = 'GLA',\r\n GLG = 'GLG',\r\n GRN = 'GRN',\r\n GSW = 'GSW',\r\n GUJ = 'GUJ',\r\n GUZ = 'GUZ',\r\n GLV = 'GLV',\r\n HAU = 'HAU',\r\n HAW = 'HAW',\r\n HEB = 'HEB',\r\n HIN = 'HIN',\r\n HRV = 'HRV',\r\n HSB = 'HSB',\r\n HUN = 'HUN',\r\n HYE = 'HYE',\r\n INA = 'INA',\r\n IBB = 'IBB',\r\n IND = 'IND',\r\n IBO = 'IBO',\r\n III = 'III',\r\n ISL = 'ISL',\r\n ITA = 'ITA',\r\n IKU = 'IKU',\r\n JPN = 'JPN',\r\n JGO = 'JGO',\r\n JMC = 'JMC',\r\n JAV = 'JAV',\r\n KAT = 'KAT',\r\n KAB = 'KAB',\r\n KAM = 'KAM',\r\n KDE = 'KDE',\r\n KEA = 'KEA',\r\n KHQ = 'KHQ',\r\n KIK = 'KIK',\r\n KAZ = 'KAZ',\r\n KKJ = 'KKJ',\r\n KAL = 'KAL',\r\n KLN = 'KLN',\r\n KHM = 'KHM',\r\n KAN = 'KAN',\r\n KOR = 'KOR',\r\n KOK = 'KOK',\r\n KAU = 'KAU',\r\n KAS = 'KAS',\r\n KSB = 'KSB',\r\n KSF = 'KSF',\r\n KSH = 'KSH',\r\n KUR = 'KUR',\r\n COR = 'COR',\r\n KIR = 'KIR',\r\n LAT = 'LAT',\r\n LAG = 'LAG',\r\n LTZ = 'LTZ',\r\n LUG = 'LUG',\r\n LKT = 'LKT',\r\n LIN = 'LIN',\r\n LAO = 'LAO',\r\n LRC = 'LRC',\r\n LIT = 'LIT',\r\n LUB = 'LUB',\r\n LUO = 'LUO',\r\n LUY = 'LUY',\r\n LAV = 'LAV',\r\n MAS = 'MAS',\r\n MER = 'MER',\r\n MFE = 'MFE',\r\n MLG = 'MLG',\r\n MGH = 'MGH',\r\n MGO = 'MGO',\r\n MRI = 'MRI',\r\n MKD = 'MKD',\r\n MAL = 'MAL',\r\n MON = 'MON',\r\n MNI = 'MNI',\r\n MOH = 'MOH',\r\n MAR = 'MAR',\r\n MSA = 'MSA',\r\n MLT = 'MLT',\r\n MUA = 'MUA',\r\n MYA = 'MYA',\r\n MZN = 'MZN',\r\n NAQ = 'NAQ',\r\n NDE = 'NDE',\r\n NDS = 'NDS',\r\n NEP = 'NEP',\r\n NLD = 'NLD',\r\n NMG = 'NMG',\r\n NNO = 'NNO',\r\n NNH = 'NNH',\r\n NOB = 'NOB',\r\n NQO = 'NQO',\r\n NBL = 'NBL',\r\n NSO = 'NSO',\r\n NUS = 'NUS',\r\n NYN = 'NYN',\r\n OCI = 'OCI',\r\n ORM = 'ORM',\r\n ORI = 'ORI',\r\n OSS = 'OSS',\r\n PAN = 'PAN',\r\n PAP = 'PAP',\r\n POL = 'POL',\r\n PRG = 'PRG',\r\n PRS = 'PRS',\r\n PUS = 'PUS',\r\n POR = 'POR',\r\n QUC = 'QUC',\r\n QUB = 'QUB',\r\n ROH = 'ROH',\r\n RUN = 'RUN',\r\n RON = 'RON',\r\n ROF = 'ROF',\r\n RUS = 'RUS',\r\n KIN = 'KIN',\r\n RWK = 'RWK',\r\n SAN = 'SAN',\r\n SAH = 'SAH',\r\n SAQ = 'SAQ',\r\n SBP = 'SBP',\r\n SND = 'SND',\r\n SME = 'SME',\r\n SEH = 'SEH',\r\n SES = 'SES',\r\n SAG = 'SAG',\r\n SHI = 'SHI',\r\n SIN = 'SIN',\r\n SLK = 'SLK',\r\n SLV = 'SLV',\r\n SMA = 'SMA',\r\n SMJ = 'SMJ',\r\n SMN = 'SMN',\r\n SMS = 'SMS',\r\n SNA = 'SNA',\r\n SOM = 'SOM',\r\n SQI = 'SQI',\r\n SRP = 'SRP',\r\n SSW = 'SSW',\r\n SSY = 'SSY',\r\n SOT = 'SOT',\r\n SWE = 'SWE',\r\n SWA = 'SWA',\r\n SYR = 'SYR',\r\n TAM = 'TAM',\r\n TEL = 'TEL',\r\n TEO = 'TEO',\r\n TGK = 'TGK',\r\n THA = 'THA',\r\n TIR = 'TIR',\r\n TIG = 'TIG',\r\n TUK = 'TUK',\r\n TSN = 'TSN',\r\n TON = 'TON',\r\n TUR = 'TUR',\r\n TSO = 'TSO',\r\n TAT = 'TAT',\r\n TWQ = 'TWQ',\r\n TZM = 'TZM',\r\n UIG = 'UIG',\r\n UKR = 'UKR',\r\n URD = 'URD',\r\n UZB = 'UZB',\r\n VAI = 'VAI',\r\n VEN = 'VEN',\r\n VIE = 'VIE',\r\n VOL = 'VOL',\r\n VUN = 'VUN',\r\n WAE = 'WAE',\r\n WAL = 'WAL',\r\n WOL = 'WOL',\r\n XHO = 'XHO',\r\n XOG = 'XOG',\r\n YAV = 'YAV',\r\n YID = 'YID',\r\n YOR = 'YOR',\r\n ZGH = 'ZGH',\r\n ZHO = 'ZHO',\r\n ZUL = 'ZUL',\r\n}\r\nexport class LanguageData {\r\n public isAvailable: boolean;\r\n public languageCode: string;\r\n public languageName: string;\r\n}\r\n/** The status of a consumer loan account. */\r\nexport enum LoanStatus {\r\n Unknown = 'Unknown',\r\n Active = 'Active',\r\n Settled = 'Settled',\r\n Complete = 'Complete',\r\n}\r\nexport enum MerchantCategory {\r\n None = 0,\r\n CommerceBankODP = 11,\r\n PostageTransactionCharge = 701,\r\n VeterinaryServices = 742,\r\n AgriculturalCooperatives = 763,\r\n LandscapingAndHorticulturalServices = 780,\r\n GeneralContractorsResidentialAndCommercial = 1520,\r\n HeatingPlumbingAndAirConditioningContractors = 1711,\r\n ElectricalContractors = 1731,\r\n MasonryStoneworkTileSettingPlasteringAndInsulationContractors = 1740,\r\n CarpentryContractors = 1750,\r\n RoofingSidingAndSheetMetalWorkContractors = 1761,\r\n AsphaltCementAndConcreteWorkContractors = 1771,\r\n SpecialTradeContractors = 1799,\r\n MiscellaneousPublishingAndPrinting = 2741,\r\n TypesettingPlateMakingAndRelatedServices = 2791,\r\n SpecialtyCleaningPolishingAndSanitationPreparations = 2842,\r\n UnitedAirlines = 3000,\r\n AmericanAirlines = 3001,\r\n PanAmerican = 3002,\r\n EuroflyAirlines = 3003,\r\n Dragonair = 3004,\r\n BritishAirways = 3005,\r\n JapanAirlines = 3006,\r\n AirFrance = 3007,\r\n Lufthansa = 3008,\r\n AirCanada = 3009,\r\n KLMRoyalDutchAirlines = 3010,\r\n Aeroflot = 3011,\r\n Qantas = 3012,\r\n Alitalia = 3013,\r\n SaudiArabianAirlines = 3014,\r\n SwissInternationalAirlines = 3015,\r\n SAS = 3016,\r\n SouthAfricanAirways = 3017,\r\n VarigAirBrazil = 3018,\r\n Germanwings = 3019,\r\n AirIndia = 3020,\r\n AirAlgerie = 3021,\r\n PALAir = 3022,\r\n Mexicana = 3023,\r\n PakistanInternational = 3024,\r\n AirNewZealand = 3025,\r\n EmiratesAirlines = 3026,\r\n UTAInterair = 3027,\r\n AirMalta = 3028,\r\n SNBrusselsAirlines = 3029,\r\n AerolineasArgentinas = 3030,\r\n OlympicAirways = 3031,\r\n ElAl = 3032,\r\n AnsettAirlines = 3033,\r\n EtihadAirways = 3034,\r\n TAPPortugal = 3035,\r\n VASPBrazil = 3036,\r\n Egyptair = 3037,\r\n KuwaitAirways = 3038,\r\n Avianca = 3039,\r\n GulfAirBahrain = 3040,\r\n BalkanBulgarianAirlines = 3041,\r\n Finnair = 3042,\r\n AerLingus = 3043,\r\n AirLanka = 3044,\r\n NigeriaAirways = 3045,\r\n CruzeiroDoSulBrazil = 3046,\r\n THYTurkey = 3047,\r\n Airmaro = 3048,\r\n TunisAir = 3049,\r\n Icelandair = 3050,\r\n AustrianAirlines = 3051,\r\n LANAirlinesLanair = 3052,\r\n AviacoSpain = 3053,\r\n LadecoChile = 3054,\r\n LABBolivia = 3055,\r\n JetAirways = 3056,\r\n EastWestAirlinesAustralia = 3057,\r\n Delta = 3058,\r\n DLAAirlinesRepublic = 3059,\r\n Northwest = 3060,\r\n Continental = 3061,\r\n WesternAirlinesHapagLloydExpress = 3062,\r\n USAir = 3063,\r\n AdriaAirways = 3064,\r\n Airinter = 3065,\r\n Southwest = 3066,\r\n VanguardAirlines = 3067,\r\n AirAstana = 3068,\r\n AirEurope = 3069,\r\n FlyDubai = 3070,\r\n AirBritishColumbia = 3071,\r\n CebuPac = 3072,\r\n AirCal = 3073,\r\n SingaporeAirlines = 3075,\r\n Aeromexico = 3076,\r\n ThaiAirways = 3077,\r\n ChinaAirlines = 3078,\r\n JetstarAirlines = 3079,\r\n SwoopInc = 3080,\r\n XiamenAirlines = 3081,\r\n KoreanAirlines = 3082,\r\n AirAfriqueAirAfriq = 3083,\r\n EVAAirways = 3084,\r\n MidwestExpress = 3085,\r\n CarnivalAirlines = 3086,\r\n MetroAirlines = 3087,\r\n CroatiaAirlines = 3088,\r\n Transaero = 3089,\r\n UniAirways = 3090,\r\n MidwayAirlines = 3092,\r\n ZambiaAirways = 3094,\r\n Wardair = 3095,\r\n AirZimbabwe = 3096,\r\n Spanair = 3097,\r\n AsiannaAirlines = 3098,\r\n CathayPacific = 3099,\r\n MalaysianAirlineSystem = 3100,\r\n UTA = 3101,\r\n Iberia = 3102,\r\n GarudaIndonesia = 3103,\r\n Piedmont = 3105,\r\n BraathensSAFENorway = 3106,\r\n WorldAirways = 3108,\r\n WingsAirways = 3110,\r\n BritishMidland = 3111,\r\n WindwardIsland = 3112,\r\n TowerAir = 3115,\r\n VenezolanaInternationalDeAviacion = 3117,\r\n ValleyAirlines = 3118,\r\n TAN = 3125,\r\n Talair = 3126,\r\n TACAInternational = 3127,\r\n SurinamAirways = 3129,\r\n SunWorldInternational = 3130,\r\n VLMAirlines = 3131,\r\n FrontierAirlines = 3132,\r\n SunbeltAirlines = 3133,\r\n SudanAirways = 3135,\r\n QatarAirways = 3136,\r\n SingletonAir = 3137,\r\n SimmonsAirlines = 3138,\r\n SeairAlaska = 3141,\r\n ScenicAirlines = 3143,\r\n VirginAtlantic = 3144,\r\n SanJuanAirlines = 3145,\r\n Luxair = 3146,\r\n AirLittoralSA = 3148,\r\n AirZaire = 3151,\r\n Princeville = 3154,\r\n GoFlyLtd = 3156,\r\n ProvincetownBostonAirways = 3159,\r\n AllNipponAirways = 3161,\r\n Nortonair = 3164,\r\n NewYorkHelicopter = 3165,\r\n AeroContinente = 3167,\r\n MountCook = 3170,\r\n CanadianAirlinesInternational = 3171,\r\n Nationair = 3172,\r\n JetblueAirlines = 3174,\r\n MiddleEastAir = 3175,\r\n MetroflightAirlines = 3176,\r\n AirtranAirways = 3177,\r\n MesaAir = 3178,\r\n Westjetair = 3180,\r\n Malev = 3181,\r\n LOTPoland = 3182,\r\n Omanair = 3183,\r\n LIAT = 3184,\r\n LAVVenezuela = 3185,\r\n LineasAereasParaguayas = 3186,\r\n LACSACostaRica = 3187,\r\n VirginExpress = 3188,\r\n JugoslavAir = 3190,\r\n IslandAirlines = 3191,\r\n IranAir = 3192,\r\n IndianAirlines = 3193,\r\n HolidayAirlines = 3195,\r\n HawaiianAir = 3196,\r\n HavasuAirlines = 3197,\r\n HarborAirlines = 3198,\r\n ServiciosAereosMilitares = 3199,\r\n GuyanaAirways = 3200,\r\n GoldenPacificAir = 3203,\r\n FreedomAir = 3204,\r\n ChinaEasternAirlines = 3206,\r\n EmpresaEcuatorinana = 3207,\r\n NorwegianAirShuttle = 3211,\r\n Dominicana = 3212,\r\n BraathensRegionalAirlines = 3213,\r\n DanAirServices = 3215,\r\n CumberlandAirlines = 3216,\r\n CSA = 3217,\r\n CrownAir = 3218,\r\n Copa = 3219,\r\n CompaniaFaucett = 3220,\r\n TransportesAerosMilitaresEcuatorianos = 3221,\r\n CommandAirways = 3222,\r\n Comair = 3223,\r\n SkywaysAir = 3226,\r\n CaymanAirways = 3228,\r\n SAETASociedadEcuatorianosDeTransportesAereos = 3229,\r\n SAHSAServicioAeroDeHonduras = 3231,\r\n CapitolAir = 3233,\r\n CaribbeanAirlines = 3234,\r\n BrockwayAir = 3235,\r\n AirArabia = 3236,\r\n BemidjiAviation = 3238,\r\n BarHarborAirlines = 3239,\r\n Bahamasair = 3240,\r\n AviatecaGuatemala = 3241,\r\n CaribbeanAirlinesCaribbean = 3242,\r\n AustrianAirService = 3243,\r\n EasyjetAir = 3245,\r\n Ryanair = 3246,\r\n GOLAir = 3247,\r\n TAMAir = 3248,\r\n AlohaAirlines = 3251,\r\n ALM = 3252,\r\n AmericaWest = 3253,\r\n USAirShuttle = 3254,\r\n AlaskaAirlines = 3256,\r\n AmericanTransAir = 3259,\r\n SpiritAirlines = 3260,\r\n AirChina = 3261,\r\n RenoAirInc = 3262,\r\n AeroServicioCaraboboASERCA = 3263,\r\n AirSeychelles = 3266,\r\n AirPanama = 3267,\r\n AirPacific = 3268,\r\n RicaHotels = 3273,\r\n InterNorHotels = 3274,\r\n AirNevada = 3275,\r\n AirMidwest = 3276,\r\n AirMadagascar = 3277,\r\n AirLA = 3279,\r\n AirJamaica = 3280,\r\n AirDjibouti = 3281,\r\n AirDjiboutiDuplicate = 3282,\r\n AeroVirginIslands = 3284,\r\n Aeroperu = 3285,\r\n AerolineasNicaraguensis = 3286,\r\n AeroCoachAviation = 3287,\r\n ArianaAfghan = 3291,\r\n CyprusAirways = 3292,\r\n Ecuatoriana = 3293,\r\n EthiopianAirlines = 3294,\r\n KenyaAirways = 3295,\r\n AirBerlin = 3296,\r\n Tarom = 3297,\r\n AirMauritius = 3298,\r\n WideroeFlyveselskap = 3299,\r\n AzulBrazilianAirlines = 3300,\r\n WizzAirlines = 3301,\r\n FlybeLtd = 3302,\r\n Tigerair = 3303,\r\n ChinaSouthern = 3308,\r\n AffiliatedAutoRental = 3351,\r\n AmericanInternational = 3352,\r\n BrooksRentACar = 3353,\r\n ActionAutoRental = 3354,\r\n SixtCarRental = 3355,\r\n HertzRentACar = 3357,\r\n PaylessCarRental = 3359,\r\n SnappyCarRental = 3360,\r\n AirwaysRentACar = 3361,\r\n AltraAutoRental = 3362,\r\n AgencyRentACar = 3364,\r\n BudgetRentACar = 3366,\r\n HolidayRentACar = 3368,\r\n RentAWreck = 3370,\r\n AccentRentACar = 3374,\r\n AjaxRentACar = 3376,\r\n TriangleRentACar = 3380,\r\n EuropCar = 3381,\r\n TropicalRentACar = 3385,\r\n ShowcaseRentalCars = 3386,\r\n AlamoRentACar = 3387,\r\n MerchantsRentACar = 3388,\r\n AvisRentACar = 3389,\r\n DollarRentACar = 3390,\r\n EuropeByCar = 3391,\r\n NationalCarRental = 3393,\r\n KemwellGroupRentACar = 3394,\r\n ThriftyRentACar = 3395,\r\n TildenRentACar = 3396,\r\n EconoCarRentACar = 3398,\r\n AmerexRentACar = 3399,\r\n AutoHostCarRentals = 3400,\r\n EnterpriseRentACar = 3405,\r\n GeneralRentACar = 3409,\r\n AtlantaRentACar = 3411,\r\n A1RentACar = 3412,\r\n GodfreyNatlRentACar = 3414,\r\n AlphaRentACar = 3419,\r\n AnsaIntlRentACar = 3420,\r\n AllstateRentACar = 3421,\r\n AvcarRentACar = 3423,\r\n AutomateRentACar = 3425,\r\n AvonRentACar = 3427,\r\n CareyRentACar = 3428,\r\n InsuranceRentACar = 3429,\r\n MajorRentACar = 3430,\r\n ReplacementRentACar = 3431,\r\n ReserveRentACar = 3432,\r\n UglyDucklingRentACar = 3433,\r\n USARentACar = 3434,\r\n ValueRentACar = 3435,\r\n AutohansaRentACar = 3436,\r\n CiteRentACar = 3437,\r\n InterentRentACar = 3438,\r\n MillevilleRentACar = 3439,\r\n ViaRouteRentACar = 3440,\r\n AdvantageRentACar = 3441,\r\n HolidayInns = 3501,\r\n BestWesternHotels = 3502,\r\n SheratonHotels = 3503,\r\n HiltonHotels = 3504,\r\n ForteHotels = 3505,\r\n GoldenTulipHotels = 3506,\r\n FriendshipInns = 3507,\r\n QualityInnsQualitySuites = 3508,\r\n MarriottHotels = 3509,\r\n DaysInnsDaystop = 3510,\r\n ArabellaHotels = 3511,\r\n InterContinentalHotels = 3512,\r\n WestinHotels = 3513,\r\n AmeriSuites = 3514,\r\n RodewayInns = 3515,\r\n LaQuintaMotorInns = 3516,\r\n AmericanaHotels = 3517,\r\n SolHotels = 3518,\r\n PullmanInternationalHotels = 3519,\r\n MeridienHotels = 3520,\r\n RoyalLahainaResorts = 3521,\r\n TokyoHotel = 3522,\r\n PeninsulaHotel = 3523,\r\n WelcomgroupHotels = 3524,\r\n DunfeyHotels = 3525,\r\n PrinceHotels = 3526,\r\n DowntownerPassportHotel = 3527,\r\n RedLionHotelsRedLionInns = 3528,\r\n CPHotels = 3529,\r\n RenaissanceHotels = 3530,\r\n KauaiCoconutBeachResort = 3531,\r\n RoyalKonaResort = 3532,\r\n HotelIbis = 3533,\r\n SouthernPacificHotels = 3534,\r\n HiltonInternational = 3535,\r\n AmfacHotels = 3536,\r\n ANAHotel = 3537,\r\n ConcordeHotels = 3538,\r\n SummerfieldSuitesHotel = 3539,\r\n IberotelHotels = 3540,\r\n HotelOkura = 3541,\r\n RoyalHotels = 3542,\r\n FourSeasonsHotels = 3543,\r\n CigaHotels = 3544,\r\n ShangriLaInternational = 3545,\r\n SierraSuitesHotels = 3546,\r\n BreakersResort = 3547,\r\n HotelsMelia = 3548,\r\n AubergeDesGouverneurs = 3549,\r\n Regal8Inns = 3550,\r\n MirageHotelAndCasino = 3551,\r\n CoastHotels = 3552,\r\n ParkInnsInternational = 3553,\r\n PinehurstResort = 3554,\r\n TreasureIslandHotelAndCasino = 3555,\r\n BartonCreekResort = 3556,\r\n ManhattanEastSuiteHotels = 3557,\r\n JollyHotels = 3558,\r\n CandlewoodSuitesThistleHotels = 3559,\r\n AladdinResortAndCasino = 3560,\r\n GoldenNugget = 3561,\r\n ComfortInns = 3562,\r\n JourneysEndMotels = 3563,\r\n SamsTownHotelAndCasino = 3564,\r\n RelaxInns = 3565,\r\n GardenPlaceHotel = 3566,\r\n SohoGrandHotel = 3567,\r\n LadbrokeHotels = 3568,\r\n TribecaGrandHotel = 3569,\r\n ForumHotels = 3570,\r\n GrandWaileaResort = 3571,\r\n MiyakoHotels = 3572,\r\n SandmanHotels = 3573,\r\n VentureInns = 3574,\r\n VagabondHotels = 3575,\r\n LaQuintaResort = 3576,\r\n MandarinOrientalHotel = 3577,\r\n FrankenmuthBavarian = 3578,\r\n HotelMercure = 3579,\r\n HotelDelCoronado = 3580,\r\n DeltaHotel = 3581,\r\n CaliforniaHotelAndCasino = 3582,\r\n SasHotels = 3583,\r\n PrincessHotelsInternational = 3584,\r\n HungarHotels = 3585,\r\n SokosHotels = 3586,\r\n DoralHotels = 3587,\r\n HelmsleyHotels = 3588,\r\n DoralGolfResort = 3589,\r\n FairmontHotels = 3590,\r\n SonestaHotels = 3591,\r\n OmniHotels = 3592,\r\n CunardHotels = 3593,\r\n ArizonaBiltmore = 3594,\r\n HospitalityInns = 3595,\r\n WynnLasVegas = 3596,\r\n RiversideResortAndCasino = 3597,\r\n RegentInternationalHotels = 3598,\r\n PannoniaHotels = 3599,\r\n SaddlebrookResort = 3600,\r\n TradeWindsResort = 3601,\r\n HudsonHotel = 3602,\r\n NoahsHotels = 3603,\r\n HiltonGardenResortInn = 3604,\r\n JurysDoyleHotelGroup = 3605,\r\n JeffersonHotel = 3606,\r\n FontainebleauResorts = 3607,\r\n GaylordOpryland = 3608,\r\n GaylordPalms = 3609,\r\n GaylordTexan = 3610,\r\n CMonInn = 3611,\r\n MovenpickHotels = 3612,\r\n MicrotelInnAndSuites = 3613,\r\n AmericInn = 3614,\r\n Travelodge = 3615,\r\n HermitageHotel = 3616,\r\n AmericasBestValueInn = 3617,\r\n GreatWolf = 3618,\r\n Aloft = 3619,\r\n BinionsHorseshoeClub = 3620,\r\n ExtendedStay = 3621,\r\n MerlinHotels = 3622,\r\n DorintHotels = 3623,\r\n LadyLuckHotelAndCasino = 3624,\r\n HotelUniversale = 3625,\r\n StudioPlus = 3626,\r\n ExtendedStayAmerica = 3627,\r\n ExcaliburHotelAndCasino = 3628,\r\n DanHotels = 3629,\r\n ExtendedStayDeluxe = 3630,\r\n SleepInns = 3631,\r\n Phoenician = 3632,\r\n RankHotels = 3633,\r\n Swissotel = 3634,\r\n ResoHotels = 3635,\r\n SarovaHotels = 3636,\r\n RamadaInnsRamadaLimited = 3637,\r\n HowardJohnson = 3638,\r\n MountCharlotteThistle = 3639,\r\n HyattHotels = 3640,\r\n SofitelHotels = 3641,\r\n NovotelHotels = 3642,\r\n SteigenbergerHotels = 3643,\r\n EconoLodges = 3644,\r\n QueensMoatHouses = 3645,\r\n SwallowHotels = 3646,\r\n HusaHotels = 3647,\r\n DeVereHotels = 3648,\r\n RadissonHotels = 3649,\r\n RedRoofInns = 3650,\r\n ImperialLondonHotel = 3651,\r\n EmbassyHotels = 3652,\r\n PentaHotels = 3653,\r\n LoewsHotels = 3654,\r\n ScandicHotels = 3655,\r\n SaraHotels = 3656,\r\n OberoiHotels = 3657,\r\n NewOtaniHotels = 3658,\r\n TajHotelsInternational = 3659,\r\n KnightsInns = 3660,\r\n MetropoleHotels = 3661,\r\n CircusCircusHotelAndCasino = 3662,\r\n HotelesElPresidente = 3663,\r\n FlagInn = 3664,\r\n HamptonInns = 3665,\r\n StakisHotels = 3666,\r\n LuxorHotelAndCasino = 3667,\r\n MaritimHotels = 3668,\r\n EldoradoHotelAndCasino = 3669,\r\n ArcadeHotels = 3670,\r\n ArctiaHotels = 3671,\r\n CampanileHotels = 3672,\r\n IbuszHotels = 3673,\r\n RantasipiHotels = 3674,\r\n InterhotelCedok = 3675,\r\n MonteCarloHotelAndCasino = 3676,\r\n ClimatDeFranceHotels = 3677,\r\n CumulusHotels = 3678,\r\n SilverLegacyHotelAndCasino = 3679,\r\n HoteisOthan = 3680,\r\n AdamsMarkHotels = 3681,\r\n SaharaHotelAndCasino = 3682,\r\n BradburySuites = 3683,\r\n BudgetHostInns = 3684,\r\n BudgetelHotels = 3685,\r\n SusseChalet = 3686,\r\n ClarionHotels = 3687,\r\n CompriHotels = 3688,\r\n ConsortHotels = 3689,\r\n CourtyardByMarriott = 3690,\r\n DillonInns = 3691,\r\n DoubletreeHotels = 3692,\r\n DruryInns = 3693,\r\n EconomyInnsOfAmerica = 3694,\r\n EmbassySuites = 3695,\r\n ExelInns = 3696,\r\n FairfieldHotels = 3697,\r\n HarleyHotels = 3698,\r\n MidwayMotorLodge = 3699,\r\n Motel6 = 3700,\r\n LaMansionDelRio = 3701,\r\n RegistryHotels = 3702,\r\n ResidenceInns = 3703,\r\n RoyceHotels = 3704,\r\n SandmanInns = 3705,\r\n ShiloInns = 3706,\r\n ShoneysInns = 3707,\r\n VirginRiverHotelAndCasino = 3708,\r\n Super8Motels = 3709,\r\n TheRitzCarltonHotels = 3710,\r\n FlagInnsAustralia = 3711,\r\n BuffaloBillsHotelAndCasino = 3712,\r\n QualityPacificHotel = 3713,\r\n FourSeasonsHotelAustralia = 3714,\r\n FairfieldInn = 3715,\r\n CarltonHotels = 3716,\r\n CityLodgeHotels = 3717,\r\n KarosHotels = 3718,\r\n ProteaHotels = 3719,\r\n SouthernSunHotels = 3720,\r\n HiltonConrad = 3721,\r\n WyndhamHotelResorts = 3722,\r\n RicaHotelsDuplicate = 3723,\r\n InterNorHotelsDuplicate = 3724,\r\n SeapinesPlantation = 3725,\r\n RioSuites = 3726,\r\n BroadmoorHotel = 3727,\r\n BallysHotelAndCasino = 3728,\r\n JohnAscuagasNugget = 3729,\r\n MGMGrandHotel = 3730,\r\n HarrahsHotelsAndCasinos = 3731,\r\n OprylandHotel = 3732,\r\n BocaRatonResort = 3733,\r\n HarveyBristolHotel = 3734,\r\n MastersEconomyInns = 3735,\r\n ColoradoBelleEdgewaterResort = 3736,\r\n RivieraHotelCasino = 3737,\r\n TropicanaResortCasino = 3738,\r\n WoodsideHotels = 3739,\r\n MarriottTownplaceSuites = 3740,\r\n MillenniumHotels = 3741,\r\n ClubMed = 3742,\r\n BiltmoreHotelSuites = 3743,\r\n CarefreeResorts = 3744,\r\n StRegisHotel = 3745,\r\n TheEliotHotel = 3746,\r\n ClubCorpClubResorts = 3747,\r\n WellesleyInns = 3748,\r\n TheBeverlyHillsHotel = 3749,\r\n CrownePlazaHotel = 3750,\r\n HomewoodSuites = 3751,\r\n PeabodyHotels = 3752,\r\n GreenbrierResorts = 3753,\r\n AmeliaIslandPlantation = 3754,\r\n TheHomestead = 3755,\r\n SouthSeasResorts = 3756,\r\n CanyonRanch = 3757,\r\n KahalaMandarinOrientalHotel = 3758,\r\n OrchidAtMaunaLani = 3759,\r\n HalekulaniHotelWaikikiParc = 3760,\r\n PrimadonnaHotelAndCasino = 3761,\r\n WhiskeyPetesHotelAndCasino = 3762,\r\n ChateauElanWineryAndResort = 3763,\r\n BeauRivageHotelAndCasino = 3764,\r\n Bellagio = 3765,\r\n FremontHotelAndCasino = 3766,\r\n MainStreetStationHotelAndCasino = 3767,\r\n SilverStarHotelAndCasino = 3768,\r\n StratosphereHotelAndCasino = 3769,\r\n SpringhillSuites = 3770,\r\n CaesarsHotelAndCasino = 3771,\r\n NemacolinWoodlands = 3772,\r\n VenetianResortHotelAndCasino = 3773,\r\n NewYorkNewYorkHotelCasino = 3774,\r\n SandsResort = 3775,\r\n NeveleGrandeResortAndCountryClub = 3776,\r\n MandalayBayResort = 3777,\r\n FourPointsHotels = 3778,\r\n WHotels = 3779,\r\n DisneyResorts = 3780,\r\n PatriciaGrandResortHotel = 3781,\r\n RosenHotelsResorts = 3782,\r\n TownAndCountryResort = 3783,\r\n FirstHospitalityHotels = 3784,\r\n OutriggerHotelsAndResorts = 3785,\r\n OhanaHotelsOfHawaii = 3786,\r\n CaribeRoyaleResortSuitesVillas = 3787,\r\n AlaMoanaHotel = 3788,\r\n SmugglersNotchResort = 3789,\r\n RafflesHotel = 3790,\r\n StaybridgeSuites = 3791,\r\n ClaridgeCasinoHotel = 3792,\r\n FlamingoHotels = 3793,\r\n GrandCasinoHotel = 3794,\r\n ParisLasVegasHotel = 3795,\r\n PeppermillHotelCasino = 3796,\r\n AtlanticCityHilton = 3797,\r\n EmbassyVacationResort = 3798,\r\n HaleKoaResort = 3799,\r\n HomesteadSuites = 3800,\r\n WildernessHotelAndResort = 3801,\r\n ThePalaceHotel = 3802,\r\n TheWigwamGolfResortAndSpa = 3803,\r\n TheDiplomatCountryClubAndSpa = 3804,\r\n TheAtlantic = 3805,\r\n PrincevilleResort = 3806,\r\n Element = 3807,\r\n LXRLuxuryResorts = 3808,\r\n SettleInn = 3809,\r\n LaCostaResort = 3810,\r\n PremierTravelInn = 3811,\r\n HyattPlace = 3812,\r\n HotelIndigo = 3813,\r\n TheRooseveltHotelNY = 3814,\r\n HolidayInnNickelodeon = 3815,\r\n Home2Suites = 3816,\r\n Affinia = 3817,\r\n MainStaySuites = 3818,\r\n OxfordSuites = 3819,\r\n JumeirahEssexHotel = 3820,\r\n CaribeRoyale = 3821,\r\n Crossland = 3822,\r\n GrandSierraResort = 3823,\r\n Aria = 3824,\r\n Vdara = 3825,\r\n Autograph = 3826,\r\n GaltHouse = 3827,\r\n CosmopolitanOfLasVegas = 3828,\r\n CountryInnByCarlson = 3829,\r\n ParkPlazaHotel = 3830,\r\n Waldorf = 3831,\r\n CanopyHotels = 3833,\r\n BaymontInnAndSuites = 3834,\r\n DolceHotelsAndResorts = 3835,\r\n HawthornSuitesByWyndham = 3836,\r\n HoshinoResorts = 3837,\r\n KimptonHotels = 3838,\r\n KyoritsuHotels = 3839,\r\n FreightRailways = 4011,\r\n LocalPassengerTransportation = 4111,\r\n PassengerRailways = 4112,\r\n AmbulanceServices = 4119,\r\n TaxicabsAndLimousines = 4121,\r\n BusLines = 4131,\r\n MotorFreightCarriersAndTrucking = 4214,\r\n CourierServices = 4215,\r\n PublicWarehousingAndStorage = 4225,\r\n SteamshipAndCruiseLines = 4411,\r\n BoatRentalsAndLeasing = 4457,\r\n MarinasMarineServiceAndSupplies = 4468,\r\n AirlinesAndAirCarriers = 4511,\r\n AirportsFlyingFieldsAndAirportTerminals = 4582,\r\n TravelAgenciesAndTourOperators = 4722,\r\n PackageTourOperatorsGermanyOnly = 4723,\r\n TransportationTravelRelatedArrangement = 4761,\r\n TollAndBridgeFees = 4784,\r\n TransportationServices = 4789,\r\n TelecommunicationEquipmentAndTelephoneSales = 4812,\r\n KeyEntryTelecomMerchants = 4813,\r\n TelecommunicationServices = 4814,\r\n MonthlySummaryTelephoneCharges = 4815,\r\n ComputerNetworkAndInformationServices = 4816,\r\n TelegraphServices = 4821,\r\n MoneyOrdersWireTransfer = 4829,\r\n CableServices = 4899,\r\n ElectricGasSanitaryAndWaterUtilities = 4900,\r\n MotorVehicleSuppliesAndNewParts = 5013,\r\n OfficeAndCommercialFurniture = 5021,\r\n ConstructionMaterials = 5039,\r\n OfficePhotographicPhotocopyAndMicrofilmEquipment = 5044,\r\n ComputersComputerPeripheralEquipmentSoftware = 5045,\r\n CommercialEquipment = 5046,\r\n MedicalDentalOphthalmicHospitalEquipmentAndSupplies = 5047,\r\n MetalServiceCentersAndOffices = 5051,\r\n ElectricalPartsAndEquipment = 5065,\r\n HardwareEquipmentAndSupplies = 5072,\r\n PlumbingAndHeatingEquipmentAndSupplies = 5074,\r\n IndustrialSupplies = 5085,\r\n PreciousStonesAndMetalsWatchesAndJewelry = 5094,\r\n DurableGoods = 5099,\r\n StationeryOfficeSuppliesPrintingAndWritingPaper = 5111,\r\n DrugsDrugProprietorsAndDruggistSundries = 5122,\r\n PieceGoodsNotionsAndOtherDryGoods = 5131,\r\n MensWomensAndChildrensUniformsAndCommercialClothing = 5137,\r\n CommercialFootwear = 5139,\r\n ChemicalsAndAlliedProducts = 5169,\r\n PetroleumAndPetroleumProducts = 5172,\r\n BooksPeriodicalsAndNewspapers = 5192,\r\n FloristsSuppliesNurseryStockAndFlowers = 5193,\r\n PaintsVarnishesAndSupplies = 5198,\r\n NonDurableGoods = 5199,\r\n HomeSupplyWarehouseStores = 5200,\r\n LumberAndBuildingMaterialsStores = 5211,\r\n GlassStoresPaintAndWallpaperStoresWallpaperStores = 5231,\r\n HardwareStores = 5251,\r\n NurseriesLawnAndGardenSupplyStore = 5261,\r\n OnlineMarketplaces = 5262,\r\n MobileHomeDealers = 5271,\r\n WarehouseClubGas = 5299,\r\n WholesaleClubs = 5300,\r\n DutyFreeStores = 5309,\r\n DiscountStores = 5310,\r\n DepartmentStores = 5311,\r\n VarietyStores = 5331,\r\n GeneralMerchandise = 5399,\r\n GroceryStoresSupermarkets = 5411,\r\n FreezerAndLockerMeatProvisioners = 5422,\r\n CandyStoresConfectioneryStoresNutStores = 5441,\r\n DairyProductsStores = 5451,\r\n Bakeries = 5462,\r\n FoodStoresConvenienceStoresAndSpecialtyMarkets = 5499,\r\n CarAndTruckDealersNewAndUsedSalesServiceRepairsPartsAndLeasing = 5511,\r\n AutomobileAndTruckDealersUsedOnly = 5521,\r\n AutomobileSupplyStoresOrHomeSupplyStores = 5531,\r\n AutomotiveTireStores = 5532,\r\n AutomotivePartsAccessoriesStores = 5533,\r\n GasServiceStationsWithOrWithoutAncillaryServices = 5541,\r\n AutomatedFuelDispensers = 5542,\r\n BoatDealers = 5551,\r\n ElectricVehicleCharging = 5552,\r\n RecreationalAndUtilityTrailersCampDealers = 5561,\r\n MotorcycleDealers = 5571,\r\n MotorHomeDealers = 5592,\r\n SnowmobileDealers = 5598,\r\n MiscellaneousAutomotiveAircraftAndFarmEquipmentDealers = 5599,\r\n MensAndBoysClothingAndAccessoriesStores = 5611,\r\n WomensReadyToWearStores = 5621,\r\n WomensAccessoryAndSpecialtyShops = 5631,\r\n ChildrensAndInfantsWearStores = 5641,\r\n FamilyClothingStores = 5651,\r\n SportsApparelRidingApparelStores = 5655,\r\n ShoeStores = 5661,\r\n FurriersAndFurShops = 5681,\r\n MensAndWomensClothingStores = 5691,\r\n TailorsSeamstressMendingAndAlterations = 5697,\r\n WigAndToupeeStores = 5698,\r\n MiscellaneousApparelAndAccessoryShops = 5699,\r\n FurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances = 5712,\r\n FloorCoveringStores = 5713,\r\n DraperyWindowCoveringAndUpholsteryStores = 5714,\r\n AlcoholicBeverageWholesalers = 5715,\r\n FireplaceAndFireplaceScreensAndAccessoriesStores = 5718,\r\n MiscellaneousHomeFurnishingSpecialtyStores = 5719,\r\n HouseholdApplianceStores = 5722,\r\n ElectronicStores = 5732,\r\n MusicStoresMusicalInstrumentsPianoSheetMusic = 5733,\r\n ComputerSoftwareStores = 5734,\r\n RecordStores = 5735,\r\n Caterers = 5811,\r\n EatingPlacesAndRestaurants = 5812,\r\n DrinkingPlacesAlcoholicBeveragesBarsTavernsCocktailLoungesNightclubsAndDiscotheques = 5813,\r\n FastFoodRestaurants = 5814,\r\n DigitalGoodsBooksMoviesMusic = 5815,\r\n DigitalGoodsGames = 5816,\r\n DigitalGoodsApplicationsExcludingGames = 5817,\r\n DigitalGoodsLargeAndMultiCategory = 5818,\r\n DrugStoresAndPharmacies = 5912,\r\n PackageStoresBeerWineAndLiquor = 5921,\r\n UsedMerchandiseAndSecondhandStores = 5931,\r\n AntiqueShopsSalesRepairsAndRestorationServices = 5932,\r\n PawnShops = 5933,\r\n WreckingAndSalvageYards = 5935,\r\n AntiqueReproductionStores = 5937,\r\n BicycleShopsSalesAndService = 5940,\r\n SportingGoodsStores = 5941,\r\n BookStores = 5942,\r\n StationeryOfficeAndSchoolSupplyStores = 5943,\r\n WatchClockJewelryAndSilverwareStores = 5944,\r\n HobbyToyAndGameShops = 5945,\r\n CameraAndPhotographicSupplyStores = 5946,\r\n CardShopsGiftNoveltyAndSouvenirShops = 5947,\r\n LeatherFoodsStores = 5948,\r\n SewingNeedleFabricAndPriceGoodsStores = 5949,\r\n GlasswareCrystalStores = 5950,\r\n DirectMarketingInsuranceService = 5960,\r\n MailOrderHousesIncludingCatalogOrderStoresBookRecordClub = 5961,\r\n DirectMarketingTravelRelatedArrangementsServices = 5962,\r\n DoorToDoorSales = 5963,\r\n DirectMarketingCatalogMerchant = 5964,\r\n DirectMarketingCatalogAndCatalogAndRetailMerchantDirectMarketingOutboundTelemarketingMerchant = 5965,\r\n DirectMarketingOutboundTelemarketingMerchant = 5966,\r\n DirectMarketingInboundTeleServicesMerchant = 5967,\r\n DirectMarketingContinuitySubscriptionMerchant = 5968,\r\n DirectMarketing = 5969,\r\n ArtistsSupplyAndCraftShops = 5970,\r\n ArtDealersAndGalleries = 5971,\r\n StampAndCoinStoresPhilatelicAndNumismaticSupplies = 5972,\r\n ReligiousGoodsStores = 5973,\r\n RubberStampStoresReservedForNationalUse = 5974,\r\n HearingAidsSalesServiceAndSupplyStores = 5975,\r\n OrthopedicGoodsProstheticDevices = 5976,\r\n CosmeticStores = 5977,\r\n TypewriterStoresSalesRentalService = 5978,\r\n FuelFuelOilWoodCoalLiquefiedPetroleum = 5983,\r\n Florists = 5992,\r\n CigarStoresAndStands = 5993,\r\n NewsDealersAndNewsStands = 5994,\r\n PetShopsPetFoodsAndSuppliesStores = 5995,\r\n SwimmingPoolsSalesServiceAndSupplies = 5996,\r\n ElectricRazorStoresSalesAndService = 5997,\r\n TentAndAwningShops = 5998,\r\n MiscellaneousAndSpecialtyRetailStores = 5999,\r\n FinancialInstitutionsManualCashDisbursements = 6010,\r\n FinancialInstitutionsAutomatedCashDisbursements = 6011,\r\n FinancialInstitutionsMerchandiseAndServices = 6012,\r\n QuasiCashMemberFinancialInstitutions = 6050,\r\n NonFinancialInstitutionsForeignCurrencyMoneyOrdersAndTravelersCheques = 6051,\r\n SecurityBrokersDealers = 6211,\r\n InsuranceSalesUnderwriting = 6300,\r\n InsurancePremiums = 6381,\r\n Insurance = 6399,\r\n RealEstateAgentsAndManagersRentals = 6513,\r\n RemoteStoredValueLoadMemberFinancialInstitution = 6529,\r\n RemoteStoredValueLoad = 6530,\r\n PaymentServiceProviderMoneyTransfer = 6531,\r\n PaymentTransactionMemberFinancialInstitution = 6532,\r\n PaymentTransactionMerchant = 6533,\r\n MoneyTransferMemberFinancialInstitution = 6534,\r\n ValuePurchaseMemberFinancialInstitution = 6535,\r\n MoneySendIntracountry = 6536,\r\n MoneySendIntercountry = 6537,\r\n MoneySendFundingTransaction = 6538,\r\n POIFundingTransaction = 6540,\r\n MastercardInitiatedRebateRewards = 6555,\r\n Overpayments = 6611,\r\n SavingsBonds = 6760,\r\n LodgingHotelsMotelsResortsCentralReservationServices = 7011,\r\n Timeshares = 7012,\r\n SportingAndRecreationalCamps = 7032,\r\n TrailerParksAndCampGrounds = 7033,\r\n LaundryCleaningAndGarmentServices = 7210,\r\n DiaperServicesOrLaundromats = 7211,\r\n DryCleaners = 7216,\r\n CarpetAndUpholsteryCleaning = 7217,\r\n PhotographicStudios = 7221,\r\n BarberAndBeautyShops = 7230,\r\n ShopRepairShopsAndShoeShineParlorsAndHatCleaningShops = 7251,\r\n FuneralServiceAndCrematories = 7261,\r\n EscortServices = 7272,\r\n DatingAndEscortServices = 7273,\r\n TaxPreparationService = 7276,\r\n CounselingServiceDebtMarriagePersonal = 7277,\r\n BuyingShoppingServicesAndClubs = 7278,\r\n HospitalPatientPersonalFundsWithdrawal = 7280,\r\n BabysittingServices = 7295,\r\n ClothingRentalCostumesFormalWearUniforms = 7296,\r\n MassageParlors = 7297,\r\n HealthAndBeautyShops = 7298,\r\n MiscellaneousPersonalServices = 7299,\r\n AdvertisingServices = 7311,\r\n ConsumerCreditReportingAgencies = 7321,\r\n DebtCollectionAgencies = 7322,\r\n BlueprintingAndPhotocopyingServices = 7332,\r\n CommercialPhotographyArtAndGraphics = 7333,\r\n QuickCopyReproductionAndBlueprintingServices = 7338,\r\n StenographicAndSecretarialSupportServices = 7339,\r\n WindowCleaningServices = 7341,\r\n ExterminatingAndDisinfectingServices = 7342,\r\n CleaningAndMaintenanceJanitorialServices = 7349,\r\n EmploymentAgenciesTemporaryHelpServices = 7361,\r\n ComputerProgrammingIntegratedSystemsDesignAndDataProcessingServices = 7372,\r\n InformationRetrievalServices = 7375,\r\n ComputerMaintenanceAndRepairServices = 7379,\r\n ManagementConsultingAndPublicRelationsServices = 7392,\r\n ProtectiveAndSecurityServicesIncludingArmoredCarsAndGuardDogs = 7393,\r\n EquipmentRentalAndLeasingServicesToolRentalFurnitureRentalAndApplianceRental = 7394,\r\n PhotofinishingLaboratoriesPhotoDeveloping = 7395,\r\n BusinessServices = 7399,\r\n TruckStopTransactions = 7511,\r\n CarRentalCompanies = 7512,\r\n TruckAndUtilityTrailerRentals = 7513,\r\n MotorHomeAndRecreationalVehicleRentals = 7519,\r\n AutomobileParkingLotsAndGarages = 7523,\r\n ExpressPaymentServicesParkingGarage = 7524,\r\n AutomotiveBodyRepairShops = 7531,\r\n TireRetreadingAndRepairShops = 7534,\r\n PaintShopsAutomotive = 7535,\r\n AutomotiveServiceShops = 7538,\r\n CarWashes = 7542,\r\n TowingServices = 7549,\r\n ElectronicsRepairShops = 7622,\r\n AirConditioningAndRefrigerationRepairShops = 7623,\r\n ElectricalAndSmallApplianceRepairShops = 7629,\r\n WatchClockAndJewelryRepair = 7631,\r\n FurnitureFurnitureRepairAndFurnitureRefinishing = 7641,\r\n WeldingServices = 7692,\r\n RepairShopsAndRelatedServicesMiscellaneous = 7699,\r\n GovernmentOwnedLotteriesUSA = 7800,\r\n InternetGamblingUSA = 7801,\r\n GovernmentLicensedHorseAndDogRacingUSA = 7802,\r\n MotionPicturesAndVideoTapeProductionAndDistribution = 7829,\r\n MotionPictureTheaters = 7832,\r\n ExpressPaymentServicesMotionPicture = 7833,\r\n VideoTapeRentalStores = 7841,\r\n DanceHallsStudiosAndSchools = 7911,\r\n TheatricalProducersExceptMotionPicturesTicketAgencies = 7922,\r\n BandsOrchestrasAndMiscellaneousEntertainers = 7929,\r\n BilliardAndPoolEstablishments = 7932,\r\n BowlingAlleys = 7933,\r\n CommercialSportsAthleticFieldsProfessionalSportClubsAndSportPromoters = 7941,\r\n TouristAttractionsAndExhibits = 7991,\r\n GolfCoursesPublic = 7992,\r\n VideoAmusementGameSupplies = 7993,\r\n VideoGameArcadesEstablishments = 7994,\r\n BettingIncludingLotteryTicketsCasinoGamingChipsOfftrackBettingAndWagers = 7995,\r\n AmusementParksCarnivalsCircusesFortuneTellers = 7996,\r\n MembershipClubsSportsRecreationAthleticCountryClubsAndPrivateGolfCourses = 7997,\r\n AquariumsSeaAquariumsDolphinariumsZoos = 7998,\r\n RecreationServices = 7999,\r\n DoctorsAndPhysicians = 8011,\r\n DentistsOrOrthodontists = 8021,\r\n Osteopaths = 8031,\r\n Chiropractors = 8041,\r\n OptometristsAndOphthalmologists = 8042,\r\n OpticiansOpticiansGoodsAndEyeglasses = 8043,\r\n EyeglassesStoresOrOpticalGoods = 8044,\r\n PodiatristsAndChiropodists = 8049,\r\n NursingAndPersonalCareFacilities = 8050,\r\n Hospitals = 8062,\r\n MedicalAndDentalLaboratories = 8071,\r\n MedicalServicesAndHealthPractitioners = 8099,\r\n LegalServicesAndAttorneys = 8111,\r\n ElementaryAndSecondarySchools = 8211,\r\n CollegesJuniorCollegesUniversitiesAndProfessionalSchools = 8220,\r\n CorrespondenceSchools = 8241,\r\n BusinessAndSecretarialSchools = 8244,\r\n VocationalSchoolsAndTradeSchools = 8249,\r\n SchoolsAndEducationalServices = 8299,\r\n ChildCareServices = 8351,\r\n CharitableAndSocialServiceOrganizations = 8398,\r\n CivicFraternalAndSocialAssociations = 8641,\r\n PoliticalOrganizations = 8651,\r\n ReligiousOrganizations = 8661,\r\n AutomobileAssociations = 8675,\r\n MembershipOrganizations = 8699,\r\n TestingLaboratoriesNonMedical = 8734,\r\n ArchitecturalEngineeringAndSurveyingServices = 8911,\r\n AccountingAuditingAndBookkeepingServices = 8931,\r\n ProfessionalServicesNotElsewhereDefined = 8999,\r\n CourtCostsIncludingAlimonyAndChildSupport = 9211,\r\n Fines = 9222,\r\n BailAndBondPayments = 9223,\r\n TaxPayments = 9311,\r\n GovernmentServices = 9399,\r\n IPurchasingPilot = 9401,\r\n PostalServicesGovernmentOnly = 9402,\r\n IntraGovernmentTransactions = 9405,\r\n GovernmentLoanPayments = 9411,\r\n AutomatedReferralService = 9700,\r\n VisaCredentialServices = 9701,\r\n GCASEmergencyServices = 9702,\r\n UKSupermarketsElectronicHotFile = 9751,\r\n UKPetrolStationsElectronicHotFile = 9752,\r\n GamblingHorseDogRacingStLottery = 9754,\r\n IntraCompanyPurchases = 9950,\r\n ClientDefinedMCC = 9999,\r\n}\r\nexport enum MerchantFileType {\r\n Unspecified = 'Unspecified',\r\n AgentAgreement = 'AgentAgreement',\r\n MerchantAgreement = 'MerchantAgreement',\r\n BusinessCertificate = 'BusinessCertificate',\r\n ProofOfAddress = 'ProofOfAddress',\r\n ProofOfBankAccount = 'ProofOfBankAccount',\r\n IdentityDocumentFront = 'IdentityDocumentFront',\r\n IdentityDocumentBack = 'IdentityDocumentBack',\r\n Signature = 'Signature',\r\n LogoImage = 'LogoImage',\r\n StorefrontImage = 'StorefrontImage',\r\n PrimaryImage = 'PrimaryImage',\r\n GhanaCardId = 'GhanaCardId',\r\n RegisteredConstitutionOfTheCompany = 'RegisteredConstitutionOfTheCompany',\r\n CertificateOfIncorporation = 'CertificateOfIncorporation',\r\n CertifiedTrueCopyOfForm3A = 'CertifiedTrueCopyOfForm3A',\r\n MonthlyStatement = 'MonthlyStatement',\r\n}\r\nexport enum MobileWalletOperator {\r\n None = 'None',\r\n MTN = 'MTN',\r\n VDF = 'VDF',\r\n ATL = 'ATL',\r\n TGO = 'TGO',\r\n ATG = 'ATG',\r\n GMY = 'GMY',\r\n ZPY = 'ZPY',\r\n GHP = 'GHP',\r\n TCG = 'TCG',\r\n VDC = 'VDC',\r\n CLC = 'CLC',\r\n TKM = 'TKM',\r\n}\r\nexport class MobileWalletOperatorData {\r\n public isAvailable: boolean;\r\n public operatorCode: string;\r\n public operatorName: string;\r\n}\r\nexport enum Month {\r\n JAN = 1,\r\n FEB = 2,\r\n MAR = 3,\r\n APR = 4,\r\n MAY = 5,\r\n JUN = 6,\r\n JUL = 7,\r\n AUG = 8,\r\n SEP = 9,\r\n OCT = 10,\r\n NOV = 11,\r\n DEC = 12,\r\n}\r\nexport enum ProductType {\r\n Airtime = 'Airtime',\r\n Internet = 'Internet',\r\n Television = 'Television',\r\n Utilities = 'Utilities',\r\n Churches = 'Churches',\r\n Education = 'Education',\r\n Medical = 'Medical',\r\n Transport = 'Transport',\r\n Finance = 'Finance',\r\n Insurance = 'Insurance',\r\n Loans = 'Loans',\r\n Pensions = 'Pensions',\r\n General = 'General',\r\n Other = 'Other',\r\n DataBundle = 'DataBundle',\r\n VoiceBundle = 'VoiceBundle',\r\n Charity = 'Charity',\r\n Rent = 'Rent',\r\n MobileMoneyTransfer = 'MobileMoneyTransfer',\r\n PostPaidBills = 'PostPaidBills',\r\n SmsBundle = 'SmsBundle',\r\n Fuel = 'Fuel',\r\n Oil = 'Oil',\r\n Gas = 'Gas',\r\n}\r\nexport enum QrCodeType {\r\n NONE = 'NONE',\r\n V2QR = 'V2QR',\r\n GHQR = 'GHQR',\r\n NIBSSQR = 'NIBSSQR',\r\n}\r\nexport enum RepeatInterval {\r\n Weekly = 'Weekly',\r\n Monthly = 'Monthly',\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport { Country, CurrencyData, CountryData, LanguageData, MobileWalletOperatorData, BankData, IdAndDescription } from './types';\r\nimport { Address } from '../common/types';\r\nimport { ApiError } from '../apiError';\r\n\r\nconst baseEndpoint = '/v1/lookup';\r\n\r\nexport class Lookups extends BaseApi {\r\n private readonly cardIssuerCountryCache = new Map<string, CountryData>();\r\n private readonly addressLocationCache = new Map<string, Address>();\r\n private readonly digitalAddressCache = new Map<string, Address>();\r\n private readonly bankCache = new Map<Country, BankData[]>();\r\n private currencyCache: CurrencyData[];\r\n private countryCache: CountryData[];\r\n private languageCache: LanguageData[];\r\n private allCurrencyCache: CurrencyData[];\r\n private allCountryCache: CountryData[];\r\n private allLanguageCache: LanguageData[];\r\n private mobileWalletOperatorCache: MobileWalletOperatorData[];\r\n private productTypeCache: IdAndDescription[];\r\n private merchantCategoryCache: IdAndDescription[];\r\n\r\n async getProductTypes(): Promise<IdAndDescription[]> {\r\n if (!this.productTypeCache) {\r\n this.productTypeCache = await this.request<IdAndDescription[]>(`${baseEndpoint}/product-type`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.productTypeCache || []);\r\n }\r\n\r\n async getMerchantCategories(): Promise<IdAndDescription[]> {\r\n if (!this.merchantCategoryCache) {\r\n this.merchantCategoryCache = await this.request<IdAndDescription[]>(`${baseEndpoint}/merchant-category`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.merchantCategoryCache || []);\r\n }\r\n\r\n async getCurrencies(): Promise<CurrencyData[]> {\r\n if (!this.currencyCache) {\r\n this.currencyCache = await this.request<CurrencyData[]>(`${baseEndpoint}/currency`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.currencyCache || []);\r\n }\r\n\r\n async getCountries(): Promise<CountryData[]> {\r\n if (!this.countryCache) {\r\n this.countryCache = await this.request<CountryData[]>(`${baseEndpoint}/country`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.countryCache || []);\r\n }\r\n\r\n async getLanguages(): Promise<LanguageData[]> {\r\n if (!this.languageCache) {\r\n this.languageCache = await this.request<LanguageData[]>(`${baseEndpoint}/language`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.languageCache || []);\r\n }\r\n\r\n async getAllCurrencies(): Promise<CurrencyData[]> {\r\n if (!this.allCurrencyCache) {\r\n this.allCurrencyCache = await this.request<CurrencyData[]>(`${baseEndpoint}/currency/all`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.allCurrencyCache || []);\r\n }\r\n\r\n async getAllCountries(): Promise<CountryData[]> {\r\n if (!this.allCountryCache) {\r\n this.allCountryCache = await this.request<CountryData[]>(`${baseEndpoint}/country/all`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.allCountryCache || []);\r\n }\r\n\r\n async getAllLanguages(): Promise<LanguageData[]> {\r\n if (!this.allLanguageCache) {\r\n this.allLanguageCache = await this.request<LanguageData[]>(`${baseEndpoint}/language/all`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.allLanguageCache || []);\r\n }\r\n\r\n async getMobileWalletOperators(): Promise<MobileWalletOperatorData[]> {\r\n if (!this.mobileWalletOperatorCache) {\r\n this.mobileWalletOperatorCache = await this.request<MobileWalletOperatorData[]>(`${baseEndpoint}/mobile-wallet-operator`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.mobileWalletOperatorCache || []);\r\n }\r\n\r\n async getBanks(country?: Country): Promise<BankData[]> {\r\n if (!this.bankCache.has(country || Country.None)) {\r\n if (country == null || country === Country.None) {\r\n this.bankCache.set(Country.None, await this.request<BankData[]>(`${baseEndpoint}/bank`, 'GET'));\r\n } else {\r\n this.bankCache.set(country, await this.request<BankData[]>(`${baseEndpoint}/bank?country=${country}`, 'GET'));\r\n }\r\n }\r\n\r\n return Promise.resolve(this.bankCache.get(country || Country.None) || []);\r\n }\r\n\r\n async getCardIssuerCountry(cardBin: string): Promise<CountryData> {\r\n if (!this.cardIssuerCountryCache.has(cardBin)) {\r\n this.cardIssuerCountryCache.set(cardBin, await this.request<CountryData>(`${baseEndpoint}/card-issuer-country?cardBin=${cardBin}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.cardIssuerCountryCache.get(cardBin) || null);\r\n }\r\n\r\n async getAddressFromLocation(latitude: number, longitude: number): Promise<Address> {\r\n if (latitude >= -90 && latitude <= 90 && longitude >= -180 && longitude <= 180) {\r\n const cacheKey = `${latitude}|${longitude}`;\r\n\r\n if (!this.addressLocationCache.has(cacheKey)) {\r\n this.addressLocationCache.set(cacheKey, await this.request<Address>(`${baseEndpoint}/address?latitude=${latitude}&longitude=${longitude}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.addressLocationCache.get(cacheKey) || null);\r\n }\r\n\r\n return Promise.reject(new ApiError(400, null, 'Invalid location coordinates.'));\r\n }\r\n\r\n async getAddressFromDigitalAddress(digitalAddress: string): Promise<Address> {\r\n if (/(\\w{2,3}-\\d{3,4}-\\d{4})|(\\w{2,3}\\d{7,8})/g.exec(digitalAddress)) {\r\n if (!this.digitalAddressCache.has(digitalAddress)) {\r\n this.digitalAddressCache.set(digitalAddress, await this.request<Address>(`${baseEndpoint}/address/${digitalAddress}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.digitalAddressCache.get(digitalAddress) || null);\r\n }\r\n\r\n return Promise.reject(new ApiError(400, null, 'Invalid digital address format.'));\r\n }\r\n}\r\n","import { Currency } from '../lookups/types';\r\nimport { Country } from '../lookups/types';\r\nimport { Address } from '../common/types';\r\nimport { BasicConsumer } from '../consumers/types';\r\nimport { Location } from '../common/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { Channel } from '../lookups/types';\r\nimport { RepeatInterval } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { BasicMerchant } from '../merchants/types';\r\n\r\nexport abstract class AccountHolderTransactionResult {\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class AmountTotals {\r\n public totalAmountRequestedInCents: number;\r\n public totalAmountAttemptedInCents: number;\r\n public totalAmountProcessedInCents: number;\r\n public totalAmountProcessedLessFeesAndCommissionsInCents: number;\r\n public totalInternalFeesInCents: number;\r\n public totalExternalFeesInCents: number;\r\n public totalFeesInCents: number;\r\n public totalElevyInCents: number;\r\n public totalUserFeesInCents: number;\r\n public totalCommissionsInCents: number;\r\n public totalRefundsInCents: number;\r\n public totalCashbackAmountAttemptedInCents: number;\r\n public totalCashbackAmountProcessedInCents: number;\r\n public totalTipAmountAttemptedInCents: number;\r\n public totalTipAmountProcessedInCents: number;\r\n public grandTotalProcessedInCents: number;\r\n public grandTotalToBePaidByUserInCents: number;\r\n}\r\n/** Model to hold card holder details. */\r\nexport class CardHolder {\r\n /** The card holder's first name (required). */\r\n public firstName: string;\r\n /** The card holder's last name/surname (required). */\r\n public lastName: string;\r\n /** Gets or sets the card holder's email address (required). */\r\n public emailAddress: string;\r\n /** Gets or sets the card holder's phone number (required - digits only). */\r\n public phoneNumber: string;\r\n /** Gets or sets 3 character ISO country code the card holder resides in. */\r\n public countryIsoCode: Country;\r\n /** The customers shipping address. */\r\n public shippingAddress?: Address;\r\n}\r\nexport enum CardIssuer {\r\n AmericanExpress = 'AmericanExpress',\r\n DinersClub = 'DinersClub',\r\n Discover = 'Discover',\r\n JCB = 'JCB',\r\n Maestro = 'Maestro',\r\n MasterCard = 'MasterCard',\r\n Switch = 'Switch',\r\n Visa = 'Visa',\r\n Unknown = 'Unknown',\r\n}\r\n/** A model to hold the details of a request to verify a card. */\r\nexport class CardVerificationPaymentRequest {\r\n /** An external reference supplied by the caller. */\r\n public yourReference?: string;\r\n /** Information about the consumer who owns the card. */\r\n public consumer?: BasicConsumer;\r\n /** A card token. */\r\n public token: string;\r\n /** The CVV for the card. */\r\n public cvv?: string;\r\n /** The card holders billing address. */\r\n public billingAddress?: Address;\r\n /** Additional information about the owner of the card to facilitate the card payment. */\r\n public cardHolder?: CardHolder;\r\n /** The location from which the payment request was submitted. */\r\n public location?: Location;\r\n /** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n public paymentStatusWebhook?: Webhook;\r\n}\r\n/** Contains the details of the bank account you would like to pay money into. */\r\nexport class BankAccountDestination {\r\n /**\r\n * A token that can be used instead of a bank account number.\r\n * If a token is present a bank account does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The bank account number of the recipient. */\r\n public accountNumber: string;\r\n /** The bank code of the bank that the account belongs to. */\r\n public bank: Bank;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** A model to hold the details of the result of an attempt to pay money into a bank account. */\r\nexport class BankAccountDestinationResult {\r\n /** The bank account number of the recipient. */\r\n public accountNumber: string;\r\n /** The bank that the recipient banks with as a 3 digit bank code. */\r\n public bank: Bank;\r\n public bankName: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold the details of a bill payment. */\r\nexport class BillDestination {\r\n /** A globally unique product reference (UUID) that uniquely identifies a product that the system knows how to pay. */\r\n public productReference: string;\r\n /** A dictionary of information related to the product referenced by <see cref=\"P:ZGA.Core.Models.Payments.BillDestination.ProductReference\" />. */\r\n public productFields: { [key: string]: string };\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** A model to hold the result of an attempt to pay a bill. */\r\nexport class BillDestinationResult {\r\n /** The name of the product that the system attempted to pay. */\r\n public productName?: string;\r\n /** A globally unique product reference (UUID) that uniquely identifies a product that the system knows how to pay. */\r\n public productReference?: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold details of a card into which a payment should be made. */\r\nexport class CardDestination {\r\n /**\r\n * A token that can be used instead of a card number.\r\n * If a token is present a card does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CardDestinationResult {\r\n public cardIssuer: string;\r\n public cardIssuerCountryIsoCode?: Country;\r\n public cardNumber: string;\r\n public threeDSecureUrl?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class CashDestination {\r\n public doNotProcess: boolean;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CashDestinationResult {\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class GenericDestination {\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** Model to hold the details of a merchant who should be paid. */\r\nexport class MerchantDestination {\r\n /** A unique merchant identifier. */\r\n public merchantReference?: string;\r\n public merchantSource?: string;\r\n public terminalReference?: string;\r\n public qrCodeReference?: string;\r\n public paymentType: MerchantPaymentType;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class MerchantDestinationResult {\r\n public merchantReference: string;\r\n public terminalReference?: string;\r\n public qrCodeReference?: string;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Contains the details of the mobile money account you would like to make a payment into. */\r\nexport class MobileWalletDestination {\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class MobileWalletDestinationResult {\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public mobileWalletOperatorName: string;\r\n public msisdn: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class PaymentDestinationResults {\r\n public merchants: MerchantDestinationResult[];\r\n public mobileWallets: MobileWalletDestinationResult[];\r\n public bankAccounts: BankAccountDestinationResult[];\r\n public qrCodes: QrCodeDestinationResult[];\r\n public cards: CardDestinationResult[];\r\n public wallets: WalletDestinationResult[];\r\n public bills: BillDestinationResult[];\r\n public cash?: CashDestinationResult;\r\n}\r\n/** Model to hold lists of Merchants who must be paid. */\r\nexport class PaymentDestinations {\r\n public generic?: GenericDestination;\r\n /** A list of merchants who must be paid. */\r\n public merchants?: MerchantDestination[];\r\n /** A list of mobile money/wallet accounts to be paid. */\r\n public mobileWallets?: MobileWalletDestination[];\r\n /** A list of bank accounts to be paid. */\r\n public bankAccounts?: BankAccountDestination[];\r\n /** A list of QR Codes containing payment destination details and any additional information related to each QR Code. */\r\n public qrCodes?: QrCodeDestination[];\r\n /** A list of credit cards to be paid. */\r\n public cards?: CardDestination[];\r\n /** A list of generic digital wallets to be paid. */\r\n public wallets?: WalletDestination[];\r\n /** A list of bills/products to pay. */\r\n public bills?: BillDestination[];\r\n /** Details of a payment that will be made as cash. */\r\n public cash?: CashDestination;\r\n}\r\n/** Model to hold details of a payment being made with a QR Code providing the destination details. */\r\nexport class QrCodeDestination {\r\n /** The QR Code data as a string. */\r\n public qrCode: string;\r\n /** An optional list of values that the client prompted the user for because the QR Code instructed it to. The values that could be provided are defined in the relevant QR Code specifications. */\r\n public additionalInfo?: { [key: string]: string };\r\n public tipAmountInCents: number;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class QrCodeDestinationResult {\r\n /** The QR Code data as a string. */\r\n public qrCode: string;\r\n public merchantReference: string;\r\n public billReference?: string;\r\n public tipAmountInCents: number;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold the details of a generic digital wallet. */\r\nexport class WalletDestination {\r\n /** A unique wallet identifier. */\r\n public walletReference: string;\r\n /** The wallet provider that created and manages the wallet. */\r\n public walletProvider: string;\r\n /** The wallet provider that created and manages the wallet. */\r\n public walletSource: string;\r\n public beneficiaryReference?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class WalletDestinationResult {\r\n public walletReference: string;\r\n public walletProvider: string;\r\n public walletSource: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport enum FeeType {\r\n None = 0,\r\n /**\r\n * A real-time commission that is deducted from the amount we are instructed to debit from a source account so that the amount we actually\r\n * debit is less the commission to be paid to the account holder being debited and the commission is therefore effectively paid in real-time.\r\n */\r\n FeeTakenFromSourceByMerchant = 1,\r\n Elevy = 2,\r\n /** A processing fee charged by the external payment processor that we used to process the payment, that is charged to us, and is not charged to the end user. */\r\n ExternalPaymentProcessorFee = 3,\r\n ExternallyProcessedElevy = 4,\r\n InternalUserTransactionFee = 5,\r\n ExternalUserTransactionFee = 6,\r\n /** A processing fee charged by us for processing a transaction, that is charged to the 3rd party using our payment engine to process transactions, and is not charged to the end user. */\r\n InternalPaymentProcessorFee = 7,\r\n}\r\nexport class LineItem {\r\n public reference: string;\r\n public name: string;\r\n public description?: string;\r\n public quantity: number;\r\n public currency: Currency;\r\n public unitAmountInCents: number;\r\n public totalAmountInCents: number;\r\n}\r\nexport class MerchantPaymentResponse {\r\n /** An optional access token that can be used to check the status of the transaction or perform any action required to unblock transaction processing. */\r\n public accessToken?: string;\r\n /** A globally unique payment reference (UUID) that can be used to check the status of the payment. */\r\n public reference: string;\r\n /** A set of URLs that can be used to check the status of a payment either via polling or SignalR. */\r\n public paymentStatusUrls: StatusUrls;\r\n}\r\nexport enum MerchantPaymentType {\r\n Unspecified = 'Unspecified',\r\n CashOut = 'CashOut',\r\n BuyingGoods = 'BuyingGoods',\r\n BillPayment = 'BillPayment',\r\n GhIPSSQrCode = 'GhIPSSQrCode',\r\n}\r\nexport class MerchantRefundRequest {\r\n public language?: string;\r\n public timeZone?: string;\r\n public description?: string;\r\n public transactionBatchReference?: string;\r\n public refundCategory: TransactionCategory;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n public refundAmountInCents: number;\r\n}\r\nexport class PaymentReceiptResponse {\r\n public lineItems: LineItem[];\r\n public isComplete: boolean;\r\n /** The percentage of transactions that have been completed so far, expressed as a percentage of the total number of both source and destination transactions associated with the payment. */\r\n public percentageComplete: number;\r\n /** The date the payment was started. */\r\n public paymentStartedDate: Date;\r\n /** The date the payment was completed. */\r\n public paymentCompletedDate?: Date;\r\n /** The optional external reference that was supplied in the initial payment request, if it was supplied. */\r\n public yourReference?: string;\r\n /** The transaction batch description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /**\r\n * A globally unique payment reference (UUID) that was generated when the initial payment request was submitted.\r\n * <para>\r\n * This reference is returned in the response to that initial payment request.\r\n * </para>\r\n */\r\n public paymentReference: string;\r\n /** A short unique payment reference based on the payment ID. */\r\n public shortPaymentReference: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** A verification code that can be used to validate that an external payment was triggered by a trusted device (used for offline payments for example). */\r\n public verificationCode: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /** The consumer reference of the consumer who made the payment. */\r\n public consumerReference?: string;\r\n /** Optional details of the consumer who made the payment. */\r\n public consumer?: BasicConsumer;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentSourceResults\" /> object containing all of the payment sources associated with the payment and several aggregated values related to those sources. */\r\n public paymentSources?: PaymentSourceResults;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentDestinationResults\" /> object containing all of the payment destinations associated with the payment and several aggregated values related to those sources. */\r\n public paymentDestinations?: PaymentDestinationResults;\r\n /** Transaction amount totals that summarize the overall payment amounts, fees and commissions associated with the payment. */\r\n public amountTotals: AmountTotals;\r\n public timeZone?: string;\r\n}\r\nexport class PaymentRecurrenceSchedule {\r\n public reference?: string;\r\n public createdDate: Date;\r\n public repeatInterval: RepeatInterval;\r\n public scheduleEndDate?: Date;\r\n public repeatCount?: number;\r\n public entries: PaymentRecurrenceScheduleEntry[];\r\n}\r\nexport class PaymentRecurrenceScheduleEntry {\r\n public scheduledDate: Date;\r\n public isCancelled: boolean;\r\n public transactionBatchReference?: string;\r\n public isProcessed: boolean;\r\n}\r\n/** Model to hold details of a response to a payment request. */\r\nexport class PaymentResponse {\r\n /** A globally unique payment reference (UUID) that can be used to check the status of the payment. */\r\n public reference: string;\r\n /** A set of URLs that can be used to check the status of a payment either via polling or SignalR. */\r\n public paymentStatusUrls: StatusUrls;\r\n}\r\n/** A model to hold the details of a payment request, including the current status of all associated transactions and the overall payment itself. */\r\nexport class PaymentStatusResponse {\r\n public isComplete: boolean;\r\n /** The percentage of transactions that have been completed so far, expressed as a percentage of the total number of both source and destination transactions associated with the payment. */\r\n public percentageComplete: number;\r\n /** The date the payment was started. */\r\n public paymentStartedDate: Date;\r\n /** The date the payment was completed. */\r\n public paymentCompletedDate?: Date;\r\n /** The optional external reference that was supplied in the initial payment request, if it was supplied. */\r\n public yourReference?: string;\r\n /** The transaction batch description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /**\r\n * A globally unique payment reference (UUID) that was generated when the initial payment request was submitted.\r\n * <para>\r\n * This reference is returned in the response to that initial payment request.\r\n * </para>\r\n */\r\n public paymentReference: string;\r\n /** A short unique payment reference based on the payment ID. */\r\n public shortPaymentReference: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** A verification code that can be used to validate that an external payment was triggered by a trusted device (used for offline payments for example). */\r\n public verificationCode: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /** The consumer reference of the consumer who made the payment. */\r\n public consumerReference?: string;\r\n /** Optional details of the consumer who made the payment. */\r\n public consumer?: BasicConsumer;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentSourceResults\" /> object containing all of the payment sources associated with the payment and several aggregated values related to those sources. */\r\n public paymentSources?: PaymentSourceResults;\r\n /** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentDestinationResults\" /> object containing all of the payment destinations associated with the payment and several aggregated values related to those sources. */\r\n public paymentDestinations?: PaymentDestinationResults;\r\n /** Transaction amount totals that summarize the overall payment amounts, fees and commissions associated with the payment. */\r\n public amountTotals: AmountTotals;\r\n public timeZone?: string;\r\n}\r\nexport class PaymentTransaction {\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport abstract class PaymentTransactionResult {\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold the details of a request for validation of a QR code. */\r\nexport class QrCodeValidationRequest {\r\n /** A QR Code string that you would like validated. */\r\n public qrCode: string;\r\n}\r\n/** A model to hold the details of a QR Code validation response. */\r\nexport class QrCodeValidationResponse {\r\n /** A boolean value indicating whether the current environment is capable of processing the QR Code that was submitted for validation. */\r\n public canProcess: boolean;\r\n /** A comma delimited list of every type of QR Code that the current environment is capable of processing. */\r\n public supportedQrCodes: string;\r\n}\r\nexport enum ReceiptType {\r\n Consumer = 'Consumer',\r\n Merchant = 'Merchant',\r\n}\r\n/** A model to hold the details of the current status of a refund transaction. */\r\nexport class RefundReceiptResponse {\r\n /** The optional external reference that was supplied in the initial refund request, if it was supplied. */\r\n public yourReference?: string;\r\n /** The full payment receipt for the original payment that was refunded when available. */\r\n public originalPaymentReceipt?: PaymentReceiptResponse;\r\n /** The date the refund was completed. */\r\n public refundCompletedDate?: Date;\r\n public timeZone?: string;\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold the details of a request to refund money to a source of funds. */\r\nexport class RefundRequest {\r\n public language?: string;\r\n public timeZone?: string;\r\n /** A globally unique transaction reference (UUID) that identifies the original transaction that sourced the funds that you want to refund. */\r\n public sourceTransactionReference: string;\r\n /** A globally unique transaction reference (UUID) that identifies the destination transaction that the refund request is associated with. */\r\n public destinationTransactionReference: string;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /**\r\n * The amount to refund.\r\n * <para>This value cannot be larger than the amount that was originally sourced by the transaction referenced by <see cref=\"P:ZGA.Core.Models.Payments.RefundRequest.SourceTransactionReference\" />.</para>\r\n */\r\n public refundAmountInCents: number;\r\n}\r\n/** A model to hold the details of a response to a refund request. */\r\nexport class RefundResponse {\r\n /**\r\n * A globally unique refund transaction reference (UUID) generated by the system internally to identify a specific refund transaction.\r\n * <para>Can be used to check the status of a refund.</para>\r\n */\r\n public reference: string;\r\n /** A set of URLs that can be used to check the status of a refund either via polling or SignalR. */\r\n public refundStatusUrls: StatusUrls;\r\n}\r\n/** A model to hold the details of the current status of a refund transaction. */\r\nexport class RefundStatusResponse {\r\n /** The date the refund was completed. */\r\n public refundCompletedDate?: Date;\r\n public timeZone?: string;\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold the details of a refund transaction. */\r\nexport class RefundTransaction {\r\n /** The amount to refund. */\r\n public refundAmountInCents: number;\r\n public description?: string;\r\n}\r\n/** A model to hold the details of the result of a transaction refund attempt. */\r\nexport class RefundTransactionResult {\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport enum RefundType {\r\n Manual = 1,\r\n Auto = 2,\r\n}\r\nexport class ApplePaySource {\r\n public webPaymentResponse: ApplePayWebPaymentResponse;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class BankAccountSource {\r\n /**\r\n * A token that can be used instead of a bank account number.\r\n * If a token is present a bank account does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The bank account number from which funds will be withdrawn. */\r\n public accountNumber: string;\r\n /** The bank code of the bank that the account belongs to. */\r\n public bank: Bank;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class BankAccountSourceResult {\r\n public accountNumber: string;\r\n public bank: Bank;\r\n public bankName: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** Model to hold the details of a card from which a payment should be made. */\r\nexport class CardSource {\r\n /**\r\n * A token that can be used instead of a card number.\r\n * If a token is present a card does not need to be provided.\r\n */\r\n public token?: string;\r\n /** The name of the card company that issued this card: VISA, MasterCard, AMEX etc. */\r\n public cardIssuer: CardIssuer;\r\n public cardIssuerCountryIsoCode?: Country;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n /**\r\n * The Card Verification Value found on the back of the card.\r\n * This is either 3 or 4 digits long.\r\n */\r\n public cvv?: string;\r\n /** The name of the card holder as printed on the card. */\r\n public nameOnCard: string;\r\n /** The month in which the card expires. */\r\n public expiryMonth: Month;\r\n /** The year in which the card expires. */\r\n public expiryYear: number;\r\n /** The card holders billing address. */\r\n public billingAddress?: Address;\r\n /** Additional customer information to facilitate the card payment. */\r\n public cardHolder?: CardHolder;\r\n public disableThreeDSecure: boolean;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CardSourceResult {\r\n public cardIssuer: string;\r\n public cardIssuerCountryIsoCode?: Country;\r\n public cardNumber: string;\r\n public threeDSecureUrl?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class CashSource {\r\n public doNotProcess: boolean;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class CashSourceResult {\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class GenericSource {\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class GooglePaySource {\r\n public webPaymentResponse: GooglePayWebPaymentResponse;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\n/** Model to hold the details of a mobile money payment source. */\r\nexport class MobileWalletSource {\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /**\r\n * A voucher code issued by your network provider (currently Vodafone/Telecel or GMoney) in order to verify your payment.\r\n * This can also actually be a One Time Pin code, despite being referred to as a VoucherCode, that is generated by the MNO but needs to be submitted via the payment engine.\r\n */\r\n public voucherCode?: string;\r\n /**\r\n * A PIN issued to the subscriber.\r\n * This is usually a static PIN code and is currently only applicable for Zeepay.\r\n */\r\n public subscriberPin?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class MobileWalletSourceResult {\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public mobileWalletOperatorName: string;\r\n public msisdn: string;\r\n public accountHolder?: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\nexport class PaymentSourceResults {\r\n public cards: CardSourceResult[];\r\n public mobileWallets: MobileWalletSourceResult[];\r\n public bankAccounts: BankAccountSourceResult[];\r\n public wallets: WalletSourceResult[];\r\n public cash?: CashSourceResult;\r\n}\r\n/** Model to hold lists of Cards and Mobile Money accounts from which a payment must be made. */\r\nexport class PaymentSources {\r\n public generic?: GenericSource;\r\n /** A list of cards that must be used to fund the payment. */\r\n public cards?: CardSource[];\r\n /** A list of mobile money/wallets which must be used to fund the payment. */\r\n public mobileWallets?: MobileWalletSource[];\r\n /** A list of bank accounts which must be used to fund the payment. */\r\n public bankAccounts?: BankAccountSource[];\r\n /** A list of generic digital wallet which must be used to fund the payment. */\r\n public wallets?: WalletSource[];\r\n /** Details of cash received to fund the payment. */\r\n public cash?: CashSource;\r\n /** Web Payments API response data for Apple Pay transactions. */\r\n public applePay?: ApplePaySource;\r\n /** Web Payments API response data for Google Pay transactions. */\r\n public googlePay?: GooglePaySource;\r\n}\r\nexport class WalletSource {\r\n /** A unique wallet identifier. */\r\n public walletReference: string;\r\n /** The wallet provider that created and manages the wallet. */\r\n public walletProvider: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The transaction amount, in cents. */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** Set this optional flag to avoid actually processing a transaction. */\r\n public doNotProcess: boolean;\r\n /**\r\n * Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n * The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n * This flag can only be used with server integrations and will be ignored for any other calls.\r\n * This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n */\r\n public disableConfirmation: boolean;\r\n /** A collection of public data that can be associated with the transaction. */\r\n public clientData: { [key: string]: string };\r\n /** A collection of all refund transaction requests that are associated with this transaction. */\r\n public refunds?: RefundTransaction[];\r\n public fees: TransactionFee[];\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n}\r\nexport class WalletSourceResult {\r\n public walletReference: string;\r\n public walletProvider: string;\r\n /** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n public refunds: RefundTransactionResult[];\r\n /** The date and time this transaction record was created. */\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n public reference?: string;\r\n /** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n public shortReference?: string;\r\n /** The transaction description/reference that can appear in notifications and statements. */\r\n public description?: string;\r\n /** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n public originalAmountInCents: number;\r\n /** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n public amountAttemptedInCents: number;\r\n /**\r\n * The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n * This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n */\r\n public amountInCents: number;\r\n /** The cashback amount, in cents. */\r\n public cashbackAmountInCents: number;\r\n /** A collection of all fees applied to the transaction. */\r\n public fees: TransactionFee[];\r\n /** A collection of metadata linked to this transaction. */\r\n public data: TransactionData[];\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The current status of the transaction. */\r\n public status: TransactionStatus;\r\n /** The category of the transaction. */\r\n public category: TransactionCategory;\r\n /** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n public summaryStatus: TransactionStatus;\r\n public isComplete: boolean;\r\n public isCashWithdrawal: boolean;\r\n /** A message detailing the current status of the transaction. */\r\n public message: string;\r\n}\r\n/** A model to hold a set of URLs that can be used to check the status of various types of transactions using various different web technologies. */\r\nexport class StatusUrls {\r\n /** A URL that can be used to repeatedly poll for a status update on a timer. */\r\n public polling?: string;\r\n /** A URL that can be used to connect to a SignalR endpoint in order to have updates pushed to you so that you do not have to poll. */\r\n public signalR?: string;\r\n /** Not available at this time. */\r\n public serverSentEvents?: string;\r\n /** Not available at this time. */\r\n public webSockets?: string;\r\n}\r\nexport enum TransactionCategory {\r\n Unknown = 0,\r\n Generic = 1,\r\n BankAccount = 2,\r\n Card = 3,\r\n MobileWallet = 4,\r\n Cash = 5,\r\n Merchant = 6,\r\n QrCode = 7,\r\n DigitalWallet = 8,\r\n Wallet = 8,\r\n BillPayment = 9,\r\n}\r\n/** A model that holds the details of a transaction confirmation. */\r\nexport class TransactionConfirmation {\r\n /** A boolean value indicating whether the transaction has been confirmed or not. */\r\n public confirm: boolean;\r\n}\r\nexport class TransactionData {\r\n public key: string;\r\n public data: string;\r\n public isPublic: boolean;\r\n public static none: TransactionData[];\r\n}\r\nexport class TransactionFee {\r\n public name: string;\r\n public feeType: FeeType;\r\n public feeAmountInCents: number;\r\n public currency: Currency;\r\n}\r\nexport enum TransactionIconType {\r\n Bank = 0,\r\n MobileWallet = 1,\r\n Card = 2,\r\n Cash = 3,\r\n Merchant = 4,\r\n QrCode = 5,\r\n DigitalWallet = 6,\r\n CellC = 7,\r\n Telkom = 8,\r\n TelkomMobile = 9,\r\n MTN = 10,\r\n Vodacom = 11,\r\n Vodafone = 12,\r\n AirtelTigo = 13,\r\n GhanaPay = 14,\r\n Zeepay = 15,\r\n Glo = 16,\r\n Surfline = 17,\r\n Busy4G = 18,\r\n DSTV = 19,\r\n GoTV = 20,\r\n StarTimesTV = 21,\r\n ECG = 22,\r\n GhanaWater = 23,\r\n Telecel = 24,\r\n}\r\n/** A model to hold the details of a pin or voucher code submission. */\r\nexport class TransactionPin {\r\n /** A PIN or voucher code provided by an end user. */\r\n public pin: string;\r\n}\r\nexport enum TransactionStatus {\r\n NotStarted = 0,\r\n Success = 1,\r\n Failed = 2,\r\n Processing = 3,\r\n Pending = 4,\r\n Authorized = 5,\r\n Declined = 6,\r\n ValidationError = 7,\r\n Requires3DSecure = 8,\r\n RequiresPin = 9,\r\n Expired = 10,\r\n InsufficientFunds = 11,\r\n AddressVerificationFailed = 12,\r\n Ignored = 13,\r\n ExternallyFunded = 14,\r\n ProcessorUnavailable = 15,\r\n TimedOut = 16,\r\n Indeterminate = 17,\r\n RequiresConfirmation = 18,\r\n RequiresAddress = 19,\r\n Delayed = 20,\r\n RequiresInitialConfirmation = 21,\r\n Unrecoverable = 22,\r\n Reversed = 23,\r\n}\r\nexport enum TransactionType {\r\n Source = 1,\r\n Destination = 2,\r\n}\r\n/** A model to hold the details of a web hook that a caller of this API would like to be called back on. */\r\nexport class Webhook {\r\n /** The URL to call back on. */\r\n public callbackUrl: string;\r\n /** A boolean value indicating whether callbacks should be sent every time there is a status change on any transaction associated with a payment, or only when the payment completes or any status change occurs that requires user intervention to allow the payment to progress. */\r\n public onPaymentCompleteOnly: boolean;\r\n}\r\nexport class EmailNotificationRequest {\r\n public toEmailAddress: string;\r\n public templateName?: string;\r\n public receiptType: ReceiptType;\r\n}\r\n/** Model to hold the details of a merchant payment request. */\r\nexport class MerchantPaymentRequest {\r\n /** A collection of all of the payment sources that must be used to make this payment. */\r\n public paymentSources?: PaymentSources;\r\n /** The optional terminal reference if this payment is being made from a merchant controlled device. */\r\n public terminalReference?: string;\r\n /** The optional QR code reference if this payment is being made from a scanned QR code. */\r\n public qrCodeReference?: string;\r\n /** The optional timestamp from the client used to calculate an offline verification code. */\r\n public timestamp?: number;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public language?: string;\r\n public timeZone?: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /**\r\n * A unique client reference for this payment.\r\n * This is optional to detect duplicate calls and also allow you to associate payments with your own internal reference numbers.\r\n */\r\n public yourReference?: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** Optional consumer information of the person making the payment. */\r\n public consumer?: BasicConsumer;\r\n /** Optional merchant information of the business making the payment. */\r\n public merchant?: BasicMerchant;\r\n /** The location from which the payment request was submitted. */\r\n public location?: Location;\r\n /** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n public paymentStatusWebhook?: Webhook;\r\n /** A text description of the payment. Sometimes also referred to as a Narration. */\r\n public description?: string;\r\n /**\r\n * A schedule definition to use to schedule payments to recur in the future.\r\n * If a schedule is supplied it must include either an end date or a repeat count and it must specify what repeat interval to use.\r\n */\r\n public recurrenceSchedule?: PaymentRecurrenceSchedule;\r\n /**\r\n * When a payment request instance is spawned by a recurrence schedule this property will be populated so that it is possible to lookup the specific schedule entry in the database\r\n * that is associated with payment request instance in question.\r\n */\r\n public scheduledSequenceNumber?: number;\r\n /**\r\n * In certain scenarios a confirmation may be requested from the client before transaction processing starts (confirming fees for example).\r\n * Use this flag to indicate that you want to automatically confirm any initial confirmations.\r\n */\r\n public disableInitialConfirmation: boolean;\r\n /** A list of line items associated with this payment. */\r\n public lineItems: LineItem[];\r\n}\r\n/** Model to hold the details of a payment request. */\r\nexport class PaymentRequest {\r\n /** A collection of all of the payment sources that must be used to make this payment. */\r\n public paymentSources?: PaymentSources;\r\n /** A collection of all the payment destinations that must be paid as a result of processing this payment. */\r\n public paymentDestinations?: PaymentDestinations;\r\n public language?: string;\r\n public timeZone?: string;\r\n /** Specify the channel that this payment originated from. */\r\n public channel: Channel;\r\n /**\r\n * A unique client reference for this payment.\r\n * This is optional to detect duplicate calls and also allow you to associate payments with your own internal reference numbers.\r\n */\r\n public yourReference?: string;\r\n /**\r\n * An optional reference that is associated with every transaction batch that participates in a split payment.\r\n * This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n * The client processing the split payment is responsible for generating this reference and ensuring that\r\n * all transaction batches that are part of the split payment are associated with the same split reference.\r\n */\r\n public splitReference?: string;\r\n /** Optional consumer information of the person making the payment. */\r\n public consumer?: BasicConsumer;\r\n /** Optional merchant information of the business making the payment. */\r\n public merchant?: BasicMerchant;\r\n /** The location from which the payment request was submitted. */\r\n public location?: Location;\r\n /** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n public paymentStatusWebhook?: Webhook;\r\n /** A text description of the payment. Sometimes also referred to as a Narration. */\r\n public description?: string;\r\n /**\r\n * A schedule definition to use to schedule payments to recur in the future.\r\n * If a schedule is supplied it must include either an end date or a repeat count and it must specify what repeat interval to use.\r\n */\r\n public recurrenceSchedule?: PaymentRecurrenceSchedule;\r\n /**\r\n * When a payment request instance is spawned by a recurrence schedule this property will be populated so that it is possible to lookup the specific schedule entry in the database\r\n * that is associated with payment request instance in question.\r\n */\r\n public scheduledSequenceNumber?: number;\r\n /**\r\n * In certain scenarios a confirmation may be requested from the client before transaction processing starts (confirming fees for example).\r\n * Use this flag to indicate that you want to automatically confirm any initial confirmations.\r\n */\r\n public disableInitialConfirmation: boolean;\r\n /** A list of line items associated with this payment. */\r\n public lineItems: LineItem[];\r\n}\r\nexport class SmsNotificationRequest {\r\n public toNumber: string;\r\n public receiptType: ReceiptType;\r\n}\r\nexport class GooglePayWebPaymentResponse {\r\n public requestId: string;\r\n public methodName: string;\r\n public details: any;\r\n public payerEmail?: string;\r\n public payerName: string;\r\n public payerPhone?: string;\r\n}\r\nexport class ApplePayWebPaymentResponse {\r\n public requestId: string;\r\n public methodName: string;\r\n public details: any;\r\n public payerEmail?: string;\r\n public payerName: string;\r\n public payerPhone?: string;\r\n}\r\n","import { ApiTokens, BaseApi } from '../baseApi';\r\nimport { Address } from '../common/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { MerchantQrCodeOptions } from '../merchants/types';\r\nimport {\r\n PaymentRequest,\r\n PaymentResponse,\r\n PaymentStatusResponse,\r\n TransactionPin,\r\n TransactionConfirmation,\r\n QrCodeValidationRequest,\r\n QrCodeValidationResponse,\r\n CardVerificationPaymentRequest,\r\n EmailNotificationRequest,\r\n SmsNotificationRequest,\r\n TransactionStatus,\r\n PaymentTransactionResult,\r\n MobileWalletSourceResult,\r\n MerchantPaymentResponse,\r\n MerchantPaymentRequest,\r\n PaymentReceiptResponse,\r\n ReceiptType,\r\n} from './types';\r\nimport {\r\n OnPaymentStatusUpdate,\r\n OnPaymentComplete,\r\n OnRequires3DSecure,\r\n OnRequiresPin,\r\n OnRequiresConfirmation,\r\n OnRequiresAddress,\r\n OnComplete3DSecure,\r\n} from '../eventTypes';\r\nimport { CardRequest, CardResponse, BankAccountRequest, BankAccountResponse, VerifyCardRequest } from '../tokens/types';\r\nimport * as signalR from '@microsoft/signalr';\r\nimport { AxiosInstance } from 'axios';\r\n\r\nconst baseEndpointPay = '/v1/pay';\r\nconst baseEndpointToken = '/v2/token';\r\nconst baseEndpointTransaction = '/v1/transaction';\r\nconst baseEndpointValidate = '/v1/validate';\r\nconst baseEndpointNotification = '/v1/notification';\r\n\r\nexport class Payments extends BaseApi {\r\n private readonly hubConnection: signalR.HubConnection;\r\n private readonly baseUrl: string;\r\n\r\n private activeTransactions = new Map<string, { lastJsonResponse: string; isProcessing3dSecure: boolean; statusCheckTimer: NodeJS.Timer }>();\r\n\r\n private manuallyStartedPaymentStatusChecking = false;\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false) {\r\n super(axiosInstance, consoleLogging);\r\n\r\n this.baseUrl = axiosInstance.defaults.baseURL;\r\n\r\n this.hubConnection = new signalR.HubConnectionBuilder()\r\n .withUrl(`${this.baseUrl}${baseEndpointPay}/hub`, { accessTokenFactory: () => ApiTokens.accessToken })\r\n .withAutomaticReconnect()\r\n .withStatefulReconnect()\r\n .configureLogging(this.consoleLogging ? signalR.LogLevel.Debug : signalR.LogLevel.None)\r\n .build();\r\n }\r\n\r\n async pay(request: PaymentRequest): Promise<PaymentStatusResponse> {\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n const response = await this.request<PaymentResponse>(baseEndpointPay, 'POST', request);\r\n\r\n return this.startPaymentStatusChecking(response.reference);\r\n }\r\n\r\n async payMerchant(merchantReference: string, request: MerchantPaymentRequest): Promise<PaymentStatusResponse> {\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n const response = await this.request<MerchantPaymentResponse>(`${baseEndpointPay}/merchant/${merchantReference}`, 'POST', request);\r\n\r\n // Use token from the response if it was not set before.\r\n ApiTokens.accessToken = ApiTokens.accessToken || response.accessToken;\r\n\r\n return this.startPaymentStatusChecking(response.reference);\r\n }\r\n\r\n async paymentStatusCheck(paymentReference: string): Promise<PaymentStatusResponse> {\r\n return this.request<PaymentStatusResponse>(`${baseEndpointPay}/status/${paymentReference}`, 'GET');\r\n }\r\n\r\n async paymentReceipt(paymentReference: string): Promise<PaymentReceiptResponse> {\r\n return this.request<PaymentReceiptResponse>(`${baseEndpointPay}/receipt/${paymentReference}`, 'GET');\r\n }\r\n\r\n async createCardToken(request: CardRequest): Promise<CardResponse> {\r\n return this.request<CardResponse>(`${baseEndpointToken}/card`, 'POST', request);\r\n }\r\n\r\n async createBankAccountToken(request: BankAccountRequest): Promise<BankAccountResponse> {\r\n return this.request<BankAccountResponse>(`${baseEndpointToken}/bankAccount`, 'POST', request);\r\n }\r\n\r\n async verifyCardToken(request: VerifyCardRequest): Promise<CardResponse> {\r\n return this.request<CardResponse>(`${baseEndpointToken}/card/verify`, 'POST', request);\r\n }\r\n\r\n async createCardVerificationPayment(request: CardVerificationPaymentRequest): Promise<PaymentStatusResponse> {\r\n const response = await this.request<PaymentResponse>(`${baseEndpointToken}/card/verify/payment`, 'POST', request);\r\n\r\n return this.startPaymentStatusChecking(response.reference);\r\n }\r\n\r\n async submitPinCode(transactionReference: string, pin: string): Promise<void> {\r\n const request: TransactionPin = {\r\n pin: pin,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/pin/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async rejectPinCode(transactionReference: string): Promise<void> {\r\n const request: TransactionPin = {\r\n pin: '',\r\n };\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/pin/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async submitConfirmation(transactionReference: string, confirm: boolean): Promise<void> {\r\n const request: TransactionConfirmation = {\r\n confirm: confirm,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/confirm/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async submitAddress(transactionReference: string, request: Address): Promise<void> {\r\n return this.request<void>(`${baseEndpointTransaction}/address/${transactionReference}`, 'POST', request);\r\n }\r\n\r\n async validateQrCode(request: QrCodeValidationRequest): Promise<QrCodeValidationResponse> {\r\n return this.request<QrCodeValidationResponse>(`${baseEndpointValidate}/qr`, 'POST', request);\r\n }\r\n\r\n async sendEmailPaymentNotification(paymentReference: string, emailAddress: string, templateName?: string): Promise<void> {\r\n const request: EmailNotificationRequest = {\r\n toEmailAddress: emailAddress,\r\n templateName: templateName,\r\n receiptType: ReceiptType.Consumer,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointNotification}/email/${paymentReference}`, 'POST', request);\r\n }\r\n\r\n async sendSmsPaymentNotification(paymentReference: string, msisdn: string): Promise<void> {\r\n const request: SmsNotificationRequest = {\r\n toNumber: msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, ''),\r\n receiptType: ReceiptType.Consumer,\r\n };\r\n\r\n return this.request<void>(`${baseEndpointNotification}/sms/${paymentReference}`, 'POST', request);\r\n }\r\n\r\n async stopPaymentStatusChecking(paymentReference?: string): Promise<void> {\r\n if (paymentReference) {\r\n this.removePaymentStatusCheckInterval(paymentReference);\r\n this.activeTransactions.delete(paymentReference);\r\n } else {\r\n this.manuallyStartedPaymentStatusChecking = false;\r\n\r\n for (let tran of this.activeTransactions.values()) {\r\n clearInterval(tran.statusCheckTimer);\r\n }\r\n\r\n this.activeTransactions.clear();\r\n }\r\n\r\n if (!this.manuallyStartedPaymentStatusChecking && this.hubConnection.state !== signalR.HubConnectionState.Disconnected) {\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n return this.hubConnection.stop();\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n async startPaymentStatusChecking(paymentReference?: string): Promise<PaymentStatusResponse> {\r\n // Check if we can use SignalR but even if it fails then it will fallback to polling.\r\n const start = async () => {\r\n try {\r\n if (paymentReference) {\r\n // Enable a backup poll if things are taking a bit long.\r\n this.addPaymentStatusCheckInterval(paymentReference, 10000);\r\n }\r\n\r\n if (this.hubConnection.state !== signalR.HubConnectionState.Connected) {\r\n return await this.hubConnection.start();\r\n }\r\n\r\n return Promise.resolve();\r\n } catch (error) {\r\n if (paymentReference) {\r\n this.removePaymentStatusCheckInterval(paymentReference);\r\n\r\n console.error('Could not connect via SignalR, falling back to polling end-point...');\r\n this.addPaymentStatusCheckInterval(paymentReference, 1500);\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(error);\r\n }\r\n };\r\n\r\n if (paymentReference) {\r\n this.activeTransactions.set(paymentReference, {\r\n lastJsonResponse: '',\r\n isProcessing3dSecure: false,\r\n statusCheckTimer: null,\r\n });\r\n }\r\n\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n this.hubConnection.on('OnPaymentStatusChanged', async (statusResponse: PaymentStatusResponse) => {\r\n this.removePaymentStatusCheckInterval(statusResponse.paymentReference);\r\n\r\n // An active transaction is not found but the checker was manually started so we need to add it.\r\n // This is necessary because starting the status checker manually implied you are waiting for an external payment to start.\r\n if (!this.activeTransactions.has(statusResponse.paymentReference) && this.manuallyStartedPaymentStatusChecking) {\r\n this.activeTransactions.set(statusResponse.paymentReference, {\r\n lastJsonResponse: '',\r\n isProcessing3dSecure: false,\r\n statusCheckTimer: null,\r\n });\r\n }\r\n\r\n if (this.activeTransactions.has(statusResponse.paymentReference)) {\r\n this.checkPaymentUpdateStatus(statusResponse);\r\n\r\n if (statusResponse.isComplete) {\r\n this.activeTransactions.delete(statusResponse.paymentReference);\r\n\r\n if (!this.manuallyStartedPaymentStatusChecking) {\r\n // If this was not manually started then disconnect from the hub.\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n return await this.stopPaymentStatusChecking(statusResponse.paymentReference);\r\n }\r\n } else {\r\n // Enable the backup poll again as a fallback if the connection gets lost.\r\n this.addPaymentStatusCheckInterval(statusResponse.paymentReference, 5000);\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n });\r\n\r\n await start();\r\n\r\n if (paymentReference) {\r\n // Since the payment is already processing, we should check the status after connecting to see if it's in a waiting state that could have been missed.\r\n const initialStatusResponse = await this.paymentStatusCheck(paymentReference);\r\n this.checkPaymentUpdateStatus(initialStatusResponse);\r\n\r\n return Promise.resolve(initialStatusResponse);\r\n } else {\r\n this.manuallyStartedPaymentStatusChecking = true;\r\n }\r\n\r\n return Promise.resolve(null);\r\n }\r\n\r\n getOfflinePaymentFormUrl(timestamp: number, merchantId: number, terminalId: number, batchNumber: string, options: MerchantQrCodeOptions): string {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n let optionsBase64 = '';\r\n if (isBrowser) {\r\n // Browser compatible version.\r\n optionsBase64 = btoa(JSON.stringify(options || {}));\r\n } else {\r\n optionsBase64 = Buffer.from(JSON.stringify(options || {}), 'base64').toString();\r\n }\r\n\r\n // /mp is URL rewritten to v1/merchant/payment/form/offline to keep it short for QR codes.\r\n return `${this.baseUrl}/mp?x=${timestamp}|${merchantId}|${terminalId}|${batchNumber || ''}|${optionsBase64}`;\r\n }\r\n\r\n getRequiredPinLength(mobileWalletOperator: MobileWalletOperator): number {\r\n if (\r\n mobileWalletOperator === MobileWalletOperator.VDF ||\r\n mobileWalletOperator.toString() === 'VDF' ||\r\n mobileWalletOperator === MobileWalletOperator.TCG ||\r\n mobileWalletOperator.toString() === 'TCG'\r\n ) {\r\n return 6;\r\n }\r\n\r\n return 4;\r\n }\r\n\r\n luhnCheck(creditCardNumber: string): boolean {\r\n if (!creditCardNumber) {\r\n return false;\r\n }\r\n\r\n creditCardNumber = creditCardNumber.replace(/[\\s]/g, '');\r\n\r\n if (!/^[0-9]+$/.test(creditCardNumber)) {\r\n return false;\r\n }\r\n\r\n const array = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9];\r\n let length = creditCardNumber.length;\r\n let bit = 1;\r\n let sum = 0;\r\n let value = 0;\r\n\r\n while (length) {\r\n value = parseInt(creditCardNumber.charAt(--length), 10);\r\n bit ^= 1;\r\n sum += bit ? array[value] : value;\r\n }\r\n\r\n return sum % 10 === 0;\r\n }\r\n\r\n private checkPaymentUpdateStatus(statusResponse: PaymentStatusResponse) {\r\n const checkRequiredStatuses = (statusResponse: PaymentStatusResponse) => {\r\n let isWaiting = false;\r\n\r\n // Check for specific wait/required statuses and signal the client to show a dialog.\r\n const checkGenericRequiredStatuses = (transactionResult: PaymentTransactionResult) => {\r\n // Short circuit here to avoid signalling for multiple waiting transactions to the client can deal with one at a time.\r\n if (!isWaiting) {\r\n const signalData: Record<string, any> = {\r\n message: transactionResult.message,\r\n transactionReference: transactionResult.reference,\r\n paymentStatusResponse: statusResponse,\r\n };\r\n\r\n if (\r\n transactionResult.status === TransactionStatus.RequiresConfirmation ||\r\n transactionResult.status === TransactionStatus.RequiresInitialConfirmation\r\n ) {\r\n isWaiting = true;\r\n\r\n // Attach the account holders and the fees.\r\n const destinationWithAccountHolder =\r\n statusResponse.paymentDestinations.mobileWallets.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.bankAccounts.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.merchants.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.qrCodes.find((transactionResult) => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.bills.find((transactionResult) => transactionResult.accountHolder) ||\r\n null;\r\n\r\n signalData.confirmationData = {\r\n amountInCents: transactionResult.amountInCents,\r\n sourceAccountHolder: transactionResult['accountHolder'] || null,\r\n destinationAccountHolder: destinationWithAccountHolder !== null ? destinationWithAccountHolder.accountHolder : null,\r\n fees: transactionResult.fees,\r\n };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresConfirmation --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequiresConfirmation, signalData);\r\n } else if (transactionResult.status === TransactionStatus.RequiresPin) {\r\n isWaiting = true;\r\n\r\n // We can try indicate to a client to render PIN limits if that's what they want to do.\r\n // Typically a PIN will be 4 digits in length, one well-known outlier is a Vodafone voucher which is 6.\r\n signalData.pinLength = this.getRequiredPinLength(MobileWalletOperator.None);\r\n\r\n const mobileWalletSourceResult = transactionResult as MobileWalletSourceResult;\r\n if (mobileWalletSourceResult && mobileWalletSourceResult.mobileWalletOperator) {\r\n signalData.pinLength = this.getRequiredPinLength(mobileWalletSourceResult.mobileWalletOperator);\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresPin --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequiresPin, signalData);\r\n } else if (transactionResult.status === TransactionStatus.RequiresAddress) {\r\n isWaiting = true;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresAddress --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequiresAddress, signalData);\r\n }\r\n }\r\n };\r\n\r\n // Sources\r\n statusResponse.paymentSources.cards.forEach((transactionResult) => {\r\n if (!isWaiting && transactionResult.status === TransactionStatus.Requires3DSecure && transactionResult.threeDSecureUrl) {\r\n isWaiting = true;\r\n this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure = true;\r\n\r\n const signalData = { url: transactionResult.threeDSecureUrl };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequires3DSecure --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnRequires3DSecure, signalData);\r\n } else {\r\n checkGenericRequiredStatuses(transactionResult);\r\n }\r\n });\r\n\r\n if (!isWaiting && this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure) {\r\n this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure = false;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnComplete3DSecure --');\r\n }\r\n\r\n this.events.publish(OnComplete3DSecure);\r\n }\r\n\r\n statusResponse.paymentSources.mobileWallets.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentSources.bankAccounts.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n\r\n // Destinations\r\n statusResponse.paymentDestinations.bankAccounts.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.merchants.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.mobileWallets.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.qrCodes.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.cards.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.wallets.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n statusResponse.paymentDestinations.bills.forEach((transactionResult) => checkGenericRequiredStatuses(transactionResult));\r\n };\r\n\r\n const activeTransaction = this.activeTransactions.get(statusResponse.paymentReference);\r\n\r\n if (activeTransaction && JSON.stringify(statusResponse) !== activeTransaction.lastJsonResponse) {\r\n // To reduce spamming the client we'll only publish changes.\r\n activeTransaction.lastJsonResponse = JSON.stringify(statusResponse);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnPaymentStatusUpdate --');\r\n console.dir(statusResponse, { depth: null });\r\n }\r\n\r\n this.events.publish(OnPaymentStatusUpdate, statusResponse);\r\n\r\n checkRequiredStatuses(statusResponse);\r\n\r\n if (statusResponse.isComplete) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnPaymentComplete --');\r\n console.dir(statusResponse, { depth: null });\r\n }\r\n\r\n this.events.publish(OnPaymentComplete, statusResponse);\r\n\r\n this.removePaymentStatusCheckInterval(statusResponse.paymentReference);\r\n this.activeTransactions.delete(statusResponse.paymentReference);\r\n }\r\n } else if (this.consoleLogging) {\r\n console.warn('!! OnPaymentStatusUpdate will not be fired because the status response has not changed !!');\r\n }\r\n }\r\n\r\n private async onStatusPollingInterval(paymentReference: string): Promise<void> {\r\n this.removePaymentStatusCheckInterval(paymentReference);\r\n\r\n if (this.activeTransactions.has(paymentReference)) {\r\n const statusResponse = await this.paymentStatusCheck(paymentReference);\r\n\r\n if (statusResponse) {\r\n this.checkPaymentUpdateStatus(statusResponse);\r\n\r\n if (!statusResponse.isComplete) {\r\n this.addPaymentStatusCheckInterval(paymentReference);\r\n } else {\r\n if (!this.manuallyStartedPaymentStatusChecking) {\r\n // If this was not manually started then disconnect from the hub.\r\n this.hubConnection.off('OnPaymentStatusChanged');\r\n await this.stopPaymentStatusChecking(paymentReference);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private addPaymentStatusCheckInterval(paymentReference?: string, interval: number = 1500): void {\r\n if (this.activeTransactions.has(paymentReference)) {\r\n const activeTransaction = this.activeTransactions.get(paymentReference);\r\n clearInterval(activeTransaction.statusCheckTimer);\r\n activeTransaction.statusCheckTimer = setInterval(() => this.onStatusPollingInterval(paymentReference), interval);\r\n }\r\n }\r\n\r\n private removePaymentStatusCheckInterval(paymentReference?: string): void {\r\n if (this.activeTransactions.has(paymentReference)) {\r\n clearInterval(this.activeTransactions.get(paymentReference).statusCheckTimer);\r\n }\r\n }\r\n}\r\n","export enum LogLevel {\r\n Trace = 0,\r\n Debug = 1,\r\n Information = 2,\r\n Warning = 3,\r\n Error = 4,\r\n Critical = 5,\r\n}\r\nexport interface LogMessage {\r\n timestamp: string;\r\n level: LogLevel;\r\n template: string;\r\n properties?: any[];\r\n}\r\nexport interface Token {\r\n name?: string;\r\n text?: string;\r\n destructure?: boolean;\r\n raw?: string;\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport { Balance, ContactDetails } from '../common/types';\r\nimport { OnSessionExpired } from '../eventTypes';\r\nimport { Consumer, ConsumerFile, Feedback, Message, StopCardRequest } from './types';\r\n\r\nconst baseConsumerEndpoint = '/v1/consumer';\r\nconst baseFeedbackEndpoint = '/v1/consumer/feedback';\r\nconst baseMessageEndpoint = '/v1/consumer/messages';\r\nconst baseContactEndpoint = '/v1/consumer/contact';\r\nconst baseFilesEndpoint = '/v1/consumer/files';\r\nconst baseAccountEndpoint = '/v1/consumer/account';\r\n\r\nexport class Consumers extends BaseApi {\r\n // Consumer\r\n async createConsumer(request: Consumer): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'POST', request);\r\n }\r\n\r\n async updateConsumer(request: Consumer): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'PUT', request);\r\n }\r\n\r\n async deleteConsumer(): Promise<void> {\r\n await this.request<Consumer>(baseConsumerEndpoint, 'DELETE');\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n async getConsumer(): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'GET');\r\n }\r\n\r\n async getConsumerAgreement(): Promise<string> {\r\n return this.request<string>(`${baseConsumerEndpoint}/agreement`, 'GET');\r\n }\r\n\r\n async acceptConsumerAgreement(): Promise<void> {\r\n return this.request<void>(`${baseConsumerEndpoint}/agreement/accept`, 'POST');\r\n }\r\n\r\n // Accounts\r\n async stopCard(cardReference: string, reason?: string): Promise<void> {\r\n const request: StopCardRequest = {\r\n cardReference: cardReference,\r\n reason: reason,\r\n };\r\n\r\n return this.request<void>(`${baseAccountEndpoint}/card/stop`, 'POST', request);\r\n }\r\n\r\n async getBankAccountBalance(bankAccountReference: string): Promise<Balance> {\r\n return this.request<Balance>(`${baseAccountEndpoint}/bank-account/${bankAccountReference}/balance`, 'GET');\r\n }\r\n\r\n // Files\r\n async downloadFile(fileReference: string, queryParameters?: Record<string, string>): Promise<ConsumerFile | null> {\r\n let queryString = '';\r\n\r\n if (queryParameters && Object.keys(queryParameters).length > 0) {\r\n const params = Object.entries(queryParameters)\r\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n queryString = `?${params}`;\r\n }\r\n\r\n return this.request<ConsumerFile>(`${baseFilesEndpoint}/${fileReference}${queryString}`, 'GET');\r\n }\r\n\r\n // Feedback\r\n async submitFeedback(description: string): Promise<void> {\r\n const request: Feedback = {\r\n description: description,\r\n };\r\n\r\n return this.request<void>(`${baseFeedbackEndpoint}/send`, 'POST', request);\r\n }\r\n\r\n // Messages\r\n async getAllMessages(): Promise<Message[]> {\r\n return this.request<Message[]>(baseMessageEndpoint, 'GET');\r\n }\r\n\r\n async getMessage(messageReference: string): Promise<Message> {\r\n return this.request<Message>(`${baseMessageEndpoint}/${messageReference}`, 'GET');\r\n }\r\n\r\n async deleteMessage(messageReference: string): Promise<void> {\r\n return this.request<void>(`${baseMessageEndpoint}/${messageReference}`, 'DELETE');\r\n }\r\n\r\n // Contact\r\n async contactSupport(request: ContactDetails): Promise<void> {\r\n return this.request<void>(baseContactEndpoint, 'POST', request);\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport QRCode from 'qrcode';\r\n\r\nconst baseEndpoint = '/v1/qr';\r\n\r\nexport class QrCodes extends BaseApi {\r\n private readonly qrCache = new Map<string, any>();\r\n\r\n async decode(qrCode: string): Promise<any> {\r\n if (!this.qrCache.has(qrCode)) {\r\n this.qrCache.set(qrCode, await this.request<any>(`${baseEndpoint}/decode?qrCodeData=${qrCode}`, 'GET'));\r\n }\r\n\r\n return Promise.resolve(this.qrCache.get(qrCode) || null);\r\n }\r\n\r\n async generate(text: string, width: number = 500): Promise<string> {\r\n if (text) {\r\n return QRCode.toDataURL(text, { errorCorrectionLevel: 'H', margin: 0.5, width: width });\r\n }\r\n\r\n return Promise.reject();\r\n }\r\n}\r\n","import { OtpVerificationRequest, OtpVerificationResponse, TokenResponse } from '../authentication/types';\r\nimport { ApiTokens, BaseApi } from '../baseApi';\r\nimport { Device } from '../devices/types';\r\nimport { Currency, ProductType } from '../lookups/types';\r\nimport {\r\n BasicMerchant,\r\n Merchant,\r\n MerchantFile,\r\n MerchantLoginCredentials,\r\n MerchantNameVerificationRequest,\r\n MerchantNameVerificationResponse,\r\n MerchantProduct,\r\n TerminalConfiguration,\r\n TerminalPaymentQrCodeUrls,\r\n TerminalPaymentQrCodes,\r\n TerminalSetup,\r\n} from './types';\r\n\r\nconst baseMerchantEndpoint = '/v1/merchant';\r\nconst baseOtpEndpoint = '/v1/merchant/otp';\r\nconst basePosEndpoint = '/v1/merchant/pos';\r\nconst baseProductEndpoint = '/v1/merchant/product';\r\nconst baseUserEndpoint = '/v1/merchant/user';\r\n\r\nexport class Merchants extends BaseApi {\r\n private readonly productDetailCache = new Map<string, MerchantProduct>();\r\n private productsCache: any[] = [];\r\n\r\n private createMerchantProductProxy(product: MerchantProduct): MerchantProduct {\r\n const copy = { ...product };\r\n\r\n return new Proxy(copy, {\r\n get(target, prop) {\r\n if (prop === 'amountInCents') {\r\n if (target.futureAmountEffectiveFromDate && new Date(target.futureAmountEffectiveFromDate) <= new Date()) {\r\n return target.futureAmountInCents || 0;\r\n }\r\n return target.amountInCents;\r\n }\r\n return (target as any)[prop];\r\n },\r\n\r\n set(target, prop, value) {\r\n (target as any)[prop] = value;\r\n return true;\r\n },\r\n }) as MerchantProduct;\r\n }\r\n\r\n // Products\r\n private async getAllProducts(): Promise<any> {\r\n if (this.productsCache.length === 0) {\r\n const products = await this.request<any>(`${baseProductEndpoint}/lookup`, 'GET');\r\n this.productsCache = products || [];\r\n }\r\n\r\n return Promise.resolve(this.productsCache);\r\n }\r\n\r\n async getActiveProductTypes(): Promise<ProductType[]> {\r\n const allProducts = await this.getAllProducts();\r\n\r\n return Promise.resolve(allProducts.map((p) => p.type).sort());\r\n }\r\n\r\n async getMerchantNamesFromProductType(productType: string): Promise<string[]> {\r\n const allProducts = await this.getAllProducts();\r\n\r\n const el = allProducts.find((p) => p.type === productType);\r\n if (el) {\r\n return Promise.resolve(\r\n el.merchants\r\n .map((m) => m.name)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .sort(),\r\n );\r\n }\r\n\r\n return Promise.resolve([]);\r\n }\r\n\r\n async getProductTypesForMerchant(merchantName: string): Promise<ProductType[]> {\r\n const allProducts = await this.getAllProducts();\r\n const typesWithMatchingMerchant = [];\r\n\r\n allProducts.forEach((product) => {\r\n if (product.merchants.find((m) => m.name === merchantName)) {\r\n typesWithMatchingMerchant.push(product.type);\r\n }\r\n });\r\n\r\n return Promise.resolve(typesWithMatchingMerchant.filter((value, index, self) => self.indexOf(value) === index).sort());\r\n }\r\n\r\n async getProductsForMerchantAndProductType(productType: ProductType, merchantName: string): Promise<any[]> {\r\n const allProducts = await this.getAllProducts();\r\n\r\n const pel = allProducts.find((p) => p.type === productType);\r\n if (pel) {\r\n const mel = pel.merchants.find((m) => m.name === merchantName);\r\n if (mel) {\r\n return Promise.resolve(mel.products.sort((a, b) => a.name.localeCompare(b.name)));\r\n }\r\n }\r\n\r\n return Promise.resolve([]);\r\n }\r\n\r\n async getProductDetails(productReference: string): Promise<MerchantProduct> {\r\n if (!this.productDetailCache.has(productReference)) {\r\n this.productDetailCache.set(productReference, await this.request<MerchantProduct>(`${baseProductEndpoint}/details/${productReference}`, 'GET'));\r\n }\r\n\r\n const productDetails = this.productDetailCache.get(productReference) || null;\r\n if (productDetails) {\r\n return Promise.resolve(this.createMerchantProductProxy(productDetails));\r\n }\r\n\r\n return Promise.resolve(null);\r\n }\r\n\r\n async getProducts(): Promise<MerchantProduct[]> {\r\n const products = await this.request<MerchantProduct[]>(`${baseProductEndpoint}`, 'GET');\r\n return products.map((product) => this.createMerchantProductProxy(product));\r\n }\r\n\r\n async createProduct(product: MerchantProduct): Promise<MerchantProduct> {\r\n const newProduct = await this.request<MerchantProduct>(`${baseProductEndpoint}`, 'POST', product);\r\n return this.createMerchantProductProxy(newProduct);\r\n }\r\n\r\n async updateProduct(product: MerchantProduct): Promise<MerchantProduct> {\r\n const updatedProduct = await this.request<MerchantProduct>(`${baseProductEndpoint}`, 'PUT', product);\r\n return this.createMerchantProductProxy(updatedProduct);\r\n }\r\n\r\n async deleteProduct(productReference: string): Promise<void> {\r\n return this.request<void>(`${baseProductEndpoint}/${productReference}`, 'DELETE');\r\n }\r\n\r\n groupProductsByName(products: any) {\r\n return products.reduce((groups, product) => {\r\n const [groupName, productName] = product.name.split('|').map((s) => s.trim());\r\n\r\n if (!groups[groupName]) {\r\n groups[groupName] = [];\r\n }\r\n\r\n groups[groupName].push({\r\n ...product,\r\n name: productName || product.name,\r\n });\r\n\r\n return groups;\r\n }, {});\r\n }\r\n\r\n // Merchant\r\n async getMerchant(): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'GET');\r\n }\r\n\r\n async createMerchant(request: Merchant): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'POST', request);\r\n }\r\n\r\n async updateMerchant(request: Merchant): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'PUT', request);\r\n }\r\n\r\n async getMerchantAgreement(): Promise<string> {\r\n return this.request<string>(`${baseMerchantEndpoint}/agreement`, 'GET');\r\n }\r\n\r\n async acceptMerchantAgreement(): Promise<void> {\r\n return this.request<void>(`${baseMerchantEndpoint}/agreement/accept`, 'POST');\r\n }\r\n\r\n // Verification\r\n async verifyMobileNumber(msisdn?: string): Promise<void> {\r\n let cleanMsisdn = '';\r\n if (msisdn) {\r\n cleanMsisdn = msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, '');\r\n }\r\n\r\n return this.request<void>(`${baseOtpEndpoint}/${cleanMsisdn}`, 'POST');\r\n }\r\n\r\n async validateOtp(otpValue: string, msisdn?: string): Promise<OtpVerificationResponse> {\r\n const request: OtpVerificationRequest = {\r\n otpValue: otpValue,\r\n };\r\n\r\n let cleanMsisdn = '';\r\n if (msisdn) {\r\n cleanMsisdn = msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, '');\r\n }\r\n\r\n const verificationResponse = await this.request<OtpVerificationResponse>(`${baseOtpEndpoint}/validate/${cleanMsisdn}`, 'POST', request);\r\n\r\n ApiTokens.accessToken = verificationResponse.accessToken || ApiTokens.accessToken;\r\n\r\n return Promise.resolve(verificationResponse);\r\n }\r\n\r\n async validateMerchantName(name: string): Promise<boolean> {\r\n const request: MerchantNameVerificationRequest = {\r\n merchantName: name,\r\n };\r\n\r\n const response = await this.request<MerchantNameVerificationResponse>(`${baseMerchantEndpoint}/validate/name`, 'POST', request);\r\n\r\n if (response.accessToken) {\r\n ApiTokens.accessToken = response.accessToken;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return Promise.resolve(false);\r\n }\r\n\r\n // User\r\n async createUser(username: string, password: string, mobileNumber?: string, emailAddress?: string): Promise<TokenResponse> {\r\n const request: MerchantLoginCredentials = {\r\n username: username,\r\n password: password,\r\n mobileNumber: mobileNumber,\r\n emailAddress: emailAddress,\r\n isLockedOut: false,\r\n };\r\n\r\n const tokenResponse = await this.request<TokenResponse>(baseUserEndpoint, 'POST', request);\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async switchToMerchant(merchantReference: string): Promise<TokenResponse> {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseUserEndpoint}/switch/${merchantReference}`, 'POST');\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken;\r\n ApiTokens.refreshToken = tokenResponse.refreshToken;\r\n\r\n return Promise.resolve(tokenResponse);\r\n }\r\n\r\n async getUserMerchants(): Promise<BasicMerchant[]> {\r\n return this.request<BasicMerchant[]>(baseUserEndpoint, 'GET');\r\n }\r\n\r\n // Terminal / POS\r\n async setupPosTerminal(terminalReference: string, merchantSource?: string, deviceInformation?: Device): Promise<TerminalSetup> {\r\n const response = await this.request<TerminalSetup>(`${basePosEndpoint}/setup/${terminalReference}/${merchantSource}`, 'POST', deviceInformation);\r\n\r\n ApiTokens.accessToken = response.checkAccessToken || ApiTokens.accessToken;\r\n\r\n return Promise.resolve(response);\r\n }\r\n\r\n async getPosTerminalConfiguration(terminalReference: string, merchantSource?: string): Promise<TerminalConfiguration> {\r\n const configResponse = await this.request<TerminalConfiguration>(`${basePosEndpoint}/config/${terminalReference}/${merchantSource}`, 'GET');\r\n\r\n ApiTokens.accessToken = configResponse.accessToken || ApiTokens.accessToken;\r\n\r\n return Promise.resolve(configResponse);\r\n }\r\n\r\n async getTerminalPaymentQrCodes(amountInCents: number, currency: Currency): Promise<TerminalPaymentQrCodes> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n return this.request<TerminalPaymentQrCodes>(`${basePosEndpoint}/qr?amount=${amountInCents}&currency=${currencyIsoCode}`, 'GET');\r\n }\r\n\r\n async getTerminalPaymentQrCodeUrls(amountInCents: number, currency: Currency): Promise<TerminalPaymentQrCodeUrls> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n return this.request<TerminalPaymentQrCodeUrls>(`${basePosEndpoint}/qr-urls?amount=${amountInCents}&currency=${currencyIsoCode}`, 'GET');\r\n }\r\n\r\n // Files\r\n async uploadFile(request: MerchantFile): Promise<void> {\r\n return this.request<void>(`${baseMerchantEndpoint}/file/upload`, 'POST', request);\r\n }\r\n}\r\n","import { Token } from './types';\r\n\r\n// https://github.com/structured-log/structured-log/blob/7c05f737316f62f32775b2fd2f0d69fb207978bd/src/messageTemplate.ts\r\nconst tokenizer = /\\{@?\\w+}/g;\r\n\r\nexport class MessageTemplate {\r\n raw: string;\r\n private tokens: Token[];\r\n\r\n constructor(messageTemplate: string) {\r\n if (messageTemplate === null || !messageTemplate.length) {\r\n throw new Error('Argument \"messageTemplate\" is required.');\r\n }\r\n\r\n this.raw = messageTemplate;\r\n this.tokens = this.tokenize(messageTemplate);\r\n }\r\n\r\n render(properties?: Object): string {\r\n if (!this.tokens.length) {\r\n return this.raw;\r\n }\r\n\r\n properties = properties || {};\r\n const result = [];\r\n\r\n for (var i = 0; i < this.tokens.length; ++i) {\r\n const token = this.tokens[i];\r\n if (typeof token.name === 'string') {\r\n if (properties.hasOwnProperty(token.name)) {\r\n result.push(this.toText(properties[token.name]));\r\n } else {\r\n result.push(token.raw);\r\n }\r\n } else {\r\n result.push(token.text);\r\n }\r\n }\r\n\r\n return result.join('');\r\n }\r\n\r\n bindProperties(positionalArgs: any): Object {\r\n const result = {};\r\n let nextArg = 0;\r\n\r\n for (var i = 0; i < this.tokens.length && nextArg < positionalArgs.length; ++i) {\r\n const token = this.tokens[i];\r\n if (typeof token.name === 'string') {\r\n let p = positionalArgs[nextArg];\r\n result[token.name] = this.capture(p, token.destructure);\r\n nextArg++;\r\n }\r\n }\r\n\r\n while (nextArg < positionalArgs.length) {\r\n const arg = positionalArgs[nextArg];\r\n if (typeof arg !== 'undefined') {\r\n result['a' + nextArg] = this.capture(arg);\r\n }\r\n nextArg++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private tokenize(template: string): Token[] {\r\n const tokens = [];\r\n\r\n let result;\r\n let textStart;\r\n\r\n while ((result = tokenizer.exec(template)) !== null) {\r\n if (result.index !== textStart) {\r\n tokens.push({ text: template.slice(textStart, result.index) });\r\n }\r\n\r\n let destructure = false;\r\n\r\n let token = result[0].slice(1, -1);\r\n if (token.indexOf('@') === 0) {\r\n token = token.slice(1);\r\n destructure = true;\r\n }\r\n\r\n tokens.push({\r\n name: token,\r\n destructure,\r\n raw: result[0],\r\n });\r\n\r\n textStart = tokenizer.lastIndex;\r\n }\r\n\r\n if (textStart >= 0 && textStart < template.length) {\r\n tokens.push({ text: template.slice(textStart) });\r\n }\r\n\r\n return tokens;\r\n }\r\n\r\n private toText(property: any): string {\r\n if (typeof property === 'undefined') {\r\n return 'undefined';\r\n }\r\n\r\n if (property === null) {\r\n return 'null';\r\n }\r\n\r\n if (typeof property === 'string') {\r\n return property;\r\n }\r\n\r\n if (typeof property === 'number') {\r\n return property.toString();\r\n }\r\n\r\n if (typeof property === 'boolean') {\r\n return property.toString();\r\n }\r\n\r\n if (typeof property.toISOString === 'function') {\r\n return property.toISOString();\r\n }\r\n\r\n if (typeof property === 'object') {\r\n let s = JSON.stringify(property);\r\n if (s.length > 70) {\r\n s = s.slice(0, 67) + '...';\r\n }\r\n\r\n return s;\r\n }\r\n\r\n return property.toString();\r\n }\r\n\r\n private capture(property: any, destructure?: boolean): Object {\r\n if (typeof property === 'function') {\r\n return property();\r\n }\r\n\r\n if (typeof property === 'object') {\r\n // null value will be automatically stringified as \"null\", in properties it will be as null\r\n // otherwise it will throw an error\r\n if (property === null) {\r\n return property;\r\n }\r\n\r\n // Could use instanceof Date, but this way will be kinder\r\n // to values passed from other contexts...\r\n if (destructure || typeof property.toISOString === 'function') {\r\n return property;\r\n }\r\n\r\n return property.toString();\r\n }\r\n\r\n return property;\r\n }\r\n}\r\n","import { AxiosInstance } from 'axios';\r\nimport { BaseApi } from '../baseApi';\r\nimport { MessageTemplate } from './messageTemplate';\r\nimport { LogLevel, LogMessage } from './types';\r\n\r\nconst baseLogEndpoint = '/v1/logging';\r\n\r\nexport class Log extends BaseApi {\r\n private readonly messageBatch: LogMessage[];\r\n private readonly batchSize: number;\r\n private readonly batchInterval: number;\r\n private readonly maxQueueSize: number;\r\n\r\n private batchTimeout = null;\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false, logBatchSize: number = 100, logBatchInterval: number = 60000) {\r\n super(axiosInstance, consoleLogging);\r\n\r\n this.messageBatch = [];\r\n this.batchSize = logBatchSize;\r\n this.batchInterval = logBatchInterval;\r\n this.maxQueueSize = Math.min(logBatchSize * 10, 1000);\r\n\r\n if (this.batchInterval > 0) {\r\n this.submitMessageBatch(true);\r\n }\r\n }\r\n\r\n flush(): Promise<void> {\r\n return this.submitMessageBatch(false);\r\n }\r\n\r\n fatal(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Critical, template, properties);\r\n }\r\n\r\n error(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Error, template, properties);\r\n }\r\n\r\n warn(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Warning, template, properties);\r\n }\r\n\r\n info(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Information, template, properties);\r\n }\r\n\r\n debug(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Debug, template, properties);\r\n }\r\n\r\n trace(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Trace, template, properties);\r\n }\r\n\r\n private log(level: LogLevel, template: string, properties: any[]): string {\r\n const msg: LogMessage = {\r\n timestamp: new Date().toJSON(),\r\n level: level,\r\n template: template,\r\n properties: properties,\r\n };\r\n\r\n const messageTemplate = new MessageTemplate(msg.template);\r\n const output = messageTemplate.render(messageTemplate.bindProperties(msg.properties));\r\n\r\n if (this.consoleLogging) {\r\n switch (level) {\r\n case LogLevel.Critical:\r\n console.error(output);\r\n break;\r\n\r\n case LogLevel.Error:\r\n console.error(output);\r\n break;\r\n\r\n case LogLevel.Warning:\r\n console.warn(output);\r\n break;\r\n\r\n case LogLevel.Information:\r\n console.info(output);\r\n break;\r\n\r\n case LogLevel.Debug:\r\n console.debug(output);\r\n break;\r\n\r\n case LogLevel.Trace:\r\n console.debug(output);\r\n break;\r\n\r\n default:\r\n console.log(output);\r\n break;\r\n }\r\n }\r\n\r\n if (this.batchSize > 0 || this.batchInterval > 0) {\r\n this.messageBatch.push(msg);\r\n\r\n if (this.batchSize > 0 && this.messageBatch.length >= this.batchSize) {\r\n this.submitMessageBatch(true);\r\n }\r\n }\r\n\r\n return new Date().toISOString() + (' [' + LogLevel[level].toUpperCase() + '] ') + output;\r\n }\r\n\r\n private submitMessageBatch(loop: boolean): Promise<void> {\r\n clearTimeout(this.batchTimeout);\r\n\r\n let promise = Promise.resolve();\r\n\r\n if (this.messageBatch.length) {\r\n const messages = this.messageBatch.splice(0, this.batchSize);\r\n\r\n if (messages.length > 0) {\r\n if (this.consoleLogging) {\r\n console.info('Sending %d log messages in a batch', messages.length);\r\n }\r\n\r\n promise = this.request<void>(baseLogEndpoint, 'POST', messages).catch((_) => {\r\n this.messageBatch.unshift(...messages);\r\n\r\n // Keep the total in the batch small to keep memory low.\r\n if (this.messageBatch.length > this.maxQueueSize) {\r\n this.messageBatch.splice(0, this.messageBatch.length - this.maxQueueSize);\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.warn('Failed to send log messages, the batch size is %d', this.messageBatch.length);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (loop && this.batchInterval > 0) {\r\n this.batchTimeout = setTimeout(() => this.submitMessageBatch(true), this.batchInterval);\r\n }\r\n\r\n return promise;\r\n }\r\n}\r\n","import { Country } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\nimport { IdentityDocumentType } from '../lookups/types';\r\n\r\n/** Model to hold address details. */\r\nexport class Address {\r\n /** Gets the address reference. */\r\n public reference?: string;\r\n /** Gets or sets the address external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** Gets or sets the type of address the details are referring to. */\r\n public addressType: AddressType;\r\n /** Gets or sets first line of the address (required). */\r\n public addressLine1: string;\r\n /** Gets or sets second line of the address. */\r\n public addressLine2?: string;\r\n /** Gets or sets third line of the address. */\r\n public addressLine3?: string;\r\n /** Gets or sets postal code of the address. */\r\n public postalCode?: string;\r\n /** Gets or sets 3 character ISO country code the address resides in. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets city the address resides in (required). */\r\n public city: string;\r\n /** Gets or sets state/province the address resides in. */\r\n public state?: string;\r\n /** Gets or sets additional location information for the address so that it can be pinned on a map. */\r\n public location?: Location;\r\n /** Gets or sets the description of the address. */\r\n public description?: string;\r\n /** Gets a single-line formatted string of the address. */\r\n public formatted: string;\r\n public isActive: boolean;\r\n}\r\nexport enum AddressType {\r\n MAIN = 'MAIN',\r\n POST = 'POST',\r\n BILL = 'BILL',\r\n SHIP = 'SHIP',\r\n}\r\n/** Model to hold account balance details. */\r\nexport class Balance {\r\n public currency: Currency;\r\n public availableAmountInCents?: number;\r\n public currentAmountInCents?: number;\r\n}\r\nexport enum BankAccountType {\r\n SAVINGS = 'SAVINGS',\r\n CURRENT = 'CURRENT',\r\n FIXED = 'FIXED',\r\n MONEYMARKET = 'MONEYMARKET',\r\n CODA = 'CODA',\r\n BOND = 'BOND',\r\n}\r\n/** Model to capture generic contact/lead data. */\r\nexport class ContactDetails {\r\n public details: { [key: string]: string };\r\n}\r\nexport class FaceCheckResult {\r\n public faceCount: number;\r\n public containsNoise: boolean;\r\n public isLowQuality: boolean;\r\n public isOverExposed: boolean;\r\n public isUnderExposed: boolean;\r\n public isBlurry: boolean;\r\n public isWearingMask: boolean;\r\n public foreheadNotIncluded: boolean;\r\n public eyesNotIncluded: boolean;\r\n public mouthNotIncluded: boolean;\r\n public faceLeft?: number;\r\n public faceTop?: number;\r\n public faceWidth?: number;\r\n public faceHeight?: number;\r\n public problems: string[];\r\n}\r\n/** Model to hold identification details. */\r\nexport class IdentityDocument {\r\n /** Gets or sets the identification document reference. */\r\n public reference?: string;\r\n /** Gets or sets the type of identification document submitted by the consumer. */\r\n public identityDocumentType: IdentityDocumentType;\r\n /** Gets or sets the 3 character ISO country code where the document was issued. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets the encrypted identification number. */\r\n public identityNumber: string;\r\n /** Gets or sets the place of issuance. */\r\n public placeOfIssuance?: string;\r\n /** Gets or sets the date at which the identification document was issued. */\r\n public effectiveDate?: Date;\r\n /** Gets or sets the date at which the identification document expires. */\r\n public expiryDate?: Date;\r\n}\r\n/** Model to hold location data. */\r\nexport class Location {\r\n /** A latitude value expressed as a 64 bit floating point number (required). */\r\n public latitude: number;\r\n /** A longitude value expressed as a 64 bit floating point number (required). */\r\n public longitude: number;\r\n /** The time zone for this location. */\r\n public timeZone?: string;\r\n /** The description of this location (if available). */\r\n public description?: string;\r\n}\r\nexport class NameAndReference {\r\n public name: string;\r\n public reference: string;\r\n public externalReference: string;\r\n}\r\n/** Model to hold API endpoint and access token for an environment. */\r\nexport class SwitchEnvironmentInfo {\r\n public name: string;\r\n public accessToken: string;\r\n public apiBaseUrl: string;\r\n}\r\n","import { Country } from '../lookups/types';\r\nimport { Gender } from '../lookups/types';\r\nimport { Language } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\nimport { BankAccountType } from '../common/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { LoginCredentials } from '../authentication/types';\r\nimport { IdentityDocument } from '../common/types';\r\nimport { Device } from '../devices/types';\r\nimport { Address } from '../common/types';\r\nimport { CardHolder } from '../payments/types';\r\nimport { ConsumerFileType } from '../lookups/types';\r\nimport { InsurancePolicyStatus } from '../lookups/types';\r\nimport { LoanStatus } from '../lookups/types';\r\nimport { KycProvider } from '../lookups/types';\r\nimport { KycStatus } from '../lookups/types';\r\nimport { KycVerificationType } from '../lookups/types';\r\n\r\n/** Model to hold basic consumer details. */\r\nexport class BasicConsumer {\r\n /** Gets or sets the consumer reference. */\r\n public reference?: string;\r\n /** Gets or sets the consumer external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** Gets or sets the current originator source of the consumer. */\r\n public source: string;\r\n /** Gets the user reference associated with the user. */\r\n public userReference?: string;\r\n /** Gets or sets the first name of the consumer (required). */\r\n public firstName?: string;\r\n /** Gets or sets the last name (surname) of the consumer (required if IdentityNumber is not supplied). */\r\n public lastName?: string;\r\n /** Gets or sets the middle name of the consumer. */\r\n public middleName?: string;\r\n /** Gets or sets the email address for the consumer. */\r\n public emailAddress?: string;\r\n /** Gets or sets the mobile number for the consumer. */\r\n public mobileNumber?: string;\r\n /** Gets or sets 3 character ISO country code the consumer resides in. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets the date of birth of the consumer. */\r\n public dateOfBirth?: Date;\r\n /** Gets or sets the gender of the consumer. */\r\n public gender?: Gender;\r\n /** Gets or sets the language code preference of the consumer. */\r\n public preferredLanguage: Language;\r\n /** Gets the KYC summary status. */\r\n public kycStatusSummary: KycStatusSummary;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold consumer beneficiary details. */\r\nexport class Beneficiary {\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific beneficiary. */\r\n public reference?: string;\r\n /** Gets or sets the beneficiary external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** The beneficiary name. */\r\n public name: string;\r\n /** The contact number for this beneficiary. */\r\n public contactNumber?: string;\r\n /** The date and time of the last transaction made to this beneficiary account. */\r\n public lastTransactionDate?: Date;\r\n /** The amount in cents of the last transaction made to this beneficiary account. */\r\n public lastTransactionAmountInCents?: number;\r\n /** The currency of the last transaction made to this beneficiary account. */\r\n public lastTransactionCurrency?: Currency;\r\n /** A list of bank accounts associated with a beneficiary. */\r\n public bankAccounts: BeneficiaryBankAccount[];\r\n /** A list of mobile wallets associated with a beneficiary. */\r\n public mobileWallets: BeneficiaryMobileWallet[];\r\n /** A list of cards associated with a beneficiary. */\r\n public cards: BeneficiaryCard[];\r\n /** A list of generic accounts (mobile numbers, meter numbers, etc) associated with a beneficiary. */\r\n public genericAccounts: BeneficiaryGenericAccount[];\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a bank account beneficiary. */\r\nexport class BeneficiaryBankAccount {\r\n /** The bank account token that was generated by the system. */\r\n public token?: string;\r\n public accountNumber: string;\r\n /** The bank account type. */\r\n public bankAccountType: BankAccountType;\r\n public bankAccountTypeName: string;\r\n public bank: Bank;\r\n public bankName: string;\r\n /** The branch code associated with the bank which holds the bank account. */\r\n public routingCode?: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a bank account beneficiary. */\r\nexport class BeneficiaryCard {\r\n /** The bank account token that was generated by the system. */\r\n public token?: string;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n /** The name of the card holder as printed on the card. */\r\n public nameOnCard: string;\r\n /** The month in which the card expires. */\r\n public expiryMonth: Month;\r\n /** The year in which the card expires. */\r\n public expiryYear: number;\r\n public cardIssuer: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a beneficiary generic account (mobile number, meter number, etc). */\r\nexport class BeneficiaryGenericAccount {\r\n /** The account number (can be a mobile number, meter number, etc). */\r\n public accountNumber: string;\r\n /** The type of generic account. */\r\n public genericAccountType: GenericAccountType;\r\n public genericAccountTypeName: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a mobile money beneficiary. */\r\nexport class BeneficiaryMobileWallet {\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public mobileWalletOperatorName: string;\r\n public createdDate: Date;\r\n /** A globally unique reference (UUID) generated by the system internally to identify a specific beneficiary account. */\r\n public reference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The details which add sufficient context behind the money transfer to the beneficiary. */\r\n public recipientReference?: string;\r\n /** The details which add sufficient context behind the money transfer to the consumer. */\r\n public senderReference?: string;\r\n /** A flag indicating whether the consumer requires a notification to be sent to the beneficiary after a successful money transfer. */\r\n public sendProofOfPayment: boolean;\r\n /** The email address for the beneficiary. */\r\n public proofOfPaymentEmailAddress?: string;\r\n /** The mobile number for the beneficiary. */\r\n public proofOfPaymentMobileNumber?: string;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold consumer card settings and preferences. */\r\nexport class CardSettings {\r\n /** Gets or sets a value indicating whether tap to pay functionality is allowed for this card. */\r\n public allowTapToPay: boolean;\r\n /** Gets or sets a value indicating whether a PIN should always be requested for transactions with this card. */\r\n public alwaysAskForPin: boolean;\r\n}\r\n/** Model to hold detailed consumer details. */\r\nexport class Consumer {\r\n /** The date and time this consumer record was created. */\r\n public createdDate: Date;\r\n /** Gets or sets the login credentials that this consumer can use to access their data. */\r\n public loginCredentials?: LoginCredentials;\r\n /** Gets or sets the preferred name of the consumer. */\r\n public preferredName?: string;\r\n /** Gets or sets the full name of a consumer's next of kin. */\r\n public fullNameOfNextOfKin?: string;\r\n /** Gets or sets the contact number for a consumer's next of kin. */\r\n public contactNumberForNextOfKin?: string;\r\n /** Gets or sets an alternate contact number for the consumer. */\r\n public alternateContactNumber?: string;\r\n /** Gets or sets the invitation code for the consumer. */\r\n public invitationCode?: string;\r\n /** Gets or sets a flag to indicate whether registration details have been captured by the consumer themselves. */\r\n public isRegistrationComplete: boolean;\r\n /** Gets or sets a flag to indicate whether the consumer has verified their email address details yet or not. */\r\n public isEmailVerified: boolean;\r\n /** Gets or sets a flag to indicate whether the consumer has verified their mobile number yet or not. */\r\n public isMobileNumberVerified: boolean;\r\n /** Gets the available identification documentation information for the consumer. */\r\n public identityDocuments: IdentityDocument[];\r\n /** Gets a list of KYC lookups related to the consumer. */\r\n public kycLookupResults: KycLookupResult[];\r\n /** Gets a list of files related to the consumer. */\r\n public files: ConsumerFile[];\r\n /** Gets a list of consumer devices. */\r\n public devices: Device[];\r\n /** Gets the list of available addresses for the consumer. */\r\n public addresses: Address[];\r\n /** A collection of available beneficiaries associated with the consumer. */\r\n public beneficiaries: Beneficiary[];\r\n /** A collection of all financial institution accounts associated with the consumer. */\r\n public accounts: ConsumerAccounts;\r\n /** Gets the attributes. */\r\n public attributes: ConsumerAttributeValue[];\r\n public rewardPointsInfo?: RewardPointsInfo;\r\n /** Gets or sets the consumer reference. */\r\n public reference?: string;\r\n /** Gets or sets the consumer external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** Gets or sets the current originator source of the consumer. */\r\n public source: string;\r\n /** Gets the user reference associated with the user. */\r\n public userReference?: string;\r\n /** Gets or sets the first name of the consumer (required). */\r\n public firstName?: string;\r\n /** Gets or sets the last name (surname) of the consumer (required if IdentityNumber is not supplied). */\r\n public lastName?: string;\r\n /** Gets or sets the middle name of the consumer. */\r\n public middleName?: string;\r\n /** Gets or sets the email address for the consumer. */\r\n public emailAddress?: string;\r\n /** Gets or sets the mobile number for the consumer. */\r\n public mobileNumber?: string;\r\n /** Gets or sets 3 character ISO country code the consumer resides in. */\r\n public countryIsoCode: Country;\r\n /** Gets or sets the date of birth of the consumer. */\r\n public dateOfBirth?: Date;\r\n /** Gets or sets the gender of the consumer. */\r\n public gender?: Gender;\r\n /** Gets or sets the language code preference of the consumer. */\r\n public preferredLanguage: Language;\r\n /** Gets the KYC summary status. */\r\n public kycStatusSummary: KycStatusSummary;\r\n public isActive: boolean;\r\n}\r\nexport class ConsumerAccounts {\r\n /** A list of bank accounts associated with a consumer. */\r\n public bankAccounts: ConsumerBankAccount[];\r\n /** A list of mobile money / wallet accounts associated with a consumer. */\r\n public mobileWallets: ConsumerMobileWallet[];\r\n /** A list of loan accounts associated with a consumer. */\r\n public loanAccounts: ConsumerLoanAccount[];\r\n /** A list of insurance policies associated with a consumer. */\r\n public insurancePolicies: ConsumerInsurancePolicy[];\r\n /** A list of generic accounts (mobile numbers, meter numbers, etc) associated with a consumer. */\r\n public genericAccounts: ConsumerGenericAccount[];\r\n /** A list of cards associated with a consumer. */\r\n public cards: ConsumerCard[];\r\n}\r\nexport enum ConsumerAttribute {\r\n VisaPAN = 1,\r\n MasterCardPAN = 2,\r\n RegistrationInvitationCode = 3,\r\n GMoneyWalletNumber = 4,\r\n LinkedGcbBankAccountReferences = 5,\r\n MarketingConsent = 6,\r\n CommunicationOutsideRegularHoursConsent = 7,\r\n PrimarySourceOfFunds = 8,\r\n}\r\n/** Model to hold various attributes about a consumer. */\r\nexport class ConsumerAttributeValue {\r\n public name?: string;\r\n public attribute: ConsumerAttribute;\r\n public value: string;\r\n}\r\nexport class ConsumerBankAccount {\r\n /** The bank account token that was generated by the system. */\r\n public token?: string;\r\n public accountNumber: string;\r\n /** The bank account type. */\r\n public bankAccountType?: BankAccountType;\r\n public bankAccountTypeName?: string;\r\n public bank: Bank;\r\n public bankName: string;\r\n public branchName?: string;\r\n /** The branch code associated with the bank which holds the bank account. */\r\n public routingCode?: string;\r\n public linkedCardReferences: string[];\r\n /** Gets or sets the card settings and preferences. */\r\n public cardSettings?: CardSettings;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** Gets or sets the external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The name of the account. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerCard {\r\n /** Additional customer information to facilitate the card payment. */\r\n public cardHolder: CardHolder;\r\n /** The card token that was generated by the system. */\r\n public token?: string;\r\n public cardIssuer: string;\r\n /** The full card number. */\r\n public cardNumber: string;\r\n /** The name of the card holder as printed on the card. */\r\n public nameOnCard: string;\r\n /** The month in which the card expires. */\r\n public expiryMonth: Month;\r\n /** The year in which the card expires. */\r\n public expiryYear: number;\r\n /** Gets the list of linked bank account references. */\r\n public linkedBankAccountReferences: string[];\r\n /** Gets or sets the card settings and preferences. */\r\n public cardSettings?: CardSettings;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** Gets or sets the external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The name of the account. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerFile {\r\n public fileType: ConsumerFileType;\r\n public kycResults: KycFileResult[];\r\n public reference?: string;\r\n public yourReference?: string;\r\n public fileName: string;\r\n public mimeType: string;\r\n public base64Data?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public isActive: boolean;\r\n}\r\n/** Model to hold the unique details for a generic account (mobile number, meter number, etc). */\r\nexport class ConsumerGenericAccount {\r\n /** The account number (can be a mobile number, meter number, etc). */\r\n public accountNumber: string;\r\n /** The type of generic account. */\r\n public genericAccountType: GenericAccountType;\r\n public genericAccountTypeName: string;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** Gets or sets the external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The name of the account. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerInsurancePolicy {\r\n public policyNumber: string;\r\n public coverAmountInCents: number;\r\n public premiumAmountInCents: number;\r\n public description?: string;\r\n public beneficiaries: ConsumerInsurancePolicyBeneficiary[];\r\n public status: InsurancePolicyStatus;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** Gets or sets the external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The name of the account. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerInsurancePolicyBeneficiary {\r\n public reference?: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public contactNumber?: string;\r\n public dateOfBirth?: Date;\r\n public relationship?: string;\r\n public percentage: number;\r\n}\r\nexport class ConsumerLoanAccount {\r\n public contractNumber: string;\r\n public loanType: string;\r\n public loanSource: string;\r\n public status: LoanStatus;\r\n public originalCapitalInCents: number;\r\n public settlementAmountInCents: number;\r\n public outstandingBalanceInCents: number;\r\n public installmentAmountInCents: number;\r\n public arrearsAmountInCents: number;\r\n public installmentsRemaining: number;\r\n public annualInterestRatePercentage: number;\r\n public nextInstallmentDate?: Date;\r\n public lastPaymentDate?: Date;\r\n public startDate: Date;\r\n public endDate: Date;\r\n public term: number;\r\n /** Whether the loan is currently in arrears (past due). */\r\n public isInArrears: boolean;\r\n /** Whether the loan has been fully paid. */\r\n public isFullyPaid: boolean;\r\n /** Percentage of loan that has been repaid. */\r\n public repaymentPercentage: number;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** Gets or sets the external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The name of the account. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class ConsumerMobileWallet {\r\n /**\r\n * Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n * This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n */\r\n public msisdn: string;\r\n /** The mobile wallet operator that owns the mobile money account. */\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public createdDate: Date;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer account. */\r\n public reference?: string;\r\n /** Gets or sets the external reference if linked to another system. */\r\n public yourReference?: string;\r\n /** A 3 character ISO currency code. */\r\n public currency: Currency;\r\n /** The name of the account. */\r\n public accountName: string;\r\n public isActive: boolean;\r\n public iconUrl?: string;\r\n public linkedFileReferences: string[];\r\n}\r\nexport class Feedback {\r\n public description?: string;\r\n}\r\nexport enum GenericAccountType {\r\n None = 'None',\r\n MobileNumber = 'MobileNumber',\r\n WaterMeter = 'WaterMeter',\r\n ElectricityMeter = 'ElectricityMeter',\r\n PayShap = 'PayShap',\r\n DStv = 'DStv',\r\n EasyPay = 'EasyPay',\r\n}\r\n/** The KYC file result. */\r\nexport class KycFileResult {\r\n /** Gets or sets the unique identifier for the KYC service provider used to retrieve the consumer KYC data. */\r\n public provider: KycProvider;\r\n /** Gets or sets the status of the particular KYC verification. */\r\n public status: KycStatus;\r\n /** Gets or sets the consumer KYC verification type. */\r\n public verificationType: KycVerificationType;\r\n /** Gets or sets the KYC provider reference associated with the KYC Lookup. */\r\n public providerReference?: string;\r\n /** Gets the created date of the KYC lookup result. */\r\n public createdDate: Date;\r\n /** Gets or sets the last date and time of when the KYC data was updated. */\r\n public lastUpdatedDate?: Date;\r\n}\r\n/** The KYC lookup result. */\r\nexport class KycLookupResult {\r\n /** Gets or sets the unique identifier for the KYC service provider used to retrieve the consumer KYC data. */\r\n public provider: KycProvider;\r\n /** Gets or sets the status of the particular KYC verification. */\r\n public status: KycStatus;\r\n /** Gets or sets the consumer KYC verification type. */\r\n public verificationType: KycVerificationType;\r\n /** Gets or sets the KYC provider reference associated with the KYC Lookup. */\r\n public providerReference?: string;\r\n /** Gets the created date of the KYC lookup result. */\r\n public createdDate: Date;\r\n /** Gets or sets the last date and time of when the KYC data was updated. */\r\n public lastUpdatedDate?: Date;\r\n}\r\nexport enum KycStatusSummary {\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n Rejected = 'Rejected',\r\n}\r\n/** Model to hold consumer message details. */\r\nexport class Message {\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific message. */\r\n public reference?: string;\r\n /** A globally unique transaction reference (UUID) generated by the system internally to identify a specific consumer. */\r\n public consumerReference: string;\r\n /** A short text string which briefly summarizes the message details. */\r\n public messageSummary: string;\r\n /** The full consumer message text. */\r\n public messageDetail: string;\r\n /** The date and time this consumer message was created. */\r\n public createdDate: Date;\r\n /** A flag indicating whether the message has been deleted or not. */\r\n public isDeleted: boolean;\r\n}\r\nexport class RewardPointsInfo {\r\n public pointsBalance: number;\r\n public rewardTier: number;\r\n public creditTransactionCount: number;\r\n}\r\n/** Request to stop a consumer card. */\r\nexport class StopCardRequest {\r\n /** The card reference to stop. */\r\n public cardReference?: string;\r\n /** The reason for stopping the card. */\r\n public reason?: string;\r\n}\r\n","export class Device {\r\n public createdDate: Date;\r\n public lastUsedDate?: Date;\r\n public reference?: string;\r\n public yourReference?: string;\r\n public platform: DevicePlatform;\r\n public deviceType?: string;\r\n public brand?: string;\r\n public model?: string;\r\n public serialNumber?: string;\r\n public operatingSystemVersion?: string;\r\n public softwareVersion?: string;\r\n public pushNotificationToken?: string;\r\n}\r\nexport enum DevicePlatform {\r\n Unknown = 'Unknown',\r\n Android = 'Android',\r\n iOS = 'iOS',\r\n Web = 'Web',\r\n}\r\n","import { MerchantCategory } from '../lookups/types';\r\nimport { Country } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\nimport { LoginCredentials } from '../authentication/types';\r\nimport { Gender } from '../lookups/types';\r\nimport { Address } from '../common/types';\r\nimport { IdentityDocument } from '../common/types';\r\nimport { KybProvider } from '../lookups/types';\r\nimport { KybStatus } from '../lookups/types';\r\nimport { Language } from '../lookups/types';\r\nimport { Device } from '../devices/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { MerchantFileType } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { ProductType } from '../lookups/types';\r\nimport { DayOfWeek } from '../lookups/types';\r\nimport { DevicePlatform } from '../devices/types';\r\nimport { QrCodeType } from '../lookups/types';\r\n\r\nexport class AdditionalTerminalReference {\r\n public terminalType: TerminalType;\r\n public reference: string;\r\n}\r\nexport class BasicEmployee {\r\n public reference?: string;\r\n public yourReference?: string;\r\n public title?: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public employeeNumber: number;\r\n public passcode?: string;\r\n public isActive: boolean;\r\n public posPermissions: PosPermissions;\r\n}\r\nexport class BasicMerchant {\r\n public reference?: string;\r\n public userReference?: string;\r\n public yourReference?: string;\r\n public source: string;\r\n public name: string;\r\n public categoryCode: MerchantCategory;\r\n public category: string;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public countryIsoCode: Country;\r\n public currency: Currency;\r\n public kybStatusSummary: KybStatusSummary;\r\n public shortCode?: number;\r\n public isActive: boolean;\r\n}\r\nexport class Business {\r\n public reference?: string;\r\n public parentBusinessReference?: string;\r\n public createdDate: Date;\r\n public yourReference?: string;\r\n public source: string;\r\n public name: string;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public phoneNumber?: string;\r\n public isEmailVerified: boolean;\r\n public isMobileNumberVerified: boolean;\r\n public isActive: boolean;\r\n}\r\nexport class Employee {\r\n public createdDate: Date;\r\n public loginCredentials?: LoginCredentials;\r\n public userReference?: string;\r\n public isOwner: boolean;\r\n public dateOfBirth?: Date;\r\n public gender?: Gender;\r\n public countryIsoCode?: Country;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public profileImage?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n public notificationSettings: EmployeeNotificationEventSetting[];\r\n public addresses: Address[];\r\n public identityDocuments: IdentityDocument[];\r\n public reference?: string;\r\n public yourReference?: string;\r\n public title?: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public employeeNumber: number;\r\n public passcode?: string;\r\n public isActive: boolean;\r\n public posPermissions: PosPermissions;\r\n}\r\nexport enum EmployeeNotificationEvent {\r\n PaymentSuccessful = 1,\r\n PaymentFailed = 2,\r\n}\r\nexport class EmployeeNotificationEventSetting {\r\n public event: EmployeeNotificationEvent;\r\n public description: string;\r\n public sendEmail: boolean;\r\n public sendSms: boolean;\r\n public terminalReferences: string[];\r\n}\r\nexport enum FuelPurchaseMethod {\r\n ByAmount = 'ByAmount',\r\n ByQuantity = 'ByQuantity',\r\n ByAmountAndQuantity = 'ByAmountAndQuantity',\r\n}\r\nexport class HostedPaymentOptions {\r\n public cardNotPresentMID?: number;\r\n public isVisaEnabled: boolean;\r\n public isMastercardEnabled: boolean;\r\n public isAmericanExpressEnabled: boolean;\r\n public isDinersEnabled: boolean;\r\n public settlementTime: SettlementTime;\r\n}\r\nexport enum Industry {\r\n None = 'None',\r\n Retail = 'Retail',\r\n Restaurant = 'Restaurant',\r\n Forecourt = 'Forecourt',\r\n Workshop = 'Workshop',\r\n}\r\nexport class KybFileResult {\r\n public provider: KybProvider;\r\n public status: KybStatus;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n}\r\nexport enum KybStatusSummary {\r\n Unverified = 'Unverified',\r\n Verified = 'Verified',\r\n PartiallyVerified = 'PartiallyVerified',\r\n Rejected = 'Rejected',\r\n}\r\nexport class Merchant {\r\n public createdDate: Date;\r\n public loginCredentials?: LoginCredentials;\r\n public tradingName?: string;\r\n public franchiseName?: string;\r\n public capturedBy?: string;\r\n public capturedFrom?: string;\r\n public industry: Industry;\r\n public phoneNumber?: string;\r\n public notificationEmailAddress?: string;\r\n public notificationMobileNumber?: string;\r\n public city?: string;\r\n public state?: string;\r\n public languageIsoCode: Language;\r\n public webSiteUrl?: string;\r\n public isRegistrationComplete: boolean;\r\n public isEmailVerified: boolean;\r\n public isMobileNumberVerified: boolean;\r\n public vCard?: string;\r\n public logoImage?: string;\r\n public taxNumber?: string;\r\n public companyRegistrationNumber?: string;\r\n public companyRegistrationDate?: Date;\r\n public adminPasscode?: string;\r\n public logoUrl?: string;\r\n public hostedPaymentUrl?: string;\r\n public hostedPaymentOptions?: HostedPaymentOptions;\r\n public posOptions?: PosOptions;\r\n public business?: Business;\r\n public addresses: Address[];\r\n public employees: Employee[];\r\n public terminals: Terminal[];\r\n public files: MerchantFile[];\r\n public notificationSettings: MerchantNotificationEventSetting[];\r\n public attributes: MerchantAttributeValue[];\r\n public bankAccounts: MerchantBankAccount[];\r\n public mobileWallets: MerchantMobileWallet[];\r\n public operatingTimes: OperatingTime[];\r\n public devices: Device[];\r\n public qrCodes: MerchantQrCode[];\r\n public reference?: string;\r\n public userReference?: string;\r\n public yourReference?: string;\r\n public source: string;\r\n public name: string;\r\n public categoryCode: MerchantCategory;\r\n public category: string;\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n public countryIsoCode: Country;\r\n public currency: Currency;\r\n public kybStatusSummary: KybStatusSummary;\r\n public shortCode?: number;\r\n public isActive: boolean;\r\n}\r\nexport enum MerchantAttribute {\r\n GhIPSSMerchantId = 2,\r\n VisaPAN = 3,\r\n MasterCardPAN = 4,\r\n NIBSSMerchantReference = 6,\r\n}\r\n/** Model to hold various attributes about a merchant. */\r\nexport class MerchantAttributeValue {\r\n public name: string;\r\n public attribute: MerchantAttribute;\r\n public value: string;\r\n}\r\nexport class MerchantBankAccount {\r\n public reference?: string;\r\n public createdDateUtc: Date;\r\n public accountNumber: string;\r\n public bank: Bank;\r\n public currency: Currency;\r\n public accountName?: string;\r\n public branchName?: string;\r\n /** The branch code associated with the bank which holds the bank account. */\r\n public routingCode?: string;\r\n /**\r\n * Can be set to True when creating a brand new Merchant to indicate that default settlement rules should be created for the bank account or when editing a Merchant if HasSettlementRules = FALSE.\r\n * Attempting to set this property to FALSE if HasSettlementRules = TRUE has no effect because currently the only way to delete or disable settlement rules is via direct database access.\r\n */\r\n public isSettlement: boolean;\r\n /** This property will be set to TRUE if default settlement rules have been created for this bank account in the database. */\r\n public hasSettlementRules: boolean;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantFile {\r\n public fileType: MerchantFileType;\r\n public kybResults: KybFileResult[];\r\n public reference?: string;\r\n public yourReference?: string;\r\n public fileName: string;\r\n public mimeType: string;\r\n public base64Data?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantLoginCredentials {\r\n public emailAddress?: string;\r\n public mobileNumber?: string;\r\n /** Gets or sets the username (required). */\r\n public username: string;\r\n /** Gets or sets the password (required). */\r\n public password: string;\r\n /** Indicates whether the user is locked out. */\r\n public isLockedOut: boolean;\r\n /** Gets the reason (if any) of why the user has been locked out. */\r\n public reasonForLockout?: string;\r\n}\r\nexport class MerchantMobileWallet {\r\n public reference?: string;\r\n public msisdn: string;\r\n public mobileWalletOperator: MobileWalletOperator;\r\n public currency: Currency;\r\n public accountName?: string;\r\n /**\r\n * Can be set to True when creating a brand new Merchant to indicate that default settlement rules should be created for the mobile wallet or when editing a Merchant if HasSettlementRules = FALSE.\r\n * Attempting to set this property to FALSE if HasSettlementRules = TRUE has no effect because currently the only way to delete or disable settlement rules is via direct database access.\r\n */\r\n public isSettlement: boolean;\r\n /** This property will be set to TRUE if default settlement rules have been created for this mobile wallet in the database. */\r\n public hasSettlementRules: boolean;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantNameVerificationRequest {\r\n public merchantName: string;\r\n}\r\nexport class MerchantNameVerificationResponse {\r\n public accessToken?: string;\r\n}\r\nexport enum MerchantNotificationEvent {\r\n PaymentSuccessful = 1,\r\n PaymentFailed = 2,\r\n SettlementConfirmation = 3,\r\n}\r\nexport class MerchantNotificationEventSetting {\r\n public event: MerchantNotificationEvent;\r\n public description: string;\r\n public sendEmail: boolean;\r\n public sendSms: boolean;\r\n public terminalReferences: string[];\r\n}\r\nexport class MerchantProduct {\r\n public reference?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public yourReference?: string;\r\n public name: string;\r\n public description?: string;\r\n public unitLabel?: string;\r\n public productType: ProductType;\r\n public currency: Currency;\r\n public amountInCents?: number;\r\n public maximumAmountInCents?: number;\r\n public futureAmountInCents?: number;\r\n public futureAmountEffectiveFromDate?: Date;\r\n public fullAmountRequired: boolean;\r\n public quantityRequired: boolean;\r\n public isActive: boolean;\r\n public fields: MerchantProductField[];\r\n}\r\nexport class MerchantProductCatalog {\r\n public reference?: string;\r\n public industry: Industry;\r\n public name: string;\r\n public description?: string;\r\n public isActive: boolean;\r\n public products: MerchantProduct[];\r\n}\r\nexport class MerchantProductField {\r\n public key: string;\r\n public name: string;\r\n public isRequired: boolean;\r\n public isAccountKey: boolean;\r\n public validationRegex?: string;\r\n public selectionItems: MerchantProductFieldSelectionItem[];\r\n}\r\nexport class MerchantProductFieldSelectionItem {\r\n public label: string;\r\n public value: string;\r\n}\r\nexport class MerchantQrCode {\r\n public reference?: string;\r\n public createdDate: Date;\r\n public lastUpdatedDate?: Date;\r\n public name: string;\r\n public shortUrl: string;\r\n public fullUrl: string;\r\n public label?: string;\r\n public notes?: string;\r\n public options: MerchantQrCodeOptions;\r\n public isActive: boolean;\r\n}\r\nexport class MerchantQrCodeOptions {\r\n public amountInCents: number;\r\n public isAmountEditable: boolean;\r\n public tipAmountInCents: number;\r\n public tipEmployeeReference?: string;\r\n public splitReference?: string;\r\n public isQrCode: boolean;\r\n public currency?: Currency;\r\n public currencySymbol: string;\r\n public feePercentage: number;\r\n public enableCustomReference: boolean;\r\n public enableTip: boolean;\r\n public enableRating: boolean;\r\n public redirectUrl?: string;\r\n public notificationEmailAddresses: string[];\r\n public notificationMobileNumbers: string[];\r\n public metaData: { [key: string]: string };\r\n public clientData: { [key: string]: string };\r\n}\r\nexport class OperatingTime {\r\n public reference?: string;\r\n public dayOfWeek: DayOfWeek;\r\n public fromTime: string;\r\n public toTime: string;\r\n}\r\nexport class PosOptions {\r\n public isRefundsEnabled: boolean;\r\n public isCancellationsEnabled: boolean;\r\n public isPurchaseWithCashbackEnabled: boolean;\r\n public isWithdrawalsEnabled: boolean;\r\n public isBalanceCheckEnabled: boolean;\r\n public isCurrencyConversionEnabled: boolean;\r\n public isRcsPaymentEnabled: boolean;\r\n public isDebiCheckEnabled: boolean;\r\n public isPreAuthorizationEnabled: boolean;\r\n public isManualCardEntryEnabled: boolean;\r\n public isInvoiceNumberEnabled: boolean;\r\n public isPasscodeAlwaysRequired: boolean;\r\n public fuelPurchaseMethod: FuelPurchaseMethod;\r\n}\r\nexport class PosPermissions {\r\n public canCreateUsers: boolean;\r\n public canProcessRefunds: boolean;\r\n public canCloseAndAccessBatchReports: boolean;\r\n public canEditDeviceSettings: boolean;\r\n public canExceedMaximumSaleLimits: boolean;\r\n public canProcessCashWithdrawals: boolean;\r\n public canProcessCashDeposit: boolean;\r\n public canUseBalanceEnquiry: boolean;\r\n public canUseDebiCheck: boolean;\r\n public canUseManualCardEntry: boolean;\r\n public canProcessCancellations: boolean;\r\n public canProcessDepositsAndReversals: boolean;\r\n public canUsePreAuthorisation: boolean;\r\n public canUseIncrementalAuthorisation: boolean;\r\n public canOverrideAuthorisation: boolean;\r\n public canCancelAuthorisation: boolean;\r\n public canCompleteAuthorisation: boolean;\r\n public canAccessReports: boolean;\r\n}\r\nexport enum SettlementTime {\r\n None = 'None',\r\n IntraDay = 'IntraDay',\r\n EndOfDay = 'EndOfDay',\r\n TPlusOne = 'TPlusOne',\r\n TPlusTwo = 'TPlusTwo',\r\n TPlusThree = 'TPlusThree',\r\n TPlusSeven = 'TPlusSeven',\r\n}\r\nexport class Terminal {\r\n public reference?: string;\r\n public yourReference?: string;\r\n public device?: Device;\r\n public createdDate: Date;\r\n public name: string;\r\n public hostedPaymentUrl?: string;\r\n public isActive: boolean;\r\n public isLinked: boolean;\r\n /**\r\n * The list of all QR codes associated with the Terminal including QR codes that originated in external systems and QR codes generated in this system (V2QR).\r\n * V2QR codes are not stored in the database, they are generated on-the-fly every time Merchant details are retrieved, and are added to this collection at that time.\r\n */\r\n public qrCodes: TerminalQrCode[];\r\n /**\r\n * A list of QR codes that originated in external systems that are associated with the Terminal.\r\n * These QR codes are stored in the database when a Merchant is registered with an external Merchant management system and QR codes are supplied by that external system.\r\n */\r\n public externalQrCodes: TerminalQrCode[];\r\n public notificationTokens: TerminalNotificationToken[];\r\n public additionalReferences: AdditionalTerminalReference[];\r\n}\r\nexport class TerminalConfiguration {\r\n public merchant: BasicMerchant;\r\n public industry: Industry;\r\n public primaryAddress?: Address;\r\n public merchantId: number;\r\n public terminalId: number;\r\n public posMerchantId?: string;\r\n public posTerminalId?: string;\r\n public terminalReference: string;\r\n public accessToken: string;\r\n public adminPasscode: string;\r\n public hostedPaymentUrl: string;\r\n public posOptions: PosOptions;\r\n public features: TerminalFeatures;\r\n public employees: BasicEmployee[];\r\n}\r\nexport class TerminalFeatures {\r\n public isQrCodeEnabled: boolean;\r\n public isCardEnabled: boolean;\r\n public isCashEnabled: boolean;\r\n public isMobileMoneyEnabled: boolean;\r\n}\r\nexport class TerminalNotificationToken {\r\n public reference?: string;\r\n public token: string;\r\n public platform: DevicePlatform;\r\n}\r\nexport class TerminalPaymentQrCodes {\r\n public zapperQrCodeBase64?: string;\r\n public snapScanQrCodeBase64?: string;\r\n public vantagePayQrCodeBase64?: string;\r\n public mtnMoMoQrCodeBase64?: string;\r\n}\r\nexport class TerminalPaymentQrCodeUrls {\r\n public zapperQrCodeUrl?: string;\r\n public snapScanQrCodeUrl?: string;\r\n public vantagePayQrCodeUrl?: string;\r\n public mtnMoMoQrCodeUrl?: string;\r\n public payShapQrCodeUrl?: string;\r\n}\r\nexport class TerminalQrCode {\r\n public qrCodeType: QrCodeType;\r\n public qrCode: string;\r\n}\r\nexport class TerminalSetup {\r\n public qrCodeBase64: string;\r\n public checkAccessToken: string;\r\n public doesTerminalExist: boolean;\r\n public isTerminalActive: boolean;\r\n public isTerminalLinked: boolean;\r\n}\r\nexport enum TerminalType {\r\n None = 'None',\r\n GHIPPS = 'GHIPPS',\r\n NIBSS = 'NIBSS',\r\n PAX = 'PAX',\r\n Verifone = 'Verifone',\r\n}\r\nexport class CategoryDetails {\r\n public type: string;\r\n public merchants: MerchantDetail[];\r\n}\r\nexport class MerchantDetail {\r\n public name: string;\r\n public products: ProductDetail[];\r\n}\r\nexport class ProductDetail {\r\n public reference: string;\r\n public name: string;\r\n public description?: string;\r\n public unitLabel?: string;\r\n public amountInCents: number;\r\n public futureAmountInCents: number;\r\n public futureAmountEffectiveFromDate?: Date;\r\n public fullAmountRequired: boolean;\r\n public quantityRequired: boolean;\r\n public fields: MerchantProductField[];\r\n}\r\n","import { BaseApi } from '../baseApi';\r\n\r\nconst basePingEndpoint = '/v1/ping';\r\n\r\nexport class System extends BaseApi {\r\n async ping(): Promise<void> {\r\n return this.request<void>(basePingEndpoint, 'GET');\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi';\r\n\r\nconst baseContentEndpoint = '/v1/content';\r\n\r\nexport class Content extends BaseApi {\r\n private clientContentCache: any;\r\n private contactDetailsCache: any;\r\n\r\n async getClientContent(): Promise<any> {\r\n if (!this.clientContentCache) {\r\n this.clientContentCache = await this.request<any>(baseContentEndpoint, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.clientContentCache || null);\r\n }\r\n\r\n async getContactDetails(): Promise<any> {\r\n if (!this.contactDetailsCache) {\r\n this.contactDetailsCache = await this.request<any>(`${baseContentEndpoint}/contact-details`, 'GET');\r\n }\r\n\r\n return Promise.resolve(this.contactDetailsCache || null);\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi';\r\nimport { Currency } from '../lookups/types';\r\nimport { TransactionDetailsByDayResponse, TransactionDetailsResponse, TransactionMonthSummaryResponse } from './types';\r\n\r\nconst baseTransactionReportsEndpoint = '/v1/reports/transactions';\r\n\r\nexport class Reports extends BaseApi {\r\n private dailyTransactionCache = new Map<string, TransactionDetailsByDayResponse[]>();\r\n\r\n async getRecentTransactions(limit: number = 5, successfulOnly: boolean = false): Promise<TransactionDetailsResponse[]> {\r\n return this.request<TransactionDetailsResponse[]>(`${baseTransactionReportsEndpoint}/recent?limit=${limit}&successfulOnly=${successfulOnly}`, 'GET');\r\n }\r\n\r\n async getTransactionSummary(currency: Currency): Promise<TransactionMonthSummaryResponse> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n return this.request<TransactionMonthSummaryResponse>(`${baseTransactionReportsEndpoint}/summary?currency=${currencyIsoCode}`, 'GET');\r\n }\r\n\r\n async getAllTransactionDetails(currency: Currency, dateFrom?: string, dateTo?: string): Promise<TransactionDetailsResponse[]> {\r\n const dailyTransactions = await this.getDailyTransactions(currency, dateFrom, dateTo);\r\n return dailyTransactions\r\n .flatMap((day) => day.paymentDetails)\r\n .sort((a, b) => new Date(b.transactionCompletedDate).getTime() - new Date(a.transactionCompletedDate).getTime());\r\n }\r\n\r\n async getDailyTransactions(currency: Currency, dateFrom?: string, dateTo?: string): Promise<TransactionDetailsByDayResponse[]> {\r\n let currencyIsoCode = currency.toString();\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency];\r\n }\r\n\r\n if (!dateFrom || !dateTo) {\r\n return this.request<TransactionDetailsByDayResponse[]>(\r\n `${baseTransactionReportsEndpoint}/daily?currency=${currencyIsoCode}&dateFrom=${dateFrom || ''}&dateTo=${dateTo || ''}`,\r\n 'GET',\r\n );\r\n }\r\n\r\n let cachedData = this.dailyTransactionCache.get(currencyIsoCode) || [];\r\n\r\n let fetchFrom = dateFrom;\r\n const fetchTo = dateTo;\r\n let needsFetch = true;\r\n\r\n // Helper to normalize date to YYYY-MM-DD string for comparison\r\n // We use ISO string (UTC) to ensure consistent comparison between input strings and Date objects\r\n const toDateStr = (d: Date | string) => {\r\n if (typeof d === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(d)) return d;\r\n return new Date(d).toISOString().split('T')[0];\r\n };\r\n\r\n const todayStr = toDateStr(new Date());\r\n\r\n // Sort cached data by date\r\n cachedData.sort((a: any, b: any) => new Date(a.date).getTime() - new Date(b.date).getTime());\r\n\r\n if (cachedData.length > 0) {\r\n const lastCachedItem = cachedData[cachedData.length - 1];\r\n const firstCachedItem = cachedData[0];\r\n\r\n const reqStartStr = toDateStr(dateFrom);\r\n const reqEndStr = toDateStr(dateTo);\r\n const firstCachedStr = toDateStr(firstCachedItem.date);\r\n const lastCachedStr = toDateStr(lastCachedItem.date);\r\n\r\n // Check if request is fully inside cache range\r\n const isInsideCache = reqStartStr >= firstCachedStr && reqEndStr <= lastCachedStr;\r\n\r\n // Check if request includes today (or future dates)\r\n const includesToday = reqEndStr >= todayStr;\r\n\r\n if (isInsideCache && !includesToday) {\r\n // Fully cached and historical.\r\n needsFetch = false;\r\n } else if (isInsideCache && includesToday) {\r\n // Inside cache range, but includes today which is active/unstable.\r\n // Force refresh starting from today.\r\n fetchFrom = todayStr;\r\n needsFetch = true;\r\n } else if (reqStartStr >= firstCachedStr && reqEndStr > lastCachedStr) {\r\n // Extends into future beyond cache.\r\n // Fetch from the last cached date to ensure continuity and refresh the edge.\r\n fetchFrom = lastCachedStr;\r\n needsFetch = true;\r\n }\r\n // Disjoint or before cache, fetch full range (default).\r\n }\r\n\r\n if (needsFetch) {\r\n const newData = await this.request<TransactionDetailsByDayResponse[]>(\r\n `${baseTransactionReportsEndpoint}/daily?currency=${currencyIsoCode}&dateFrom=${fetchFrom || ''}&dateTo=${fetchTo || ''}`,\r\n 'GET',\r\n );\r\n\r\n // Merge newData into cachedData, deduplicating by date\r\n const dataMap = new Map<string, TransactionDetailsByDayResponse>();\r\n cachedData.forEach((item: any) => dataMap.set(toDateStr(item.date), item));\r\n newData.forEach((item: any) => dataMap.set(toDateStr(item.date), item));\r\n\r\n cachedData = Array.from(dataMap.values());\r\n this.dailyTransactionCache.set(currencyIsoCode, cachedData);\r\n }\r\n\r\n // Return filtered view\r\n const resultStartStr = toDateStr(dateFrom);\r\n const resultEndStr = toDateStr(dateTo);\r\n\r\n return cachedData\r\n .filter((item: any) => {\r\n const itemDateStr = toDateStr(item.date);\r\n return itemDateStr >= resultStartStr && itemDateStr <= resultEndStr;\r\n })\r\n .sort((a: any, b: any) => new Date(a.date).getTime() - new Date(b.date).getTime());\r\n }\r\n}\r\n","import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';\r\nimport axiosRetry from 'axios-retry';\r\nimport axiosAuthRefresh from 'axios-auth-refresh';\r\nimport PubSub from 'pubsub-js';\r\nimport ApiTokens from './apiTokens';\r\nimport {\r\n OnApiRetry,\r\n OnAutomaticRefresh,\r\n OnComplete3DSecure,\r\n OnPaymentComplete,\r\n OnPaymentStatusUpdate,\r\n OnRequires3DSecure,\r\n OnRequiresAddress,\r\n OnRequiresConfirmation,\r\n OnRequiresPin,\r\n OnSessionExpired,\r\n OnSessionStarted,\r\n} from './eventTypes';\r\nimport { ApiConfig } from './apiConfig';\r\nimport { Authentication } from './authentication';\r\nimport { Lookups } from './lookups';\r\nimport { Payments } from './payments';\r\nimport { Consumers } from './consumers';\r\nimport { QrCodes } from './qr';\r\nimport { Merchants } from './merchants';\r\nimport { Log } from './log';\r\nimport { System } from './system';\r\nimport { Content } from './content/index';\r\nimport { Reports } from './reports/index';\r\n\r\nconst DevelopmentApi = 'http://localhost:5000';\r\nconst LogSeparator = '-'.repeat(120);\r\n\r\nexport * from './authentication/types';\r\nexport * from './common/types';\r\nexport * from './consumers/types';\r\nexport * from './devices/types';\r\nexport * from './log/types';\r\nexport * from './lookups/types';\r\nexport * from './merchants/types';\r\nexport * from './payments/types';\r\nexport * from './reports/types';\r\nexport * from './tokens/types';\r\n\r\nexport * from './eventTypes';\r\nexport * from './apiError';\r\nexport * from './apiConfig';\r\nexport { default as ApiTokens } from './apiTokens';\r\n\r\nexport class VantagePay {\r\n // Static event symbol exports\r\n static OnSessionStarted = OnSessionStarted;\r\n static OnSessionExpired = OnSessionExpired;\r\n static OnAutomaticRefresh = OnAutomaticRefresh;\r\n static OnApiRetry = OnApiRetry;\r\n static OnPaymentStatusUpdate = OnPaymentStatusUpdate;\r\n static OnPaymentComplete = OnPaymentComplete;\r\n static OnRequires3DSecure = OnRequires3DSecure;\r\n static OnRequiresPin = OnRequiresPin;\r\n static OnRequiresConfirmation = OnRequiresConfirmation;\r\n static OnRequiresAddress = OnRequiresAddress;\r\n static OnComplete3DSecure = OnComplete3DSecure;\r\n\r\n private readonly baseUrl: string;\r\n private readonly consoleLogging: boolean;\r\n private readonly logBatchSize: number;\r\n private readonly logBatchInterval: number;\r\n private readonly axiosInstance: AxiosInstance;\r\n private readonly abortController: AbortController;\r\n\r\n public readonly events = PubSub;\r\n public readonly system: System;\r\n public readonly content: Content;\r\n public readonly log: Log;\r\n public readonly auth: Authentication;\r\n public readonly consumers: Consumers;\r\n public readonly merchants: Merchants;\r\n public readonly lookups: Lookups;\r\n public readonly payments: Payments;\r\n public readonly qrCodes: QrCodes;\r\n public readonly reports: Reports;\r\n\r\n constructor(config: ApiConfig) {\r\n this.baseUrl = (config.baseUrl || DevelopmentApi).replace(/\\/+$/, '');\r\n\r\n this.abortController = new AbortController();\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: this.baseUrl,\r\n timeout: 0,\r\n signal: this.abortController.signal,\r\n headers: {\r\n ...config.headers,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Accept-Language': config.language || 'en',\r\n },\r\n });\r\n\r\n axiosAuthRefresh(this.axiosInstance, async (failedRequest) => {\r\n const refreshUrl = '/v1/auth/refresh';\r\n\r\n if (failedRequest.request.path === refreshUrl) {\r\n return Promise.reject(failedRequest);\r\n }\r\n\r\n if (ApiTokens.refreshToken) {\r\n try {\r\n let config: AxiosRequestConfig<any> = {\r\n method: 'POST',\r\n url: refreshUrl,\r\n headers: { Authorization: 'Bearer ' + ApiTokens.refreshToken },\r\n //@ts-ignore\r\n skipAuthRefresh: true,\r\n };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n' + LogSeparator);\r\n console.debug('-- AUTO REFRESH --');\r\n console.debug(LogSeparator);\r\n console.debug(`${config.method}: ${this.baseUrl}${config.url}`);\r\n console.debug(LogSeparator);\r\n\r\n if (config.headers) {\r\n console.debug('-- HEADERS --');\r\n console.dir(config.headers);\r\n }\r\n\r\n if (config.data) {\r\n console.debug('-- REQUEST --');\r\n console.dir(config.data, { depth: null });\r\n }\r\n }\r\n\r\n const refreshResponse = await this.axiosInstance(config);\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n-- RESPONSE --');\r\n console.dir(refreshResponse.data, { depth: null });\r\n console.debug(LogSeparator);\r\n }\r\n\r\n if (refreshResponse.data && refreshResponse.data.success) {\r\n ApiTokens.accessToken = refreshResponse.data.result.accessToken;\r\n ApiTokens.refreshToken = refreshResponse.data.result.refreshToken;\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnAutomaticRefresh --');\r\n console.dir(refreshResponse.data.result, { depth: null });\r\n }\r\n\r\n this.events.publish(OnAutomaticRefresh, refreshResponse.data.result);\r\n\r\n if (failedRequest) {\r\n failedRequest.response.config.headers['Authorization'] = 'Bearer ' + ApiTokens.accessToken;\r\n }\r\n\r\n return Promise.resolve(failedRequest);\r\n } else {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n }\r\n } catch (error) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n throw error;\r\n }\r\n } else if (ApiTokens.accessToken) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --');\r\n }\r\n\r\n this.events.publish(OnSessionExpired);\r\n }\r\n\r\n return Promise.reject(failedRequest);\r\n });\r\n\r\n axiosRetry(this.axiosInstance, {\r\n retries: config.retries || 3,\r\n retryDelay: axiosRetry.exponentialDelay,\r\n onRetry: (retryCount, error, _) => {\r\n if (this.consoleLogging) {\r\n console.error('-- RETRY ' + retryCount + ' --\\r\\n', error);\r\n }\r\n\r\n const signalData = { retryCount: retryCount };\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnApiRetry --');\r\n console.dir(signalData, { depth: null });\r\n }\r\n\r\n this.events.publish(OnApiRetry, signalData);\r\n },\r\n });\r\n\r\n this.consoleLogging = config.consoleLogging || false;\r\n this.logBatchSize = config.logBatchSize || 100;\r\n this.logBatchInterval = config.logBatchInterval || 60000;\r\n\r\n this.system = new System(this.axiosInstance, this.consoleLogging);\r\n this.content = new Content(this.axiosInstance, this.consoleLogging);\r\n this.log = new Log(this.axiosInstance, this.consoleLogging, this.logBatchSize, this.logBatchInterval);\r\n this.auth = new Authentication(this.axiosInstance, this.consoleLogging);\r\n this.consumers = new Consumers(this.axiosInstance, this.consoleLogging);\r\n this.merchants = new Merchants(this.axiosInstance, this.consoleLogging);\r\n this.lookups = new Lookups(this.axiosInstance, this.consoleLogging);\r\n this.payments = new Payments(this.axiosInstance, this.consoleLogging);\r\n this.qrCodes = new QrCodes(this.axiosInstance, this.consoleLogging);\r\n this.reports = new Reports(this.axiosInstance, this.consoleLogging);\r\n\r\n if (this.consoleLogging) {\r\n // console.dir is not functional in certain environments so replace it with a general JSON logger.\r\n if (console.dir === undefined || (typeof navigator !== 'undefined' && navigator.product === 'ReactNative')) {\r\n console.dir = (json: any) => console.debug(JSON.stringify(json, null, 2));\r\n }\r\n }\r\n }\r\n\r\n public async close(): Promise<void> {\r\n if (this.consoleLogging) {\r\n console.info('Flush and clear the logs...');\r\n }\r\n await this.log.flush();\r\n\r\n if (this.consoleLogging) {\r\n console.info('Stopping payment status checks...');\r\n }\r\n await this.payments.stopPaymentStatusChecking();\r\n\r\n if (this.consoleLogging) {\r\n console.info('Unsubscribing from all events...');\r\n }\r\n this.events.clearAllSubscriptions();\r\n\r\n if (this.consoleLogging) {\r\n console.info('Cancel all API requests...');\r\n }\r\n this.abortController.abort();\r\n\r\n return Promise.resolve();\r\n }\r\n}\r\n","import { Bank } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { Currency } from '../lookups/types';\r\n\r\nexport class BankAccountRequest {\r\n public accountNumber: string;\r\n public bank: Bank;\r\n}\r\nexport class BankAccountResponse {\r\n public token: string;\r\n}\r\nexport class CardRequest {\r\n public cardNumber: string;\r\n public nameOnCard: string;\r\n public expiryMonth: Month;\r\n public expiryYear: number;\r\n}\r\n/** A model to hold the details of a card response that is returned to a caller when they tokenize a card or verify a tokenized card. */\r\nexport class CardResponse {\r\n /** The card token that was generated by the system. */\r\n public token: string;\r\n /** A boolean value indicating whether the small test payment that is required to verify this card, if <see cref=\"P:ZGA.Core.Models.Tokens.CardResponse.RequiresVerification\" />=True, has been completed yet. */\r\n public requiresPayment: boolean;\r\n /** A boolean value indicating whether this card needs to be verified before it can be activated for use on this system. */\r\n public requiresVerification: boolean;\r\n /** How many times verification of this card can still be attempted before the card is locked and it will no longer be possible to activate it. */\r\n public verificationAttemptsRemaining: number;\r\n /** The currency in which the verification payment was made. */\r\n public paymentCurrency: Currency;\r\n /** The amount, in cents, of the verification payment that was made. */\r\n public paymentAmountInCents: number;\r\n}\r\n/** A model to hold the details of a card verification submission. */\r\nexport class VerifyCardRequest {\r\n /** A card token. */\r\n public token: string;\r\n /** The verification code that appeared on the credit card statement after the verification test payment was made. */\r\n public verificationCode: string;\r\n}\r\n","/** Model to hold information to change a user's password. */\r\nexport class ChangePasswordRequest {\r\n /** Gets or sets the old password. */\r\n public oldPassword?: string;\r\n /** Gets or sets the new password (required). */\r\n public newPassword: string;\r\n /** Gets or sets the reset code that need to be supplied if you are not authenticated. */\r\n public resetCode?: string;\r\n /** Gets or sets the reference of the user that is linked to this login information. */\r\n public userReference?: string;\r\n}\r\nexport class ForgotPasswordRequest {\r\n public username: string;\r\n}\r\nexport class LivenessRequest {\r\n public base64Images: string[];\r\n}\r\n/** Model to hold login information that can be used to access the system and generate tokens. */\r\nexport class LoginCredentials {\r\n /** Gets or sets the username (required). */\r\n public username: string;\r\n /** Gets or sets the password (required). */\r\n public password: string;\r\n /** Indicates whether the user is locked out. */\r\n public isLockedOut: boolean;\r\n /** Gets the reason (if any) of why the user has been locked out. */\r\n public reasonForLockout?: string;\r\n}\r\n/** Provides details for the reason why a login attempt failed (401 errors). */\r\nexport class LoginErrorResponse {\r\n /** Gets or sets a value indicating whether either the username or password credentials provided to login are invalid. */\r\n public invalidUsernameOrPassword?: boolean;\r\n /** Gets or sets a value indicating whether the user is required to change their password first before attempting to login. */\r\n public mustChangePassword?: boolean;\r\n /** Gets or sets a value indicating whether the user is required to validate their phone number first (OTP or phone call) before attempting to login. */\r\n public mustValidatePhoneNumber?: boolean;\r\n /** Gets or sets a value indicating whether the user is required to validate their email address first before attempting to login. */\r\n public mustValidateEmailAddress?: boolean;\r\n /** Gets or sets a value indicating whether the user has been deactivated. */\r\n public deactivated?: boolean;\r\n /** Gets or sets a value indicating whether further information about the user is required and the registration process needs to be complete before attempting to login. */\r\n public registrationRequired?: boolean;\r\n /** Gets or sets a value indicating whether the user is currently locked out. */\r\n public lockedOut?: boolean;\r\n /** Gets or sets an access token that can be used to call the change password end-point. */\r\n public changePasswordAccessToken?: string;\r\n /** Gets or sets an access token that can be used to call the change password end-point. */\r\n public validatePhoneNumberAccessToken?: string;\r\n /** Gets or sets an access token that can be used to call the resend email verification end-point, and view current merchant / consumer details. */\r\n public resendEmailVerificationToken?: string;\r\n}\r\n/** Model to hold the credentials for a login attempt. */\r\nexport class LoginRequest {\r\n /** Gets or sets the username (required). */\r\n public username: string;\r\n /** Gets or sets the password (required). */\r\n public password: string;\r\n}\r\nexport class OtpVerificationRequest {\r\n public otpValue: string;\r\n}\r\nexport class OtpVerificationResponse {\r\n public userAccountExists: boolean;\r\n public accessToken: string;\r\n}\r\nexport class SelfieRequest {\r\n public base64Image?: string;\r\n}\r\n/** Provides token information for successful login and refresh operations. */\r\nexport class TokenResponse {\r\n /** Gets or sets a JWT Refresh token that can be used to request a new Access tokens. */\r\n public refreshToken?: string;\r\n /** Gets or sets a JWT Access token that can be used to make API calls. */\r\n public accessToken?: string;\r\n /** Gets or sets the amount of time (in seconds) for which the Access token will be valid. */\r\n public accessTokenValidForSeconds: number;\r\n}\r\n","import { Currency } from '../lookups/types';\r\nimport { TransactionIconType } from '../payments/types';\r\n\r\nexport class TransactionCategorySummaryResponse {\r\n public category: string;\r\n public transactionCount: number;\r\n public currency: Currency;\r\n public totalAmountInCents: number;\r\n}\r\nexport class TransactionDetailsByDayResponse {\r\n public date: Date;\r\n public transactionCount: number;\r\n public currency: Currency;\r\n public totalCreditAmountInCents: number;\r\n public totalDebitAmountInCents: number;\r\n public totalAmountInCents: number;\r\n public totalCashbackInCents: number;\r\n public totalCommissionFeesInCents: number;\r\n public totalServiceFeesInCents: number;\r\n public totalELevyFeesInCents: number;\r\n public totalUserFeesInCents: number;\r\n public totalTipsInCents: number;\r\n public paymentDetails?: TransactionDetailsResponse[];\r\n}\r\nexport class TransactionDetailsResponse {\r\n public paymentReference: string;\r\n public shortPaymentReference: string;\r\n public beneficiaryReference?: string;\r\n public productReference?: string;\r\n public channel: string;\r\n public transactionType: string;\r\n public sourceCategory: string;\r\n public destinationCategory: string;\r\n public sourceFacility: string;\r\n public destinationFacility: string;\r\n public sourceTransactionTypeDescription: string;\r\n public destinationTransactionTypeDescription: string;\r\n public sourceAccount?: string;\r\n public destinationAccount?: string;\r\n public name?: string;\r\n public transactionCompletedDate: Date;\r\n public currency: Currency;\r\n public amountInCents: number;\r\n public cashbackAmountInCents: number;\r\n public commissionFeeAmountInCents: number;\r\n public serviceFeeAmountInCents: number;\r\n public eLevyFeeAmountInCents: number;\r\n public userFeeAmountInCents: number;\r\n public tipAmountInCents: number;\r\n public isSuccess: boolean;\r\n public summaryStatus: string;\r\n public sourceStatus: string;\r\n public destinationStatus: string;\r\n public transactionIconType: TransactionIconType;\r\n public wasQrCodeInitiated: boolean;\r\n}\r\nexport class TransactionMonthSummaryResponse {\r\n public year: number;\r\n public month: number;\r\n public currency: Currency;\r\n public description: string;\r\n public totalAmountInCents: number;\r\n public periodTotals: TransactionPeriodSummaryResponse[];\r\n}\r\nexport class TransactionPeriodSummaryResponse {\r\n public description: string;\r\n public currency: Currency;\r\n public totalAmountInCents: number;\r\n public categoryTotals?: TransactionCategorySummaryResponse[];\r\n}\r\n"],"names":["ApiTokens$1","ApiTokens","this","accessToken","refreshToken","prototype","decodeToken","token","window","document","base64","split","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","Buffer","from","OnSessionStarted","Symbol","OnSessionExpired","OnAutomaticRefresh","OnApiRetry","OnPaymentStatusUpdate","OnPaymentComplete","OnRequires3DSecure","OnRequiresPin","OnRequiresConfirmation","OnRequiresAddress","OnComplete3DSecure","ApiError","_Error","statusCode","result","message","_this","newMessage","Array","isArray","length","String","call","Object","setPrototypeOf","_assertThisInitialized","_inheritsLoose","_wrapNativeSuper","Error","LogSeparator","repeat","BaseApi","axiosInstance","consoleLogging","events","PubSub","_proto","request","endpoint","method","body","response","_temp2","_result","console","debug","data","success","status","_temp","_catch","config","url","headers","Authorization","convertDatesToIso","defaults","baseURL","dir","depth","Promise","resolve","then","_this$axiosInstance","error","errno","code","e","reject","obj","_this2","Date","isNaN","getTime","offset","getTimezoneOffset","offsetHours","Math","floor","abs","padStart","offsetMinutes","offsetSign","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","item","constructor","converted","key","hasOwnProperty","Bank","Channel","ConsumerFileType","Country","Currency","DayOfWeek","FaceMovementDetectionLevel","Gender","IdentityDocumentType","InsurancePolicyStatus","KybProvider","KybStatus","KycProvider","KycStatus","KycVerificationType","Language","LoanStatus","MerchantFileType","MobileWalletOperator","Month","ProductType","QrCodeType","RepeatInterval","baseAuthEndpoint","Authentication","_BaseApi","apply","arguments","isLoggedIn","exp","_unused","login","username","password","tokenResponse","publish","loginError","changePasswordAccessToken","validatePhoneNumberAccessToken","resendEmailVerificationToken","logout","refresh","_this3","checkLiveness","base64Images","checkFace","base64Image","changePassword","oldPassword","newPassword","_this6","resetCode","userReference","forgotPassword","validateOtp","otpValue","_this8","resendOtp","resendEmailAddressVerification","getCurrentConsumerReference","consumer_reference","getCurrentMerchantReference","merchant_reference","getCurrentBusinessReference","business_reference","getCurrentTerminalReference","terminal_reference","getCurrentUserReference","reference","getCurrentUserName","user_name","getRedirectAction","redirect_action","getMobileNumber","mobile_number","getEmailAddress","email_address","MerchantCategory","CardIssuer","FeeType","MerchantPaymentType","ReceiptType","RefundType","TransactionCategory","baseEndpoint","Lookups","_len","args","_key","concat","cardIssuerCountryCache","Map","addressLocationCache","digitalAddressCache","bankCache","currencyCache","countryCache","languageCache","allCurrencyCache","allCountryCache","allLanguageCache","mobileWalletOperatorCache","productTypeCache","merchantCategoryCache","getProductTypes","_this2$request","getMerchantCategories","_temp4","_temp3","_this3$request","getCurrencies","_temp6","_this4","_temp5","_this4$request","getCountries","_temp8","_this5","_temp7","_this5$request","getLanguages","_temp0","_temp9","_this6$request","getAllCurrencies","_temp10","_this7","_temp1","_this7$request","getAllCountries","_temp12","_temp11","_this8$request","getAllLanguages","_temp14","_this9","_temp13","_this9$request","getMobileWalletOperators","_temp16","_this0","_temp15","_this0$request","getBanks","country","_temp19","_this1","get","None","_temp18","has","_temp17","_this1$bankCache","_set","set","_Country$None","_this1$request","_this1$bankCache2","_set2","_this1$request2","getCardIssuerCountry","cardBin","_temp21","_this10","_temp20","_this10$cardIssuerCou","_set3","_this10$request","getAddressFromLocation","latitude","longitude","_temp25","_exit","_this11","_temp24","_temp23","_Promise$resolve","cacheKey","_temp22","_this11$addressLocati","_set4","_this11$request","getAddressFromDigitalAddress","digitalAddress","_temp29","_exit2","_result2","_this12","_temp28","exec","_temp27","_Promise$resolve2","_temp26","_this12$digitalAddres","_set5","_this12$request","TransactionIconType","TransactionStatus","TransactionType","TransactionData","isPublic","none","LogLevel","baseEndpointPay","baseEndpointToken","baseEndpointTransaction","baseEndpointNotification","Payments","hubConnection","baseUrl","activeTransactions","manuallyStartedPaymentStatusChecking","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","withStatefulReconnect","configureLogging","Debug","build","pay","timeZone","Intl","DateTimeFormat","resolvedOptions","startPaymentStatusChecking","payMerchant","merchantReference","paymentStatusCheck","paymentReference","paymentReceipt","createCardToken","createBankAccountToken","verifyCardToken","createCardVerificationPayment","submitPinCode","transactionReference","pin","rejectPinCode","submitConfirmation","confirm","submitAddress","validateQrCode","baseEndpointValidate","sendEmailPaymentNotification","emailAddress","templateName","_this13","toEmailAddress","receiptType","Consumer","sendSmsPaymentNotification","msisdn","toNumber","stopPaymentStatusChecking","_this15","removePaymentStatusCheckInterval","_step","_iterator","_createForOfIteratorHelperLoose","values","done","clearInterval","value","statusCheckTimer","clear","state","HubConnectionState","Disconnected","off","stop","_this16","lastJsonResponse","isProcessing3dSecure","on","statusResponse","_exit3","_result5","checkPaymentUpdateStatus","isComplete","_await$_this16$stopPa","addPaymentStatusCheckInterval","Connected","start","_await$_this16$hubCon","initialStatusResponse","getOfflinePaymentFormUrl","timestamp","merchantId","terminalId","batchNumber","options","optionsBase64","btoa","stringify","getRequiredPinLength","mobileWalletOperator","VDF","TCG","luhnCheck","creditCardNumber","test","array","bit","sum","parseInt","charAt","_this17","activeTransaction","isWaiting","checkGenericRequiredStatuses","transactionResult","signalData","paymentStatusResponse","RequiresConfirmation","RequiresInitialConfirmation","destinationWithAccountHolder","paymentDestinations","mobileWallets","find","accountHolder","bankAccounts","merchants","qrCodes","bills","confirmationData","amountInCents","sourceAccountHolder","destinationAccountHolder","fees","RequiresPin","pinLength","RequiresAddress","paymentSources","cards","forEach","Requires3DSecure","threeDSecureUrl","wallets","checkRequiredStatuses","warn","onStatusPollingInterval","_this18","interval","_this19","setInterval","baseConsumerEndpoint","baseMessageEndpoint","baseAccountEndpoint","Consumers","createConsumer","updateConsumer","deleteConsumer","getConsumer","getConsumerAgreement","acceptConsumerAgreement","stopCard","cardReference","reason","getBankAccountBalance","bankAccountReference","downloadFile","fileReference","queryParameters","queryString","keys","params","entries","_ref","encodeURIComponent","baseFilesEndpoint","submitFeedback","description","baseFeedbackEndpoint","getAllMessages","getMessage","messageReference","deleteMessage","contactSupport","QrCodes","qrCache","decode","qrCode","_this2$qrCache","generate","text","width","QRCode","toDataURL","errorCorrectionLevel","margin","baseMerchantEndpoint","baseOtpEndpoint","basePosEndpoint","baseProductEndpoint","baseUserEndpoint","Merchants","productDetailCache","productsCache","createMerchantProductProxy","product","copy","_extends","Proxy","target","prop","futureAmountEffectiveFromDate","futureAmountInCents","getAllProducts","products","getActiveProductTypes","allProducts","p","type","sort","getMerchantNamesFromProductType","productType","el","m","name","filter","index","self","indexOf","getProductTypesForMerchant","merchantName","typesWithMatchingMerchant","push","getProductsForMerchantAndProductType","pel","mel","a","b","localeCompare","getProductDetails","productReference","productDetails","_this7$productDetailC","getProducts","createProduct","newProduct","updateProduct","updatedProduct","deleteProduct","groupProductsByName","reduce","groups","_product$name$split$m","s","trim","groupName","productName","getMerchant","createMerchant","updateMerchant","getMerchantAgreement","acceptMerchantAgreement","verifyMobileNumber","cleanMsisdn","verificationResponse","validateMerchantName","createUser","mobileNumber","isLockedOut","switchToMerchant","getUserMerchants","setupPosTerminal","terminalReference","merchantSource","deviceInformation","checkAccessToken","getPosTerminalConfiguration","configResponse","getTerminalPaymentQrCodes","currency","_this23","currencyIsoCode","Number","isInteger","getTerminalPaymentQrCodeUrls","uploadFile","tokenizer","MessageTemplate","messageTemplate","raw","tokens","tokenize","render","properties","i","toText","bindProperties","positionalArgs","nextArg","capture","destructure","arg","template","textStart","lastIndex","property","toISOString","AddressType","BankAccountType","ConsumerAttribute","GenericAccountType","KycStatusSummary","DevicePlatform","EmployeeNotificationEvent","FuelPurchaseMethod","Industry","KybStatusSummary","MerchantAttribute","MerchantNotificationEvent","SettlementTime","TerminalType","Log","logBatchSize","logBatchInterval","messageBatch","batchSize","batchInterval","maxQueueSize","batchTimeout","min","submitMessageBatch","flush","fatal","log","Critical","Warning","info","Information","trace","Trace","level","msg","toJSON","output","toUpperCase","loop","clearTimeout","promise","messages","splice","_","_this2$messageBatch","unshift","setTimeout","System","ping","baseContentEndpoint","Content","clientContentCache","contactDetailsCache","getClientContent","getContactDetails","baseTransactionReportsEndpoint","Reports","dailyTransactionCache","getRecentTransactions","limit","successfulOnly","getTransactionSummary","getAllTransactionDetails","dateFrom","dateTo","getDailyTransactions","dailyTransactions","flatMap","day","paymentDetails","transactionCompletedDate","resultStartStr","toDateStr","resultEndStr","cachedData","itemDateStr","date","fetchFrom","fetchTo","needsFetch","d","todayStr","lastCachedItem","firstCachedItem","reqStartStr","reqEndStr","firstCachedStr","lastCachedStr","isInsideCache","includesToday","newData","dataMap","VantagePay","abortController","system","content","auth","consumers","lookups","payments","reports","AbortController","axios","create","timeout","signal","Accept","language","axiosAuthRefresh","failedRequest","refreshUrl","path","skipAuthRefresh","refreshResponse","axiosRetry","retries","retryDelay","exponentialDelay","onRetry","retryCount","undefined","navigator","json","close","clearAllSubscriptions","abort","AccountHolderTransactionResult","refunds","createdDate","shortReference","originalAmountInCents","amountAttemptedInCents","cashbackAmountInCents","category","summaryStatus","isCashWithdrawal","terminalType","Address","yourReference","addressType","addressLine1","addressLine2","addressLine3","postalCode","countryIsoCode","city","location","formatted","isActive","AmountTotals","totalAmountRequestedInCents","totalAmountAttemptedInCents","totalAmountProcessedInCents","totalAmountProcessedLessFeesAndCommissionsInCents","totalInternalFeesInCents","totalExternalFeesInCents","totalFeesInCents","totalElevyInCents","totalUserFeesInCents","totalCommissionsInCents","totalRefundsInCents","totalCashbackAmountAttemptedInCents","totalCashbackAmountProcessedInCents","totalTipAmountAttemptedInCents","totalTipAmountProcessedInCents","grandTotalProcessedInCents","grandTotalToBePaidByUserInCents","webPaymentResponse","doNotProcess","disableConfirmation","clientData","ApplePayWebPaymentResponse","requestId","methodName","details","payerEmail","payerName","payerPhone","Balance","availableAmountInCents","currentAmountInCents","accountNumber","bank","beneficiaryReference","notificationEmailAddress","notificationMobileNumber","bankName","BankAccountSource","isAvailable","bankCode","routingCode","source","firstName","lastName","middleName","dateOfBirth","gender","preferredLanguage","kycStatusSummary","title","employeeNumber","passcode","posPermissions","categoryCode","kybStatusSummary","shortCode","Beneficiary","contactNumber","lastTransactionDate","lastTransactionAmountInCents","lastTransactionCurrency","genericAccounts","bankAccountType","bankAccountTypeName","recipientReference","senderReference","sendProofOfPayment","proofOfPaymentEmailAddress","proofOfPaymentMobileNumber","BeneficiaryCard","cardNumber","nameOnCard","expiryMonth","expiryYear","cardIssuer","genericAccountType","genericAccountTypeName","mobileWalletOperatorName","BillDestination","productFields","BillDestinationResult","parentBusinessReference","phoneNumber","isEmailVerified","isMobileNumberVerified","cardIssuerCountryIsoCode","shippingAddress","CardRequest","requiresPayment","requiresVerification","verificationAttemptsRemaining","paymentCurrency","paymentAmountInCents","CardSettings","allowTapToPay","alwaysAskForPin","cvv","billingAddress","cardHolder","disableThreeDSecure","CardSourceResult","consumer","paymentStatusWebhook","loginCredentials","preferredName","fullNameOfNextOfKin","contactNumberForNextOfKin","alternateContactNumber","invitationCode","isRegistrationComplete","identityDocuments","kycLookupResults","files","devices","addresses","beneficiaries","accounts","attributes","rewardPointsInfo","loanAccounts","insurancePolicies","ConsumerAttributeValue","attribute","branchName","linkedCardReferences","cardSettings","accountName","iconUrl","linkedFileReferences","ConsumerCard","linkedBankAccountReferences","ConsumerFile","fileType","kycResults","fileName","mimeType","base64Data","lastUpdatedDate","ConsumerGenericAccount","ConsumerInsurancePolicy","policyNumber","coverAmountInCents","premiumAmountInCents","relationship","percentage","contractNumber","loanType","loanSource","originalCapitalInCents","settlementAmountInCents","outstandingBalanceInCents","installmentAmountInCents","arrearsAmountInCents","installmentsRemaining","annualInterestRatePercentage","nextInstallmentDate","lastPaymentDate","startDate","endDate","term","isInArrears","isFullyPaid","repaymentPercentage","CountryData","countryName","longIsoCode","shortIsoCode","numericIsoCode","dialingCode","CurrencyData","currencyName","currencyCode","symbol","Device","lastUsedDate","platform","deviceType","brand","model","serialNumber","operatingSystemVersion","softwareVersion","pushNotificationToken","EmailNotificationRequest","Employee","isOwner","profileImage","notificationSettings","EmployeeNotificationEventSetting","event","sendEmail","sendSms","terminalReferences","faceCount","containsNoise","isLowQuality","isOverExposed","isUnderExposed","isBlurry","isWearingMask","foreheadNotIncluded","eyesNotIncluded","mouthNotIncluded","faceLeft","faceTop","faceWidth","faceHeight","problems","GenericDestination","cardNotPresentMID","isVisaEnabled","isMastercardEnabled","isAmericanExpressEnabled","isDinersEnabled","settlementTime","IdAndDescription","id","IdentityDocument","identityDocumentType","identityNumber","placeOfIssuance","effectiveDate","expiryDate","provider","verificationType","providerReference","KycLookupResult","languageCode","languageName","quantity","unitAmountInCents","totalAmountInCents","Location","LoginCredentials","reasonForLockout","invalidUsernameOrPassword","mustChangePassword","mustValidatePhoneNumber","mustValidateEmailAddress","deactivated","registrationRequired","lockedOut","tradingName","franchiseName","capturedBy","capturedFrom","industry","languageIsoCode","webSiteUrl","vCard","logoImage","taxNumber","companyRegistrationNumber","companyRegistrationDate","adminPasscode","logoUrl","hostedPaymentUrl","hostedPaymentOptions","posOptions","business","employees","terminals","operatingTimes","MerchantBankAccount","createdDateUtc","isSettlement","hasSettlementRules","MerchantDestination","qrCodeReference","paymentType","tipAmountInCents","tipEmployeeReference","MerchantFile","kybResults","MerchantLoginCredentials","channel","splitReference","merchant","recurrenceSchedule","scheduledSequenceNumber","disableInitialConfirmation","lineItems","paymentStatusUrls","MerchantProduct","unitLabel","maximumAmountInCents","fullAmountRequired","quantityRequired","fields","MerchantProductCatalog","MerchantProductField","isRequired","isAccountKey","validationRegex","selectionItems","MerchantProductFieldSelectionItem","label","MerchantQrCode","shortUrl","fullUrl","notes","MerchantQrCodeOptions","isAmountEditable","isQrCode","currencySymbol","feePercentage","enableCustomReference","enableTip","enableRating","redirectUrl","notificationEmailAddresses","notificationMobileNumbers","metaData","transactionBatchReference","refundCategory","refundAmountInCents","consumerReference","messageSummary","messageDetail","isDeleted","MobileWalletDestination","MobileWalletDestinationResult","MobileWalletOperatorData","operatorCode","operatorName","MobileWalletSource","voucherCode","subscriberPin","MobileWalletSourceResult","NameAndReference","externalReference","dayOfWeek","fromTime","toTime","OtpVerificationResponse","userAccountExists","cash","generic","percentageComplete","paymentStartedDate","paymentCompletedDate","shortPaymentReference","verificationCode","amountTotals","PaymentRecurrenceSchedule","repeatInterval","scheduleEndDate","repeatCount","scheduledDate","isCancelled","isProcessed","PaymentRequest","PaymentResponse","PaymentSources","applePay","googlePay","isRefundsEnabled","isCancellationsEnabled","isPurchaseWithCashbackEnabled","isWithdrawalsEnabled","isBalanceCheckEnabled","isCurrencyConversionEnabled","isRcsPaymentEnabled","isDebiCheckEnabled","isPreAuthorizationEnabled","isManualCardEntryEnabled","isInvoiceNumberEnabled","isPasscodeAlwaysRequired","fuelPurchaseMethod","canCreateUsers","canProcessRefunds","canCloseAndAccessBatchReports","canEditDeviceSettings","canExceedMaximumSaleLimits","canProcessCashWithdrawals","canProcessCashDeposit","canUseBalanceEnquiry","canUseDebiCheck","canUseManualCardEntry","canProcessCancellations","canProcessDepositsAndReversals","canUsePreAuthorisation","canUseIncrementalAuthorisation","canOverrideAuthorisation","canCancelAuthorisation","canCompleteAuthorisation","canAccessReports","ProductDetail","QrCodeDestination","additionalInfo","QrCodeDestinationResult","billReference","QrCodeValidationResponse","canProcess","supportedQrCodes","RefundReceiptResponse","originalPaymentReceipt","refundCompletedDate","RefundRequest","sourceTransactionReference","destinationTransactionReference","refundStatusUrls","RefundStatusResponse","RefundTransactionResult","RewardPointsInfo","pointsBalance","rewardTier","creditTransactionCount","SelfieRequest","StatusUrls","polling","serverSentEvents","webSockets","SwitchEnvironmentInfo","apiBaseUrl","device","isLinked","externalQrCodes","notificationTokens","additionalReferences","primaryAddress","posMerchantId","posTerminalId","features","isQrCodeEnabled","isCardEnabled","isCashEnabled","isMobileMoneyEnabled","TerminalPaymentQrCodeUrls","zapperQrCodeUrl","snapScanQrCodeUrl","vantagePayQrCodeUrl","mtnMoMoQrCodeUrl","payShapQrCodeUrl","zapperQrCodeBase64","snapScanQrCodeBase64","vantagePayQrCodeBase64","mtnMoMoQrCodeBase64","TerminalQrCode","qrCodeType","TerminalSetup","qrCodeBase64","doesTerminalExist","isTerminalActive","isTerminalLinked","accessTokenValidForSeconds","TransactionCategorySummaryResponse","transactionCount","TransactionConfirmation","TransactionDetailsByDayResponse","totalCreditAmountInCents","totalDebitAmountInCents","totalCashbackInCents","totalCommissionFeesInCents","totalServiceFeesInCents","totalELevyFeesInCents","totalTipsInCents","transactionType","sourceCategory","destinationCategory","sourceFacility","destinationFacility","sourceTransactionTypeDescription","destinationTransactionTypeDescription","sourceAccount","destinationAccount","commissionFeeAmountInCents","serviceFeeAmountInCents","eLevyFeeAmountInCents","userFeeAmountInCents","isSuccess","sourceStatus","destinationStatus","transactionIconType","wasQrCodeInitiated","feeType","feeAmountInCents","year","month","periodTotals","categoryTotals","walletReference","walletProvider","walletSource","WalletSource","WalletSourceResult","callbackUrl","onPaymentCompleteOnly"],"mappings":"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,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,MAAA,QACAA,EAAA,MAAA,QACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,MAAA,QACAA,EAAA,MAAA,QACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,KAAA,OACAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAUUC,QAAZA,aAAA,GAAYA,EAAAA,QAAOA,UAAPA,gBAYX,CAAA,IAXC,QAAA,UACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,SAAA,WACAA,EAAA,UAAA,YACAA,EAAA,WAAA,aACAA,EAAA,UAAA,YACAA,EAAA,kBAAA,oBACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,SAAA,WAEUC,QAAAA,sBAAAA,GAAAA,EAAAA,QAAgBA,mBAAhBA,QAAgBA,iBAe3B,KAdC,YAAA,cACAA,EAAA,UAAA,YACAA,EAAA,sBAAA,wBACAA,EAAA,qBAAA,uBACAA,EAAA,SAAA,WACAA,EAAA,aAAA,eACAA,EAAA,UAAA,YACAA,EAAA,kBAAA,oBACAA,EAAA,aAAA,eACAA,EAAA,oBAAA,sBACAA,EAAA,iBAAA,mBACAA,EAAA,cAAA,gBACAA,EAAA,kBAAA,oBACAA,EAAA,qBAAA,uBAEUC,QAAAA,aAAAA,GAAAA,EAAAA,QAAOA,UAAPA,QAAOA,QAyPlB,CAAA,IAxPC,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAWUC,QAAAA,cAAAA,GAAAA,EAAAA,QAAAA,WAAAA,QAAAA,SA2GX,CAAA,IA1GC,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAUUC,QAAZA,eAAA,GAAYA,EAAAA,QAAAA,YAAAA,QAAAA,UAQX,CAAA,IAPC,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,SAAA,WACAA,EAAA,OAAA,SACAA,EAAA,SAAA,WAEUC,QAAZA,gCAAA,GAAYA,EAAAA,QAAAA,6BAAAA,QAAAA,2BAKX,CAAA,IAJC,KAAA,OACAA,EAAA,iBAAA,mBACAA,EAAA,uBAAA,yBACAA,EAAA,kBAAA,oBAEUC,QAAZA,YAAA,GAAYA,EAAAA,QAAMA,SAANA,QAAMA,OAGjB,KAFC,KAAA,OACAA,EAAA,OAAA,SAMUC,QAAZA,0BAAA,GAAYA,EAAAA,QAAAA,uBAAAA,QAAAA,qBAUX,CAAA,IATC,KAAA,OACAA,EAAA,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UACAA,EAAA,MAAA,QACAA,EAAA,UAAA,YACAA,EAAA,eAAA,iBACAA,EAAA,MAAA,QACAA,EAAA,OAAA,SAGUC,QAAZA,2BAAA,GAAYA,EAAAA,QAAqBA,wBAArBA,8BAQX,CAAA,IAPC,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,QAAA,UAEUC,QAAAA,iBAAAA,GAAAA,EAAAA,sBAAAA,QAAAA,YAGX,CAAA,IAFC,KAAA,OACAA,EAAA,OAAA,SAEUC,QAAAA,eAAAA,GAAAA,EAAAA,QAAAA,YAAAA,QAASA,UAKpB,CAAA,IAJC,YAAA,cACAA,EAAA,WAAA,aACAA,EAAA,SAAA,WACAA,EAAA,SAAA,WAGUC,QAAZA,iBAAA,GAAYA,EAAAA,QAAWA,cAAXA,QAAWA,YAMtB,KALC,KAAA,OACAA,EAAA,cAAA,gBACAA,EAAA,OAAA,SACAA,EAAA,IAAA,MACAA,EAAA,OAAA,SAGUC,QAAAA,eAAAA,GAAAA,EAAAA,QAASA,YAATA,QAASA,UAMpB,CAAA,IALC,KAAA,OACAA,EAAA,WAAA,aACAA,EAAA,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,OAAA,SAGUC,oCAAAA,EAAAA,8BAAAA,QAAAA,oBAKX,CAAA,IAJC,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,OAAA,SACAA,EAAA,MAAA,QAEUC,QAAAA,cAAAA,GAAAA,EAAAA,QAAAA,WAAAA,QAAAA,SA+OX,CAAA,IA9OC,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,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"}