{"version":3,"file":"477.chunk.js","mappings":"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","sources":["../node_modules/@luxottica/frame-advisor-capture/src/helpers/AuthHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/helpers/ConfigHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/Styling.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DOMEvents.ts","../node_modules/@luxottica/frame-advisor-capture/src/helpers/CallbackHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/components/LoadingSpinner.tsx","../node_modules/@luxottica/frame-advisor-capture/src/constants/LocalizationDefaults.ts","../node_modules/@luxottica/frame-advisor-capture/src/errors/errors.ts","../node_modules/@luxottica/frame-advisor-capture/src/helpers/LocalizationHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/components/fa-capture/FrameAdvisorLoader.tsx","../node_modules/@luxottica/frame-advisor-capture/src/helpers/RecordingHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/components/fa-capture/FrameAdvisorErrorOverlay.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/fa-capture/FrameAdvisorContainer.tsx","../node_modules/@luxottica/frame-advisor-capture/src/helpers/RequestHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/components/upload-image/UploadImageData.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/upload-image/UploadStatus.ts","../node_modules/@luxottica/frame-advisor-capture/src/components/upload-image/UploadImage.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/upload-image/UploadImageContainer.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/upload-image/UploadImageLoader.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/vto-capture/VtoCaptureLoader.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/vto-capture/VtoCaptureErrorOverlay.tsx","../node_modules/@luxottica/frame-advisor-capture/src/components/vto-capture/VtoCaptureContainer.tsx","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultTrackingOptions.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultCaptureOptions.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultInitializeOptions.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultTrackingOptionsPortrait.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultTrackingOptionsLandscape.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultUploadOptions.ts","../node_modules/@luxottica/frame-advisor-capture/src/constants/DefaultVtoCaptureOptions.ts","../node_modules/@luxottica/frame-advisor-capture/src/helpers/ParameterHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/helpers/SupportedFeaturesHelper.ts","../node_modules/@luxottica/frame-advisor-capture/src/FrameAdvisorCapture.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/errors/errors.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/constants/DefaultPrivacyLocalization.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/helpers/LocalizationHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/interfaces/PrivacyLocalization.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/helpers/ParameterHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/components/ErrorIcon.tsx","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/components/BipaBiometricForm.tsx","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/components/YesNoCheckbox.tsx","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/components/PrivacyAgreement.tsx","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/helpers/CookieHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/helpers/RequestHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/BipaOverlay.tsx","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/constants/Styling.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/bipa-manager/src/BipaManager.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-devicedetection/src/parser/UserAgentParser.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-devicedetection/src/wasm/WasmDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-devicedetection/src/webgl/WebGlDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-devicedetection/src/webrtc/WebRtcDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-devicedetection/src/DeviceDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-eventbus/src/EventBus.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/constants/GuidanceCommand.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/constants/NudgingType.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/constants/StandstillStatus.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/constants/TrackResult.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/utils/Timer.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/guidance/GuidanceEngine.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/helpers/StringHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/helpers/PoseHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/nudging/adapter/NudgingEventProducer.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/PoseTracker.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-posetracker/src/Version.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/uuid/dist/esm-browser/regex.js","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/uuid/dist/esm-browser/validate.js","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/@luxottica/vm-devicedetection/src/parser/UserAgentParser.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/@luxottica/vm-devicedetection/src/wasm/WasmDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/@luxottica/vm-devicedetection/src/webgl/WebGlDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/@luxottica/vm-devicedetection/src/webrtc/WebRtcDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/node_modules/@luxottica/vm-devicedetection/src/DeviceDetection.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/model/LogMessage.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/db/factory/DBRemoteLogFactory.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/config/LogsConfigurationRetriever.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/config/LogsConfig.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/producer/RemoteLogService.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/appender/RemoteLogAppender.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/RemoteLogConfig.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/db/factory/DBAppViewSessionFactory.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/config/VmAnalyticsApiConfig.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/helpers/RequestHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/rest/AppViewSessionAdapter.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/consumer/AppViewSessionConsumer.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/job/AppViewSessionConsumerJob.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/db/factory/DBBrowserSessionFactory.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/rest/BrowserSessionAdapter.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/consumer/BrowserSessionConsumer.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/job/BrowserSessionConsumerJob.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/rest/RemoteLogAdapter.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/consumer/RemoteLogConsumer.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/job/RemoteLogConsumerJob.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/db/factory/DBTrackingStatusFactory.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/adapter/rest/TrackingStatusAdapter.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/consumer/TrackingStatusConsumer.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/job/TrackingStatusConsumerJob.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/job/JobsStarter.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/producer/AppViewSessionService.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/producer/BrowserSessionService.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/domain/service/log/producer/TrackingStatusService.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vm-remotelog/src/RemoteLog.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/config/Config.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/error/errors.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/helpers/RequestHelper.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/RefreshRequest.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/BipaRequest.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/ProfileRequest.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/ImageRequest.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/LoginRequest.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/SessionRequest.ts","../node_modules/@luxottica/frame-advisor-capture/node_modules/@luxottica/vto-microservices/src/request/VideoRequest.ts","../node_modules/@luxottica/vm-webassembly/src/Environment.ts","../node_modules/@luxottica/vm-webassembly/artifacts/headtracker/3.1.3/vm_ht.js","../node_modules/@luxottica/vm-webassembly/src/WasmJsLib.ts"],"sourcesContent":["import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../package.json';\nimport { AuthenticationOptions } from '../interfaces/InitializeParameters';\n\nlet access_token: string;\nlet refresh_token: string;\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'RequestHelper');\n\nconst getAuthData = (): AuthenticationOptions => {\n return {\n accessToken: access_token,\n refreshToken: refresh_token,\n };\n};\n\nconst setAuthData = (authData: Partial) => {\n if (!!authData?.accessToken && !! authData?.refreshToken) {\n access_token = authData.accessToken;\n refresh_token = authData.refreshToken;\n logger.debug('authentication data has been updated');\n }\n};\n\nexport {\n getAuthData,\n setAuthData,\n};\n","import { BipaPrivacyOptions } from '@luxottica/bipa-manager';\nimport { MicroserviceEnvironment } from '@luxottica/vto-microservices';\nimport { FrameAdvisorConfiguration } from '../interfaces/Config';\nimport { FrameAdvisorRegion } from '../interfaces/InitializeParameters';\n\nlet CONFIG: FrameAdvisorConfiguration;\n\nconst setConfig = (\n env: MicroserviceEnvironment,\n region: FrameAdvisorRegion,\n source: string,\n locale: string,\n privacy: BipaPrivacyOptions,\n tokenVersion: 1 | 2\n) => {\n CONFIG = {\n environment: env,\n region,\n source,\n locale,\n privacy,\n tokenVersion\n };\n};\n\nexport {\n CONFIG,\n setConfig\n};\n","const ROOT_STYLE_NAME = 'frame-advisor-root-style';\n\nexport {\n ROOT_STYLE_NAME\n};\n","// called when the component begin to send informations to retreive machine learning results\nexport const onFACaptureLoading = 'onFACaptureLoading';\n\n// called when the mlresults are available and the component finished its job\nexport const onFACaptureComplete = 'onFACaptureComplete';\n\nexport const onCaptureError = 'onCaptureError';\n\nexport const onDisplayPrivacyPage = 'onDisplayPrivacyPage';\n\nexport const onPrivacyDisplay = 'onPrivacyDisplay';\n\nexport const onCaptureProcess = 'onFACaptureProcess';\n\nexport const DOMDefaultTarget = () => document.querySelector('body');\n","import { BipaPage } from '@luxottica/bipa-manager';\nimport { DOMDefaultTarget, onCaptureError, onCaptureProcess, onDisplayPrivacyPage, onFACaptureComplete, onFACaptureLoading, onPrivacyDisplay } from '../constants/DOMEvents';\nimport { AuthenticationOptions, FrameAdvisorCallbacks } from '../interfaces/InitializeParameters';\nimport { setAuthData } from './AuthHelper';\n\nconst onLoadingEvent = () => {\n DOMDefaultTarget().dispatchEvent(new Event(onFACaptureLoading)); \n};\n\nconst onAvisorResultEvent = () => {\n DOMDefaultTarget().dispatchEvent(new Event(onFACaptureComplete)); \n};\n\nconst onCaptureErrorEvent = () => {\n DOMDefaultTarget().dispatchEvent(new Event(onCaptureError)); \n};\n\nconst onDisplayPrivacyPageEvent = () => {\n DOMDefaultTarget().dispatchEvent(new Event(onDisplayPrivacyPage));\n};\n\nconst onPrivacyDisplayEvent = () => {\n DOMDefaultTarget().dispatchEvent(new Event(onPrivacyDisplay));\n};\n\nconst onCaptureProcessEvent = () => {\n DOMDefaultTarget().dispatchEvent(new Event(onCaptureProcess));\n};\n\nconst CallbackHelper: FrameAdvisorCallbacks = {\n // default events, we want to call DOM events in any case\n onDisplayPrivacyPage: () => { onDisplayPrivacyPageEvent(); },\n onPrivacyDisplay: () => { onPrivacyDisplayEvent(); },\n onPrivacyFail: () => { return; },\n onPrivacyReject: () => { return; },\n onVtoCaptureStep: () => { return; },\n onCountdown: () => { return; },\n onNudging: () => { return; },\n onImageConfirm: undefined,\n onLoading: () => { onLoadingEvent(); },\n onAdvisorResult: () => { onAvisorResultEvent(); },\n onCaptureProcess: () => { onCaptureProcessEvent(); },\n onCaptureError: () => { onCaptureErrorEvent(); },\n onAuthUpdated: () => { return; }\n};\n\nconst setCallbacks = (callbacks: Partial) => {\n\n CallbackHelper.onAuthUpdated = (authData: AuthenticationOptions) => {\n setAuthData(authData);\n callbacks?.onAuthUpdated?.(authData);\n };\n \n if (callbacks) {\n if (!!callbacks.onPrivacyFail) { CallbackHelper.onPrivacyFail = callbacks.onPrivacyFail; }\n if (!!callbacks.onPrivacyReject) { CallbackHelper.onPrivacyReject = callbacks.onPrivacyReject; }\n \n if (!!callbacks.onVtoCaptureStep) { CallbackHelper.onVtoCaptureStep = callbacks.onVtoCaptureStep; }\n if (!!callbacks.onCountdown) { CallbackHelper.onCountdown = callbacks.onCountdown; }\n if (!!callbacks.onNudging) { CallbackHelper.onNudging = callbacks.onNudging; }\n\n CallbackHelper.onImageConfirm = (!!callbacks.onImageConfirm) ? callbacks.onImageConfirm : undefined;\n\n // we want to call DOM events in any case for loading and result\n if (!!callbacks.onLoading) {\n CallbackHelper.onLoading = () => {\n onLoadingEvent();\n callbacks.onLoading();\n };\n }\n if (!!callbacks.onAdvisorResult) {\n CallbackHelper.onAdvisorResult = (result) => {\n onAvisorResultEvent();\n callbacks.onAdvisorResult(result);\n };\n }\n if (!!callbacks.onCaptureError) {\n CallbackHelper.onCaptureError = (result) => {\n onCaptureErrorEvent();\n callbacks.onCaptureError(result);\n };\n }\n if (!!callbacks.onDisplayPrivacyPage) {\n CallbackHelper.onDisplayPrivacyPage = (page: BipaPage) => {\n onDisplayPrivacyPageEvent();\n callbacks.onDisplayPrivacyPage(page);\n };\n }\n if (!!callbacks.onPrivacyDisplay) {\n CallbackHelper.onPrivacyDisplay = () => {\n onPrivacyDisplayEvent();\n callbacks.onPrivacyDisplay();\n };\n }\n if (!!callbacks.onCaptureProcess) {\n CallbackHelper.onCaptureProcess = () => {\n onCaptureProcessEvent();\n callbacks.onCaptureProcess();\n };\n }\n }\n};\n\nexport {\n CallbackHelper,\n setCallbacks\n};\n","import * as React from 'react';\nimport './LoadingSpinner.scss';\n\ninterface LoadingSpinnerProps {\n width: number;\n height: number;\n background: boolean;\n text?: string;\n}\n\nexport const LoadingSpinner = (props: LoadingSpinnerProps) => {\n\n const size = Math.min(props.width, props.height);\n\n return (\n
\n
\n
\n
\n
\n );\n};","import { FrameAdvisorLocalization } from '../interfaces/Localization';\n\nconst defaultLocale = 'en-US';\nconst defaultLanguage = 'en';\n\nconst localeMap = {\n de: 'de-DE',\n en: 'en-US',\n es: 'es-ES',\n fr: 'fr-FR',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko-KR',\n nl: 'nl-NL',\n pl: 'pl-PL',\n pt: 'pt-PT',\n sv: 'sv-SE',\n tr: 'tr-TR',\n zh: 'zh-CN',\n};\n\nconst defaultTranslations: FrameAdvisorLocalization = {\n\tPERMISSION_ERROR: {\n\t\tERROR: 'You must allow access to your camera to use Frame Advisor.',\n\t\tSUBTEXT: 'Click on your browser Share or Allow button to enable your webcam.'\n\t},\n\tWEBCAM_ERROR: {\n\t\tERROR: 'We could not detect your webcam.',\n\t\tSUBTEXT: 'Enable webcam access in your browser and refresh the page to continue.'\n\t},\n\tGENERIC_ERROR: {\n\t\tERROR: 'An error occured',\n\t\tSUBTEXT: 'Please check your camera permissions and try to reload the page.'\n\t},\n\tMANUAL_START: {\n\t\tBUTTON: 'Start the experience',\n\t\tTEXT: 'You are probably in Low Power Mode. The experience may be degraded.'\n\t},\n\tGUIDANCE: {\n\t\tUNKNOWN: 'Is anyone there?',\n\t\tDEFAULT: 'Place your head in the oval',\n\t\tMOVE_CLOSER: 'Move closer to the oval',\n\t\tMOVE_FARTHER: 'Move farther from the screen',\n\t\tLOOK_UP: 'Look up',\n\t\tLOOK_RIGHT: 'Look to your right',\n\t\tLOOK_DOWN: 'Look down',\n\t\tLOOK_LEFT: 'Look to your left',\n\t\tTILT_LEFT: 'Tilt to your left',\n\t\tTILT_RIGHT: 'Tilt to your right',\n\t\tGLASSES: 'Please remove your glasses',\n\t\tSTAY_STILL: 'Good, stay still, get ready for the picture!'\n\t},\n\tVTO_RECORD: {\n\t\tSTEP_1: 'Prepare to move your head from side to side',\n\t\tSTEP_2: 'Turn your head to the left.',\n\t\tSTEP_3: 'Turn your head to the center.',\n\t\tSTEP_4: 'Turn your head to the right.',\n\t\tSTEP_5: 'Turn your head back to center.'\n\t},\n\tSERVER_PROCESSING: {\n\t\tLOADING: 'Please wait...',\n\t\tIMAGE_UPLOAD: 'Loading the image',\n\t\tIMAGE_PROCESSING: 'We\\'re processing your information',\n\t\tDONE: 'Image processing finished'\n\t},\n\tCAPTURE_ERROR: {\n\t\tERROR: 'An error occured',\n\t\tSUBTEXT: 'Please try to shoot a picture again.',\n\t\tBUTTON: 'Continue'\n\t},\n\tUPLOAD: {\n\t\tCLICK_OR_DROP: 'Click to select a file or drop your picture here',\n DROP_HERE: 'Drop your selfie here',\n TAP_TO_UPLOAD: 'Tap to upload your picture',\n ACCEPT: 'Accept',\n DECLINE: 'Decline'\n\t}\n};\n\nconst LocalizationDefaults = {\n locale: defaultLocale,\n language: defaultLanguage,\n localeMap,\n translations: defaultTranslations,\n};\n\nexport {\n LocalizationDefaults,\n};\n","import { InitializeParameters, InitializeOptions } from '../interfaces/InitializeParameters';\n\nclass FrameAdvisorError extends Error {\n public type: string;\n\n constructor(type: string, message: string, error?: Error) {\n super(message);\n this.type = type;\n this.name = type;\n this.message = message;\n this.stack = error?.stack;\n\n Object.setPrototypeOf(this, FrameAdvisorError.prototype);\n }\n}\n\nclass InitializationError extends FrameAdvisorError {\n public static type = 'InitializationError';\n\n constructor(input: InitializeParameters, message: string, error?: Error) {\n super(InitializationError.type, `failed to initialize component with input=${JSON.stringify(input)}, message=${(!!message) ? message : error?.message}`, error);\n Object.setPrototypeOf(this, InitializationError.prototype);\n }\n}\n\nclass NotInitializedError extends FrameAdvisorError {\n public static type = 'NotInitializedError';\n\n constructor() {\n super(NotInitializedError.type, 'component must first be initialized');\n Object.setPrototypeOf(this, NotInitializedError.prototype);\n }\n}\n\nclass LocalizationError extends FrameAdvisorError {\n public static type = 'LocalizationError';\n\n constructor(message: string, error?: Error) {\n super(LocalizationError.type, message, error);\n Object.setPrototypeOf(this, LocalizationError.prototype);\n }\n}\n\nclass MountError extends FrameAdvisorError {\n public static type = 'MountError';\n\n constructor(divId: string, error?: Error) {\n super(MountError.type, `failed to mount div in id ${divId}`, error);\n Object.setPrototypeOf(this, MountError.prototype);\n }\n}\n\nclass RequestError extends FrameAdvisorError {\n public static type = 'RequestError';\n\n constructor(message: string, error?: Error) {\n super(RequestError.type, message, error);\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n\nclass ServerError extends FrameAdvisorError {\n public static type = 'ServerError';\n\n constructor(message: string, error?: Error) {\n super(ServerError.type, message, error);\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n\nclass PrivacyError extends FrameAdvisorError {\n public static type = 'PrivacyError';\n\n constructor(message: string) {\n super(PrivacyError.type, message);\n Object.setPrototypeOf(this, PrivacyError.prototype);\n }\n}\n\nclass TimeoutError extends FrameAdvisorError {\n public static type = 'TimeoutError';\n\n constructor(duration: number) {\n super(TimeoutError.type, `request has timed out after ${duration}ms`);\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\nclass InitializationParamsError extends FrameAdvisorError {\n public static type = 'InitializationParamsError';\n\n constructor(params: Partial) {\n super(InitializationParamsError.type, `Failed to initialize capture component, check your parameters ${JSON.stringify(params)}`);\n Object.setPrototypeOf(this, InitializationParamsError.prototype);\n }\n}\n\nclass RecordingError extends FrameAdvisorError {\n public static type = 'RecordingError';\n\n constructor(message: string) {\n super(RecordingError.type, message);\n Object.setPrototypeOf(this, RecordingError.prototype);\n }\n}\n\nexport {\n FrameAdvisorError,\n InitializationError,\n NotInitializedError,\n LocalizationError,\n MountError,\n RequestError,\n ServerError,\n PrivacyError,\n TimeoutError,\n InitializationParamsError,\n RecordingError,\n};\n","import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../package.json';\nimport { LocalizationDefaults } from '../constants/LocalizationDefaults';\nimport { LocalizationError } from '../errors/errors';\nimport { FrameAdvisorLocalization } from '../interfaces/Localization';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'LocalizationHelper');\n\nlet localizedFaTranslations: FrameAdvisorLocalization;\n\nconst localizationBaseUrl = 'https://d5nhc6q3o19l2.cloudfront.net/frame-advisor';\nconst translationType = 'MIRROR';\n\nconst fetchFrameAdvisorJson = (locale: string): Promise => {\n const localizationFileURL = `${localizationBaseUrl}/${locale}/capture-component_${locale}.json`;\n return fetch(localizationFileURL).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw Error(`failed to find frame advisor localization for locale: ${locale}`);\n }\n }).then((json) => {\n return json[translationType];\n });\n};\n\nconst fetchFrameAdvisorLocalization = (\n backupLanguage: string,\n locale: string\n): Promise => {\n return new Promise((resolve) => {\n\n let translationFound = false;\n const backupLocale = LocalizationDefaults.localeMap[backupLanguage];\n const defaultLocale = LocalizationDefaults.locale;\n\n fetchFrameAdvisorJson(locale).then((translation) => {\n translationFound = true;\n localizedFaTranslations = translation;\n }).catch(() => {\n if (!translationFound) {\n logger.warn(`failed to find frame-advisor localization for locale: '${locale}', trying with backup locale '${backupLocale}'`);\n }\n }).then(() => {\n if (!translationFound) {\n return fetchFrameAdvisorJson(backupLocale);\n } else {\n throw Error('break');\n }\n }).then((backupLanguageTranslation) => {\n translationFound = true;\n localizedFaTranslations = backupLanguageTranslation;\n }).catch(() => {\n if (!translationFound) {\n logger.warn(`failed to find frame-advisor localization for locale: '${backupLocale}', trying with default locale '${defaultLocale}'`);\n }\n }).then(() => {\n if (!translationFound) {\n return fetchFrameAdvisorJson(defaultLocale);\n } else {\n throw Error('break');\n }\n }).then((defaultLanguageTranslation) => {\n translationFound = true;\n localizedFaTranslations = defaultLanguageTranslation;\n }).catch(() => {\n if (!translationFound) {\n logger.warn(`failed to find frame-advisor localization for locale: ${defaultLocale}, using local translations`);\n }\n }).then(() => {\n if (!translationFound) {\n translationFound = true;\n localizedFaTranslations = LocalizationDefaults.translations;\n }\n resolve();\n });\n });\n};\n\nconst LocalizationHelper = {\n getString(page: string, key: string): string {\n try {\n return localizedFaTranslations[page][key];\n } catch (e) {\n logger.warn(`local translation not found for [${page}][${key}] using default`);\n try {\n return LocalizationDefaults.translations[page][key];\n } catch (e) {\n logger.warn(`default translation not found for [${page}][${key}]`);\n return '';\n }\n }\n },\n\n setLocalizationText(locale: string): Promise {\n let backupLanguage;\n return new Promise((resolve, reject) => {\n try {\n backupLanguage = locale.split('-')[0];\n if (!LocalizationDefaults.localeMap[backupLanguage]) {\n backupLanguage = 'en';\n }\n resolve(backupLanguage);\n } catch (e) {\n const error = new LocalizationError(`invalid locale '${locale}'`, e);\n logger.error(error);\n reject(error);\n }\n }).then(() => {\n return fetchFrameAdvisorLocalization(backupLanguage, locale);\n });\n }\n};\n\nexport {\n LocalizationHelper\n};","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ROOT_STYLE_NAME } from '../../constants/Styling';\nimport { CaptureOptions } from '../../interfaces/CaptureParameters';\nimport { FrameAdvisorContainer } from './FrameAdvisorContainer';\n\nlet currentContainer;\n\nconst loadFrameAdvisor = (\n container: HTMLElement,\n options: CaptureOptions,\n onMount: () => void\n) => {\n currentContainer = container;\n currentContainer.classList.add(ROOT_STYLE_NAME);\n ReactDOM.render(\n ,\n container,\n onMount\n );\n};\n\nconst closeFrameAdvisorComponent = () => {\n if (!!currentContainer) {\n ReactDOM.unmountComponentAtNode(currentContainer);\n }\n};\n\nexport {\n loadFrameAdvisor,\n closeFrameAdvisorComponent\n};\n","import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../package.json';\nimport { RecordingError } from '../errors/errors';\n\nlet mediaRecorder: MediaRecorder;\nlet chunks: Blob[] = [];\n\nconst defaultMimeType = 'video/webm;codecs=vp9';\nconst iosMimeType = 'video/mp4';\nconst ffMimeType = 'video/webm';\nlet currentFileType: 'mp4' | 'webm';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'RecordingHelper');\n\nconst RecordingHelper = {\n initialize: (\n mediaStream: MediaStream,\n onComplete: (videoData: Blob[]) => void\n ) => {\n RecordingHelper.reset();\n\n let mimeType;\n if (MediaRecorder.isTypeSupported(defaultMimeType)) {\n mimeType = defaultMimeType;\n currentFileType = 'webm';\n } else if (MediaRecorder.isTypeSupported(iosMimeType)) {\n mimeType = iosMimeType;\n currentFileType = 'mp4';\n } else if (MediaRecorder.isTypeSupported(ffMimeType)) {\n mimeType = ffMimeType;\n currentFileType = 'webm';\n } else {\n throw new RecordingError('recording video mime type unsupported');\n }\n\n mediaRecorder = new MediaRecorder(mediaStream, { mimeType: mimeType });\n\n mediaRecorder.onstart = () => { \n logger.debug('media recorder started');\n };\n\n mediaRecorder.ondataavailable = (blobEvent: BlobEvent) => {\n logger.debug('media recorder data available: size={} mimeType={}', blobEvent.data.size, mediaRecorder.mimeType);\n chunks.push(blobEvent.data);\n onComplete(chunks);\n };\n },\n\n startRecording: () => {\n if (!!mediaRecorder && mediaRecorder.state !== 'recording') {\n mediaRecorder.start(100000000000);\n }\n },\n\n stopRecording: () => {\n if (!!mediaRecorder && mediaRecorder.state === 'recording') {\n mediaRecorder.stop();\n }\n },\n\n getFileType: (): 'webm' | 'mp4' => {\n return (!!currentFileType) ? currentFileType : undefined;\n },\n\n reset: () => {\n mediaRecorder = undefined;\n chunks = [];\n }\n};\n\nexport {\n RecordingHelper\n};\n","import React from 'react';\nimport { LocalizationHelper } from '../../helpers/LocalizationHelper';\nimport './FrameAdvisorErrorOverlay.scss';\n\nconst FrameAdvisorErrorOverlay = (props: {\n enabled: boolean,\n onClickOk: () => void\n}) => {\n\n return (\n
\n {props.enabled &&\n
\n
{LocalizationHelper.getString('CAPTURE_ERROR', 'ERROR')}
\n
{LocalizationHelper.getString('CAPTURE_ERROR', 'SUBTEXT')}
\n \n
\n }\n
\n );\n};\n\nexport {\n FrameAdvisorErrorOverlay\n};\n","import { AgreementType, BipaManager, BipaOverlay, BipaPage } from '@luxottica/bipa-manager';\nimport React, { lazy, Suspense, useState } from 'react';\nimport { getAuthData } from '../../helpers/AuthHelper';\nimport { CallbackHelper } from '../../helpers/CallbackHelper';\nimport { CONFIG } from '../../helpers/ConfigHelper';\nimport { CaptureOptions } from '../../interfaces/CaptureParameters';\nimport { LoadingSpinner } from '../LoadingSpinner';\nimport './FrameAdvisorContainer.scss';\nimport { FrameAdvisorErrorOverlay } from './FrameAdvisorErrorOverlay';\n\ntype agreementStatus = 'INITIAL' | 'APPROVED' | 'REJECTED' | 'ERROR';\n\nconst FrameAdvisorContainer = (props: {\n options: CaptureOptions\n}) => {\n\n // begin to download the capture chunk while the user is checking the privacy\n // in case the privacy is already accepted the user will see a loading spinner\n const lazyFrameAdvisorPromise = import(/* webpackChunkName: \"FrameAdvisorVideo\" */ './FrameAdvisorVideo')\n .then(({ FrameAdvisorVideo }) => ({ default: FrameAdvisorVideo }));\n\n // REACT.lazy wrapper used to display a spinner while loading\n const LazyFrameAdvisorVideo = lazy(() => lazyFrameAdvisorPromise);\n\n const [agreementStatus, setAgreementStatus] = useState(\n BipaManager.biometricCookieExists(AgreementType.BIOMETRIC) ? 'APPROVED' : 'INITIAL'\n );\n\n let content;\n\n switch (agreementStatus) {\n case 'INITIAL':\n CallbackHelper.onPrivacyDisplay();\n content = (\n {\n CallbackHelper.onDisplayPrivacyPage(page);\n },\n onSubmit: () => {\n // close the Privacy agreement and start the experience\n setAgreementStatus('APPROVED');\n },\n onUserReject: () => {\n // close the Privacy agreement and BLOCK the experience\n setAgreementStatus('REJECTED');\n CallbackHelper.onPrivacyReject();\n },\n onError: (error) => {\n setAgreementStatus('ERROR');\n CallbackHelper.onPrivacyFail(error);\n },\n onAuthUpdated: CallbackHelper.onAuthUpdated\n }} privacy={{\n termsAndConditions: CONFIG.privacy.termsAndConditions,\n localizationText: CONFIG.privacy?.localizationText\n }}/>\n );\n break;\n case 'APPROVED':\n CallbackHelper.onCaptureProcess();\n content = (\n }>\n \n \n );\n break;\n case 'ERROR':\n content = { setAgreementStatus('INITIAL'); }} />;\n break;\n case 'REJECTED':\n default:\n content = <>;\n break;\n }\n\n return (\n
\n {content}\n
\n );\n};\n\nexport {\n FrameAdvisorContainer\n};\n","import { loginRequest, LoginReturn, processImageRequest, processVideoRequest, ProfileReturn, sessionRequest, SessionReturn, uploadImageDataRequest, uploadImageRequest, uploadVideoRequest } from '@luxottica/vto-microservices';\nimport { getAuthData } from './AuthHelper';\nimport { CallbackHelper } from './CallbackHelper';\nimport { CONFIG } from './ConfigHelper';\nimport { RecordingHelper } from './RecordingHelper';\n\nlet videoId: string;\nlet uploadPath: string;\n\nconst RequestHelper = {\n login: (tokenVersion: 1 | 2): Promise => {\n return loginRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n version: tokenVersion,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n });\n },\n\n startSession: (): Promise => {\n return sessionRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n region: CONFIG.region,\n source: CONFIG.source\n }).then((result) => {\n videoId = result.videoId;\n uploadPath = result.uploadPath;\n return result;\n });\n },\n\n uploadImage: (\n img: Blob\n ): Promise => {\n return uploadImageRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n img: img,\n uploadPath: uploadPath\n });\n },\n\n uploadImageData: (\n imgData: ImageData\n ): Promise => {\n return uploadImageDataRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n imgData: imgData,\n uploadPath: uploadPath\n });\n },\n\n processImage: (\n enableMachineLearning: boolean,\n enableVto: boolean,\n shouldCancel: () => boolean\n ): Promise => {\n return processImageRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n videoId: videoId,\n enableMachineLearning: enableMachineLearning,\n enableVto: enableVto,\n shouldCancel: shouldCancel\n });\n },\n\n uploadVideo: (\n video: Blob[]\n ): Promise => {\n return uploadVideoRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n videoId: videoId,\n video: video,\n fileType: RecordingHelper.getFileType(),\n uploadPath: uploadPath,\n });\n },\n\n processVideo: (\n enableMachineLearning: boolean,\n enableVto: boolean,\n shouldCancel: () => boolean\n ): Promise => {\n return processVideoRequest({\n environment: CONFIG.environment,\n accessToken: getAuthData().accessToken,\n refreshToken: getAuthData().refreshToken,\n onAuthUpdated: CallbackHelper.onAuthUpdated,\n videoId: videoId,\n enableMachineLearning: enableMachineLearning,\n enableVto: enableVto,\n shouldCancel: shouldCancel\n });\n }\n};\n\nexport {\n RequestHelper,\n};\n","import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../../package.json';\nimport { CallbackHelper } from '../../helpers/CallbackHelper';\nimport { RequestHelper } from '../../helpers/RequestHelper';\nimport { UploadOptions } from '../../interfaces/CaptureParameters';\nimport './UploadImage.scss';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'UploadImageData');\n\nconst uploadImageData = (\n imageData: ImageData,\n options: UploadOptions\n): Promise => {\n if (!!imageData) {\n logger.debug('imageData received');\n\n return RequestHelper.startSession().then(() => {\n RequestHelper.uploadImageData(imageData).then(() => {\n return RequestHelper.processImage(\n options.enableMachineLearning,\n options.enableVto,\n () => { return false; }\n );\n }).then((result) => {\n logger.debug('upload imageData complete');\n CallbackHelper.onAdvisorResult({\n ...(options.enableMachineLearning && { properties: result.properties }),\n videoId: result.videoId\n });\n }).catch((error) => {\n CallbackHelper.onCaptureError(error);\n });\n });\n } else {\n logger.warn('invalid imageData, aborting upload process');\n }\n};\n\nexport {\n uploadImageData,\n};\n","enum UploadStatus {\n INITIAL = 'INITIAL',\n ACCEPT = 'ACCEPT',\n ACCEPT_THIRD_PARTY = 'ACCEPT_THIRD_PARTY',\n UPLOADING = 'UPLOADING',\n PROCESSING = 'PROCESSING',\n ERROR = 'ERROR'\n}\n\nexport {\n UploadStatus,\n};\n","import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { DeviceType } from 'current-device';\nimport React, { Component, createRef, RefObject } from 'react';\nimport { name, version } from '../../../package.json';\nimport { CallbackHelper } from '../../helpers/CallbackHelper';\nimport { LocalizationHelper } from '../../helpers/LocalizationHelper';\nimport { RequestHelper } from '../../helpers/RequestHelper';\nimport { UploadOptions } from '../../interfaces/CaptureParameters';\nimport { FrameAdvisorErrorOverlay } from '../fa-capture/FrameAdvisorErrorOverlay';\nimport { LoadingSpinner } from '../LoadingSpinner';\n\nimport './UploadImage.scss';\nimport { UploadStatus } from './UploadStatus';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'UploadImage');\n\ninterface UploadImageProps {\n options: UploadOptions;\n deviceType: DeviceType;\n}\n\ninterface UploadImageState {\n uploadStatus: UploadStatus;\n dragOver: boolean;\n}\n\nclass UploadImage extends Component<\n UploadImageProps,\n UploadImageState\n> {\n\n private mounted: boolean;\n private imageInput: RefObject;\n private currentFile: File;\n private currentImage = new Image();\n\n constructor(props: UploadImageProps) {\n super(props);\n this.imageInput = createRef();\n this.state = {\n uploadStatus: UploadStatus.INITIAL,\n dragOver: false\n };\n }\n\n componentDidMount() {\n this.mounted = true;\n document.body.addEventListener('mouseenter', this.mouseEnterHandler);\n document.body.addEventListener('dragover', this.dragOverHandler);\n document.body.addEventListener('dragenter', this.dragEnterHandler);\n document.body.addEventListener('dragleave', this.dragLeaveHandler);\n document.body.addEventListener('drop', this.windowDropHandler);\n }\n\n componentWillUnmount() {\n this.mounted = false;\n document.body.removeEventListener('mouseenter', this.mouseEnterHandler);\n document.body.removeEventListener('dragover', this.dragOverHandler);\n document.body.removeEventListener('dragenter', this.dragEnterHandler);\n document.body.removeEventListener('dragleave', this.dragLeaveHandler);\n document.body.removeEventListener('drop', this.windowDropHandler);\n }\n\n imageInputHandler = (e: React.FormEvent) => {\n if (!!this.imageInput.current?.files?.[0]) {\n this.generateImagePreview(this.imageInput.current?.files?.[0]);\n }\n e.currentTarget.value = '';\n }\n\n dropHandler = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ dragOver: false });\n\n let file: File;\n if (e.dataTransfer.items && e.dataTransfer.items?.[0].kind === 'file') {\n file = e.dataTransfer.items[0].getAsFile();\n } else if (e.dataTransfer?.files.length > 0) {\n file = e.dataTransfer.files[0];\n }\n\n if (!!file) {\n this.generateImagePreview(file);\n }\n };\n\n generateImagePreview = (file: File) => {\n this.currentFile = file;\n const reader = new FileReader();\n reader.readAsDataURL(this.currentFile);\n\t\treader.onload = (e) => {\n this.currentImage.src = e.target.result.toString();\n this.currentImage.onload = () => {\n\n if (!!CallbackHelper.onImageConfirm) {\n this.setState({ uploadStatus: UploadStatus.ACCEPT_THIRD_PARTY });\n CallbackHelper.onImageConfirm(this.currentImage.src).then((imageAccepted) => {\n if (imageAccepted) {\n this.sendUploadImageRequest(this.currentFile);\n } else {\n this.setState({ uploadStatus: UploadStatus.INITIAL });\n }\n });\n\n } else {\n this.setState({ uploadStatus: UploadStatus.ACCEPT });\n }\n };\n };\n }\n\n windowDropHandler = (e) => {\n e.preventDefault();\n this.setState({ dragOver: false });\n };\n\n mouseEnterHandler = () => {\n if (this.state.dragOver === true) {\n this.setState({ dragOver: false });\n }\n };\n\n dragOverHandler = (e) => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n dragEnterHandler = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ dragOver: true });\n };\n\n dragLeaveHandler = (e) => {\n e.preventDefault();\n };\n\n onAcceptFile = () => {\n this.sendUploadImageRequest(this.currentFile);\n }\n\n onDeclineFile = () => {\n this.setState({\n uploadStatus: UploadStatus.INITIAL\n });\n }\n\n sendUploadImageRequest = (file: File): void => {\n if (!!file) {\n logger.debug(`file received: ${file.name}`);\n logger.debug(file);\n\n this.setState({ uploadStatus: UploadStatus.UPLOADING });\n\n RequestHelper.startSession().then(() => {\n RequestHelper.uploadImage(file).then(() => {\n if (this.mounted) {\n this.setState({ uploadStatus: UploadStatus.PROCESSING });\n return RequestHelper.processImage(\n this.props.options.enableMachineLearning,\n this.props.options.enableVto,\n () => { return !this.mounted; });\n }\n }).then((result) => {\n if (this.mounted) {\n logger.debug('upload image complete');\n this.resetComponent();\n CallbackHelper.onAdvisorResult({\n ...(this.props.options.enableMachineLearning && { properties: result.properties }),\n videoId: result.videoId\n });\n }\n }).catch((error) => {\n if (this.mounted) {\n this.setState({ uploadStatus: UploadStatus.ERROR });\n CallbackHelper.onCaptureError(error);\n }\n });\n });\n } else {\n logger.warn('invalid file, aborting upload process');\n }\n }\n\n resetComponent = () => {\n this.currentFile = undefined;\n this.currentImage = new Image();\n this.setState({ uploadStatus: UploadStatus.INITIAL });\n }\n\n render() {\n let displayText = '';\n if (this.props.deviceType === 'mobile') {\n displayText = LocalizationHelper.getString('UPLOAD', 'TAP_TO_UPLOAD');\n } else {\n displayText = (this.state.dragOver) ? LocalizationHelper.getString('UPLOAD', 'DROP_HERE') : LocalizationHelper.getString('UPLOAD', 'CLICK_OR_DROP');\n }\n\n const showLoading = (this.state.uploadStatus === UploadStatus.UPLOADING || this.state.uploadStatus === UploadStatus.PROCESSING);\n const showImgPreview = showLoading || this.state.uploadStatus === UploadStatus.ACCEPT || this.state.uploadStatus === UploadStatus.ERROR;\n\n return (\n
\n {this.state.uploadStatus === UploadStatus.INITIAL &&\n \n }\n\n {showImgPreview &&\n
\n
\n \n
\n
\n }\n\n {(this.state.uploadStatus === UploadStatus.ACCEPT) &&\n
\n \n \n
\n }\n\n
\n \n
\n {(this.state.uploadStatus === UploadStatus.UPLOADING) ?\n LocalizationHelper.getString('SERVER_PROCESSING', 'IMAGE_UPLOAD') : LocalizationHelper.getString('SERVER_PROCESSING', 'IMAGE_PROCESSING')}\n
\n
\n\n \n
\n );\n }\n}\n\nexport {\n UploadImage,\n};\n","import { AgreementType, BipaManager, BipaOverlay } from '@luxottica/bipa-manager';\nimport { DeviceType } from 'current-device';\nimport React, { useState } from 'react';\nimport { getAuthData } from '../../helpers/AuthHelper';\nimport { CallbackHelper } from '../../helpers/CallbackHelper';\nimport { CONFIG } from '../../helpers/ConfigHelper';\nimport { UploadOptions } from '../../interfaces/CaptureParameters';\nimport { FrameAdvisorErrorOverlay } from '../fa-capture/FrameAdvisorErrorOverlay';\nimport { UploadImage } from './UploadImage';\nimport './UploadImageContainer.scss';\n\ntype agreementStatus = 'INITIAL' | 'APPROVED' | 'REJECTED' | 'ERROR';\n\nconst UploadImageContainer = (props: {\n options: UploadOptions,\n deviceType: DeviceType\n}) => {\n\n const [agreementStatus, setAgreementStatus] = useState(\n BipaManager.biometricCookieExists(AgreementType.BIOMETRIC) ? 'APPROVED' : 'INITIAL'\n );\n\n let content;\n\n switch (agreementStatus) {\n case 'INITIAL':\n CallbackHelper.onPrivacyDisplay();\n content = (\n {\n // close the Privacy agreement and start the experience\n setAgreementStatus('APPROVED');\n },\n onUserReject: () => {\n // close the Privacy agreement and BLOCK the experience\n setAgreementStatus('REJECTED');\n CallbackHelper.onPrivacyReject();\n },\n onError: (error) => {\n setAgreementStatus('ERROR');\n CallbackHelper.onPrivacyFail(error);\n },\n onAuthUpdated: CallbackHelper.onAuthUpdated\n }} privacy={{\n termsAndConditions: CONFIG.privacy.termsAndConditions,\n localizationText: CONFIG.privacy?.localizationText\n }}/>\n );\n break;\n case 'APPROVED':\n CallbackHelper.onCaptureProcess();\n content = ;\n break;\n case 'ERROR':\n content = { setAgreementStatus('INITIAL'); }} />;\n break;\n case 'REJECTED':\n default:\n content = <>;\n break;\n }\n\n return (\n
\n {content}\n
\n );\n};\n\nexport {\n UploadImageContainer\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { UploadImageContainer } from './UploadImageContainer';\nimport device, { DeviceType } from 'current-device';\nimport { ROOT_STYLE_NAME } from '../../constants/Styling';\nimport { UploadOptions } from '../../interfaces/CaptureParameters';\n\nlet currentContainer;\n\nconst loadUploadImage = (\n container: HTMLElement,\n options: UploadOptions,\n onMount: () => void\n) => {\n\n currentContainer = container;\n currentContainer.classList.add(ROOT_STYLE_NAME);\n const deviceType: DeviceType = (device.mobile()) ? 'mobile' : 'desktop';\n\n ReactDOM.render(\n ,\n container,\n onMount\n );\n};\n\nconst closeUploadImageComponent = () => {\n if (!!currentContainer) {\n ReactDOM.unmountComponentAtNode(currentContainer);\n }\n};\n\nexport {\n loadUploadImage,\n closeUploadImageComponent\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ROOT_STYLE_NAME } from '../../constants/Styling';\nimport { VtoCaptureOptions } from '../../interfaces/CaptureParameters';\nimport { VtoCaptureContainer } from './VtoCaptureContainer';\n\nlet currentContainer;\n\nconst loadVtoCapture = (\n container: HTMLElement,\n options: VtoCaptureOptions,\n onMount: () => void\n) => {\n currentContainer = container;\n currentContainer.classList.add(ROOT_STYLE_NAME);\n ReactDOM.render(\n ,\n container,\n onMount\n );\n};\n\nconst closeVtoCaptureComponent = () => {\n if (!!currentContainer) {\n ReactDOM.unmountComponentAtNode(currentContainer);\n }\n};\n\nexport {\n loadVtoCapture,\n closeVtoCaptureComponent\n};\n","import React from 'react';\nimport { LocalizationHelper } from '../../helpers/LocalizationHelper';\nimport './VtoCaptureErrorOverlay.scss';\n\nconst VtoCaptureErrorOverlay = (props: {\n enabled: boolean,\n onClickOk: () => void\n}) => {\n\n return (\n
\n {props.enabled &&\n
\n
{LocalizationHelper.getString('CAPTURE_ERROR', 'ERROR')}
\n
{LocalizationHelper.getString('CAPTURE_ERROR', 'SUBTEXT')}
\n \n
\n }\n
\n );\n};\n\nexport {\n VtoCaptureErrorOverlay\n};\n","import { AgreementType, BipaManager, BipaOverlay, BipaPage } from '@luxottica/bipa-manager';\nimport React, { lazy, Suspense, useState } from 'react';\nimport { getAuthData } from '../../helpers/AuthHelper';\nimport { CallbackHelper } from '../../helpers/CallbackHelper';\nimport { CONFIG } from '../../helpers/ConfigHelper';\nimport { VtoCaptureOptions } from '../../interfaces/CaptureParameters';\nimport { LoadingSpinner } from '../LoadingSpinner';\nimport './VtoCaptureContainer.scss';\nimport { VtoCaptureErrorOverlay } from './VtoCaptureErrorOverlay';\n\n\ntype agreementStatus = 'INITIAL' | 'APPROVED' | 'REJECTED' | 'ERROR';\n\nconst VtoCaptureContainer = (props: {\n options: VtoCaptureOptions\n}) => {\n\n // begin to download the capture chunk while the user is checking the privacy\n // in case the privacy is already accepted the user will see a loading spinner\n const lazyVtoCapturePromise = import(/* webpackChunkName: \"VtoCaptureVideo\" */ './VtoCaptureVideo')\n .then(({ VtoCaptureVideo }) => ({ default: VtoCaptureVideo }));\n\n // REACT.lazy wrapper used to display a spinner while loading\n const LazyVtoCaptureVideo = lazy(() => lazyVtoCapturePromise);\n\n const [agreementStatus, setAgreementStatus] = useState(\n BipaManager.biometricCookieExists(AgreementType.BIOMETRIC) ? 'APPROVED' : 'INITIAL'\n );\n\n let content;\n\n switch (agreementStatus) {\n case 'INITIAL':\n CallbackHelper.onPrivacyDisplay();\n content = (\n {\n CallbackHelper.onDisplayPrivacyPage(page);\n },\n onSubmit: () => {\n // close the Privacy agreement and start the experience\n setAgreementStatus('APPROVED');\n },\n onUserReject: () => {\n // close the Privacy agreement and BLOCK the experience\n setAgreementStatus('REJECTED');\n CallbackHelper.onPrivacyReject();\n },\n onError: (error) => {\n setAgreementStatus('ERROR');\n CallbackHelper.onPrivacyFail(error);\n },\n onAuthUpdated: CallbackHelper.onAuthUpdated\n }} privacy={{\n termsAndConditions: CONFIG.privacy.termsAndConditions,\n localizationText: CONFIG.privacy?.localizationText\n }}/>\n );\n break;\n case 'APPROVED':\n CallbackHelper.onCaptureProcess();\n content = (\n }>\n \n \n );\n break;\n case 'ERROR':\n content = { setAgreementStatus('INITIAL'); }} />;\n break;\n case 'REJECTED':\n default:\n content = <>;\n break;\n }\n\n return (\n
\n {content}\n
\n );\n};\n\nexport {\n VtoCaptureContainer\n};\n","import { TrackingOptions } from '@luxottica/vm-posetracker';\n\nconst DefaultTrackingOptions: TrackingOptions = {\n debug: false,\n inspect: false,\n recoveryLimit: 1,\n areaSize: 1,\n areaOffset: [0, 0],\n depthRange: [100, 2000],\n axisRange: [7, 50, 7],\n fittedPointsRatio: 0.25,\n fov: 52.0,\n minimumFaceSizeRatio: 0.3,\n edgeDetectionPercentage: [0.15, 0.1, 0.1, 0.1], // top, right, bottom, left\n nudgingType: 2,\n standstill: {\n timeLimit: Number.MAX_SAFE_INTEGER,\n positionVariance: 50,\n axisVariance: 8,\n depthRange: [320, 800]\n },\n onPoseTrack: () => { return; },\n};\n\nexport { DefaultTrackingOptions };\n","import { CaptureOptions } from '../interfaces/CaptureParameters';\nimport { DefaultTrackingOptions } from './DefaultTrackingOptions';\n\nconst DefaultCaptureOptions: CaptureOptions = {\n enableCountdown: true,\n countdownDuration: 3000,\n countdownDelay: 1000,\n tracking: DefaultTrackingOptions,\n showLoading: true,\n enableMachineLearning: false,\n enableVto: true,\n};\n\nexport { DefaultCaptureOptions };\n","import { InitializeOptions } from '../interfaces/InitializeParameters';\n\nconst DefaultInitializeOptions: InitializeOptions = {\n locale: '',\n region: 'US',\n source: 'WEB',\n tokenVersion: 2,\n environment: 'PRODUCTION'\n};\n\nexport { DefaultInitializeOptions };\n","import { TrackingOptions } from '@luxottica/vm-posetracker';\n\nconst DefaultTrackingOptionsPortrait: TrackingOptions = {\n debug: false,\n inspect: false,\n recoveryLimit: 1,\n areaSize: 1,\n areaOffset: [0, 0],\n depthRange: [100, 2000],\n axisRange: [7, 50, 7],\n fittedPointsRatio: 0.25,\n fov: 52.0,\n minimumFaceSizeRatio: 0.3,\n edgeDetectionPercentage: [0.15, 0.1, 0.1, 0.1], // top, right, bottom, left\n nudgingType: 2,\n standstill: {\n timeLimit: Number.MAX_SAFE_INTEGER,\n positionVariance: 50,\n axisVariance: 8,\n depthRange: [430, 500]\n },\n onPoseTrack: () => { return; },\n};\n\nexport { DefaultTrackingOptionsPortrait };\n","import { TrackingOptions } from '@luxottica/vm-posetracker';\n\nconst DefaultTrackingOptionsLandscape: TrackingOptions = {\n debug: false,\n inspect: false,\n recoveryLimit: 1,\n areaSize: 1,\n areaOffset: [0, 0],\n depthRange: [100, 2000],\n axisRange: [7, 50, 7],\n fittedPointsRatio: 0.25,\n fov: 52.0,\n minimumFaceSizeRatio: 0.3,\n edgeDetectionPercentage: [0.15, 0.1, 0.1, 0.1], // top, right, bottom, left\n nudgingType: 2,\n standstill: {\n timeLimit: Number.MAX_SAFE_INTEGER,\n positionVariance: 50,\n axisVariance: 8,\n depthRange: [320, 500]\n },\n onPoseTrack: () => { return; },\n};\n\nexport { DefaultTrackingOptionsLandscape };\n","import { UploadOptions } from '../interfaces/CaptureParameters';\n\nconst DefaultUploadOptions: UploadOptions = {\n showLoading: true,\n enableMachineLearning: false,\n enableVto: true,\n};\n\nexport { DefaultUploadOptions };\n","import { VtoCaptureOptions } from '../interfaces/CaptureParameters';\nimport { DefaultTrackingOptions } from './DefaultTrackingOptions';\n\nconst DefaultCaptureDuration = 10000;\n\nconst DefaultVtoCaptureOptions: VtoCaptureOptions = {\n tracking: DefaultTrackingOptions,\n showLoading: true,\n enableMachineLearning: false,\n enableVto: true\n};\n\nexport { DefaultCaptureDuration, DefaultVtoCaptureOptions };\n","import { BipaPrivacyOptions } from '@luxottica/bipa-manager';\nimport { DefaultCaptureOptions } from '../constants/DefaultCaptureOptions';\nimport { DefaultInitializeOptions } from '../constants/DefaultInitializeOptions';\nimport { DefaultTrackingOptions } from '../constants/DefaultTrackingOptions';\nimport { DefaultTrackingOptionsPortrait } from '../constants/DefaultTrackingOptionsPortrait';\nimport { DefaultTrackingOptionsLandscape } from '../constants/DefaultTrackingOptionsLandscape';\nimport { CaptureOptions, UploadOptions, VtoCaptureOptions } from '../interfaces/CaptureParameters';\nimport { InitializeOptions, PrivacyOptions } from '../interfaces/InitializeParameters';\nimport { InitializationParamsError } from '../errors/errors';\nimport { DefaultUploadOptions } from '../constants/DefaultUploadOptions';\nimport { DefaultVtoCaptureOptions } from '../constants/DefaultVtoCaptureOptions';\nimport device, { DeviceType } from 'current-device';\n\nconst setDefaultInitializeOptions = (\n inputParams: Partial = {}\n): InitializeOptions => {\n // region and source are mandatory\n if (!inputParams.region || !inputParams.source) {\n throw new InitializationParamsError(inputParams);\n }\n return {\n ...DefaultInitializeOptions,\n ...inputParams\n };\n};\n\nconst setDefaultCaptureOptions = (\n inputParams: Partial = {}\n): CaptureOptions => {\n const deviceType: DeviceType = device.tablet() || device.mobile() ? 'mobile' : 'desktop';\n\n return {\n ...DefaultCaptureOptions,\n ...inputParams,\n tracking: {\n ...DefaultTrackingOptions,\n ...inputParams.tracking,\n standstill: {\n ...(deviceType === 'mobile' ? DefaultTrackingOptionsPortrait.standstill : DefaultTrackingOptionsLandscape.standstill),\n ...inputParams.tracking?.standstill,\n },\n },\n showLoading: (inputParams.showLoading === undefined || inputParams.showLoading === null) ? DefaultCaptureOptions.showLoading : inputParams.showLoading,\n };\n};\n\nconst setDefaultVtoCaptureOptions = (\n inputParams: Partial = {}\n): CaptureOptions => {\n return {\n ...DefaultVtoCaptureOptions,\n ...inputParams,\n tracking: {\n ...DefaultTrackingOptions,\n ...inputParams.tracking,\n standstill: {\n ...DefaultTrackingOptions.standstill,\n ...inputParams.tracking?.standstill,\n },\n }\n };\n};\n\nconst setDefaultUploadImageOptions = (\n inputParams: Partial = {}\n): UploadOptions => {\n return {\n ...DefaultUploadOptions,\n ...inputParams,\n showLoading: (inputParams.showLoading === undefined || inputParams.showLoading === null) ? DefaultCaptureOptions.showLoading : inputParams.showLoading,\n };\n};\n\nconst validatePrivacyOptions = (\n privacy: PrivacyOptions\n): BipaPrivacyOptions => {\n // this throws an error if the URL is not valid\n return {\n termsAndConditions: new URL(privacy.termsAndConditions as string ),\n localizationText: privacy.localizationText,\n };\n};\n\nexport {\n setDefaultInitializeOptions,\n setDefaultCaptureOptions,\n setDefaultVtoCaptureOptions,\n setDefaultUploadImageOptions,\n validatePrivacyOptions,\n};\n","import { DeviceDetection } from '@luxottica/vm-devicedetection';\nimport { SupportedFeatures } from '../interfaces/InitializeResult';\n\nconst SupportedFeaturesHelper = {\n getSupportedFeatures() {\n return new Promise((resolve, reject) => {\n const devicedetection = new DeviceDetection();\n return devicedetection.isVideoInputDeviceAvailable().then((available) => {\n resolve({\n wasmSupport: devicedetection.isWebAssemblySupported(),\n webcamAccess: devicedetection.isUserMediaSupported(),\n webcamAvailable: available\n });\n }).catch((error) => {\n reject(error);\n });\n });\n }\n};\n\nexport { \n SupportedFeaturesHelper\n};\n","import { AgreementType, BipaManager, BipaPage, PrivacyLocalization } from '@luxottica/bipa-manager';\nimport { GuidanceCommand, PoseTracker, WasmEnvironment } from '@luxottica/vm-posetracker';\nimport { RemoteLog, RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../package.json';\nimport { closeFrameAdvisorComponent, loadFrameAdvisor } from './components/fa-capture/FrameAdvisorLoader';\nimport { uploadImageData } from './components/upload-image/UploadImageData';\nimport { closeUploadImageComponent, loadUploadImage } from './components/upload-image/UploadImageLoader';\nimport { closeVtoCaptureComponent, loadVtoCapture } from './components/vto-capture/VtoCaptureLoader';\nimport { FrameAdvisorError, InitializationError, MountError, NotInitializedError } from './errors/errors';\nimport { setAuthData } from './helpers/AuthHelper';\nimport { setCallbacks } from './helpers/CallbackHelper';\nimport { setConfig } from './helpers/ConfigHelper';\nimport { LocalizationHelper } from './helpers/LocalizationHelper';\nimport { setDefaultCaptureOptions, setDefaultInitializeOptions, setDefaultUploadImageOptions, setDefaultVtoCaptureOptions, validatePrivacyOptions } from './helpers/ParameterHelper';\nimport { RequestHelper } from './helpers/RequestHelper';\nimport { SupportedFeaturesHelper } from './helpers/SupportedFeaturesHelper';\nimport { CaptureParameters, FrameAdvisorProperty, FrameAdvisorResult, UploadImageDataParameters, UploadImageParameters, VtoCaptureParameters } from './interfaces/CaptureParameters';\nimport { AuthenticationOptions, FrameAdvisorCallbacks, FrameAdvisorRegion, InitializeParameters, PrivacyOptions } from './interfaces/InitializeParameters';\nimport { InitializeResult } from './interfaces/InitializeResult';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'FrameAdvisorCapture');\nconst remoteLog: RemoteLog = new RemoteLog();\nlet initialized = false;\n\nconst onError = (e) => {\n remoteLog.sendAppViewSession({\n statusCode: '99-error',\n statusText: e.message\n });\n};\n\nconst FrameAdvisorCapture = {\n\n version(): string {\n return 'v' + version;\n },\n\n initialize(\n initParams: InitializeParameters\n ): Promise {\n\n window.addEventListener('error', onError);\n logger.debug('initializing');\n initialized = false;\n\n // in this world promise is a valid alternative to try/catch block\n return Promise.resolve().then(() => {\n const validatedParams = setDefaultInitializeOptions(initParams.options);\n const validatedPrivacyOptions = validatePrivacyOptions(initParams.privacy);\n\n // set a CONFIG variable to be shared with capture() method\n setConfig(\n validatedParams.environment,\n validatedParams.region,\n validatedParams.source,\n validatedParams.locale,\n validatedPrivacyOptions, // validate privacy URLs\n validatedParams.tokenVersion\n );\n setCallbacks(initParams.callbacks);\n setAuthData(initParams.auth as AuthenticationOptions);\n\n return Promise.all([\n SupportedFeaturesHelper.getSupportedFeatures().then((features) => {\n return {\n locale: validatedParams.locale,\n isSupported: features.webcamAvailable && features.webcamAccess && features.wasmSupport,\n supportedFeatures: features\n };\n }),\n RequestHelper.login(validatedParams.tokenVersion)\n ]);\n }).then((responseData) => {\n // this downloads all the heavy stuff for the tracker engine\n PoseTracker.warmUp(WasmEnvironment.PROD);\n return LocalizationHelper.setLocalizationText(responseData[0].locale).then(() => {\n initialized = true;\n return {\n locale: responseData[0].locale,\n isSupported: responseData[0].isSupported,\n supportedFeatures: responseData[0].supportedFeatures,\n };\n });\n }).catch((e) => {\n if (e instanceof FrameAdvisorError) {\n throw e;\n } else {\n const error = new InitializationError(initParams, undefined, e);\n logger.error(error);\n throw error;\n }\n });\n },\n\n resetBipaState(): void {\n document.cookie = `${BipaManager.getCookieName(AgreementType.BIOMETRIC)}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;\n },\n\n capture(\n captureParams: CaptureParameters\n ): Promise {\n if (!initialized) {\n return Promise.reject(new NotInitializedError());\n }\n\n const validatedOptions = setDefaultCaptureOptions(captureParams.options);\n return RequestHelper.startSession().then(() => {\n return new Promise((resolve, reject) => {\n const container = document.getElementById(captureParams.target);\n if (!!container) {\n loadFrameAdvisor(container, validatedOptions, () => { resolve(undefined); });\n } else {\n reject(new MountError(captureParams.target));\n }\n });\n });\n },\n\n close(): void {\n closeFrameAdvisorComponent();\n window.removeEventListener('error', onError);\n },\n\n vtoCapture(\n vtoCaptureParams: VtoCaptureParameters\n ): Promise {\n if (!initialized) {\n return Promise.reject(new NotInitializedError());\n }\n\n const validatedOptions = setDefaultVtoCaptureOptions(vtoCaptureParams.options);\n return RequestHelper.startSession().then(() => {\n return new Promise((resolve, reject) => {\n const container = document.getElementById(vtoCaptureParams.target);\n if (!!container) {\n loadVtoCapture(container, validatedOptions, () => { resolve(undefined); });\n } else {\n reject(new MountError(vtoCaptureParams.target));\n }\n });\n });\n },\n\n closeVtoCapture(): void {\n closeVtoCaptureComponent();\n window.removeEventListener('error', onError);\n },\n\n uploadImage(\n uploadParams: UploadImageParameters\n ): Promise {\n if (!initialized) {\n return Promise.reject(new NotInitializedError());\n }\n\n const validatedOptions = setDefaultUploadImageOptions(uploadParams.options);\n return new Promise((resolve, reject) => {\n const container = document.getElementById(uploadParams.target);\n if (!!container) {\n loadUploadImage(container, validatedOptions, () => { resolve(undefined); });\n } else {\n reject(new MountError(uploadParams.target));\n }\n });\n },\n\n uploadImageData(\n uploadParams: UploadImageDataParameters\n ): Promise {\n if (!initialized) {\n return Promise.reject(new NotInitializedError());\n }\n\n const validatedOptions = setDefaultUploadImageOptions(uploadParams.options);\n return uploadImageData(uploadParams.imageData, validatedOptions);\n },\n\n closeUploadImage(): void {\n closeUploadImageComponent();\n window.removeEventListener('error', onError);\n },\n};\n\nexport {\n FrameAdvisorCapture,\n GuidanceCommand,\n InitializeParameters,\n FrameAdvisorCallbacks,\n FrameAdvisorRegion,\n CaptureParameters,\n FrameAdvisorResult,\n FrameAdvisorProperty,\n BipaPage,\n PrivacyOptions,\n PrivacyLocalization,\n};\n","import { FieldError } from '../interfaces/FieldError';\n\nclass BipaError extends Error {\n public type: string;\n\n constructor(type: string, message: string, error?: Error) {\n super(message);\n this.type = type;\n this.name = type;\n this.message = message;\n this.stack = error?.stack;\n\n Object.setPrototypeOf(this, BipaError.prototype);\n }\n}\n\nclass MissingTranslationError extends BipaError {\n public static type = 'MissingTranslationError';\n\n constructor(locale: string) {\n super(MissingTranslationError.type, `translation missing for locale: ${locale}`);\n Object.setPrototypeOf(this, MissingTranslationError.prototype);\n }\n}\n\nclass PrivacyError extends BipaError {\n public static type = 'PrivacyError';\n\n constructor(message: string, error?: Error) {\n super(PrivacyError.type, message, error);\n Object.setPrototypeOf(this, PrivacyError.prototype);\n }\n}\n\nclass BipaServiceError extends BipaError {\n public static type = 'BipaServiceError';\n\n constructor(message: string, error?: Error) {\n super(BipaServiceError.type, message, error);\n Object.setPrototypeOf(this, BipaServiceError.prototype);\n }\n}\n\nclass BipaSubmissionError extends BipaError {\n public static type = 'BipaSubmissionError';\n public fieldErrors: FieldError[];\n\n constructor(message: string, fieldErrors?: FieldError[], error?: Error) {\n super(BipaSubmissionError.type, message, error);\n this.fieldErrors = fieldErrors;\n Object.setPrototypeOf(this, BipaSubmissionError.prototype);\n }\n}\n\nexport {\n MissingTranslationError,\n PrivacyError,\n BipaServiceError,\n BipaSubmissionError\n};\n","import { PrivacyLocalization } from '../interfaces/PrivacyLocalization';\n\nexport const DefaultPrivacyLocalization: PrivacyLocalization = {\n PRIVACY_AGREEMENT_TITLE: 'Biometric data consent',\n PRIVACY_FIRST_AGREEMENT: 'We need your consent to record your face\\'s biometric data and proceed with our eyewear suggestion experience. We will not store any of your information in our database and once the process is finished, we will delete all of your personal data.',\n PRIVACY_IMPLICIT_AGREEMENT: 'By continuing you accept',\n PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS: 'Terms and Conditions',\n PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION: ' and ',\n PRIVACY_IMPLICIT_PRIVACY_POLICY: 'Privacy Policy',\n PRIVACY_BUTTON_SUBMIT: 'Submit',\n PRIVACY_BUTTON_CANCEL: 'Cancel',\n BIPA_FORM_TITLE: 'Biometric data consent',\n BIPA_CITIZEN_DECLARATION: 'I declare I\\'m an Illinois citizen',\n BIPA_FORM_SUBTITLE: 'Due to some Illinois regulations we need to ask you some information, please fill in your details below.',\n BIPA_FORM_NAME: 'Name',\n BIPA_FORM_SURNAME: 'Surname',\n BIPA_FORM_EMAIL: 'E-mail',\n BIPA_IMPLICIT_AGREEMENT: 'By continuing you accept',\n BIPA_IMPLICIT_TERMS_AND_CONDITIONS: 'Terms and Conditions',\n BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION: ' and ',\n BIPA_IMPLICIT_PRIVACY_POLICY: 'Privacy Policy',\n BIPA_FORM_IMPLICIT_AGREEMENT: 'By continuing you accept Luxottica\\'s Terms and Conditions and below BIPA Notice.',\n BIPA_FORM_BUTTON_SUBMIT: 'Submit',\n BIPA_FORM_BUTTON_CANCEL: 'Cancel',\n BIPA_SERVER_ERROR: 'There was a problem with the server, please check insered informations or network connection'\n};\n","import { DefaultPrivacyLocalization } from '../constants/DefaultPrivacyLocalization';\nimport { PrivacyLocalization, PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\n\nlet currentLocalizationText: PrivacyLocalization;\n\nconst LocalizationHelper = {\n setText: (localizationText: PrivacyLocalization): void => {\n currentLocalizationText = {\n ...currentLocalizationText,\n ...DefaultPrivacyLocalization,\n ...localizationText\n };\n },\n\n getText: (key: PrivacyLocalizationKey): string => {\n return (!!currentLocalizationText[key]) ? currentLocalizationText[key] : '';\n }\n};\n\nexport {\n LocalizationHelper\n};","enum PrivacyLocalizationKey {\n PRIVACY_AGREEMENT_TITLE = 'PRIVACY_AGREEMENT_TITLE',\n PRIVACY_AGREEMENT_TEXT = 'PRIVACY_AGREEMENT_TEXT',\n PRIVACY_FIRST_AGREEMENT = 'PRIVACY_FIRST_AGREEMENT',\n PRIVACY_IMPLICIT_AGREEMENT = 'PRIVACY_IMPLICIT_AGREEMENT',\n PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS = 'PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS',\n PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION = 'PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION',\n PRIVACY_IMPLICIT_PRIVACY_POLICY = 'PRIVACY_IMPLICIT_PRIVACY_POLICY',\n PRIVACY_BUTTON_SUBMIT = 'PRIVACY_BUTTON_SUBMIT',\n PRIVACY_BUTTON_CANCEL = 'PRIVACY_BUTTON_CANCEL',\n BIPA_CITIZEN_DECLARATION = 'BIPA_CITIZEN_DECLARATION',\n BIPA_CITIZEN_QUESTION = 'BIPA_CITIZEN_QUESTION',\n BIPA_FORM_TITLE = 'BIPA_FORM_TITLE',\n BIPA_FORM_SUBTITLE = 'BIPA_FORM_SUBTITLE',\n BIPA_FORM_NAME = 'BIPA_FORM_NAME',\n BIPA_FORM_SURNAME = 'BIPA_FORM_SURNAME',\n BIPA_FORM_EMAIL = 'BIPA_FORM_EMAIL',\n BIPA_FORM_ERROR = 'BIPA_FORM_ERROR',\n BIPA_FORM_ERROR_MAIL = 'BIPA_FORM_ERROR_MAIL',\n BIPA_FORM_MANDATORY_FIELD = 'BIPA_FORM_MANDATORY_FIELD',\n BIPA_IMPLICIT_AGREEMENT = 'BIPA_IMPLICIT_AGREEMENT',\n BIPA_IMPLICIT_TERMS_AND_CONDITIONS = 'BIPA_IMPLICIT_TERMS_AND_CONDITIONS',\n BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION = 'BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION',\n BIPA_IMPLICIT_PRIVACY_POLICY = 'BIPA_IMPLICIT_PRIVACY_POLICY',\n BIPA_FORM_IMPLICIT_AGREEMENT = 'BIPA_FORM_IMPLICIT_AGREEMENT',\n BIPA_FORM_BIPA_AGREEMENT = 'BIPA_FORM_BIPA_AGREEMENT',\n BIPA_FORM_BUTTON_SUBMIT = 'BIPA_FORM_BUTTON_SUBMIT',\n BIPA_FORM_BUTTON_CANCEL = 'BIPA_FORM_BUTTON_CANCEL',\n BIPA_NO = 'BIPA_NO',\n BIPA_SERVER_ERROR = 'BIPA_SERVER_ERROR',\n BIPA_YES = 'BIPA_YES',\n}\n\ntype PrivacyLocalization = {\n [key in PrivacyLocalizationKey]?: string;\n}\n\nexport {\n PrivacyLocalizationKey,\n PrivacyLocalization\n};\n","import { BipaFormData } from '../interfaces/BipaFormData';\nimport { FieldError } from '../interfaces/FieldError';\n\nconst NOT_BLANK = 'NotBlank';\nconst SIZE = 'Size';\nconst PATTERN = 'Pattern';\n\nconst EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst createFieldError = (field: string, message: string): FieldError => { return { objectName: 'bipaConsentPublic', field, message }; };\n\nconst ParameterHelper = {\n validateBipaForm: (bipaForm: BipaFormData): FieldError[] => {\n const fieldErrors: FieldError[] = [];\n\n if (!bipaForm?.firstName) { \n fieldErrors.push(createFieldError('firstName', NOT_BLANK));\n } else if (!!bipaForm?.firstName && bipaForm.firstName.trim().length < 2) {\n fieldErrors.push(createFieldError('firstName', SIZE));\n }\n\n if (!bipaForm?.lastName) { \n fieldErrors.push(createFieldError('lastName', NOT_BLANK));\n } else if (!!bipaForm?.lastName && bipaForm.lastName.trim().length < 2) {\n fieldErrors.push(createFieldError('lastName', SIZE));\n }\n\n if (!bipaForm?.email) { \n fieldErrors.push(createFieldError('email', NOT_BLANK));\n } else if (!!bipaForm?.email && bipaForm.email.trim().length < 2) {\n fieldErrors.push(createFieldError('email', SIZE));\n } else if (!!bipaForm?.email && !bipaForm.email.trim().match(EMAIL_REGEX)) {\n fieldErrors.push(createFieldError('email', PATTERN));\n }\n\n return fieldErrors;\n }\n};\n\nexport {\n ParameterHelper\n};\n","import React from 'react';\n\nconst ErrorIcon = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport {\n ErrorIcon\n};\n","import { MicroserviceEnvironment, submitBipaFormRequest } from '@luxottica/vto-microservices';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { BipaServiceError } from '../errors/errors';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { ParameterHelper } from '../helpers/ParameterHelper';\nimport { BipaCallbacks } from '../interfaces/BipaCallbacks';\nimport { BipaFormData } from '../interfaces/BipaFormData';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport { BipaPrivacyOptions } from '../interfaces/PrivacyOptions';\nimport './BipaBiometricForm.scss';\nimport { ErrorIcon } from './ErrorIcon';\n\ninterface BipaBiometricFormProps {\n source: string;\n environment: MicroserviceEnvironment;\n accessToken: string;\n refreshToken: string;\n bipaVersion: number;\n formPrefill?: Partial;\n privacyOptions: BipaPrivacyOptions;\n callbacks: BipaCallbacks;\n onBipaSubmit: (formData: BipaFormData) => void;\n onCancel: () => void;\n onError: (e: Error) => void;\n}\n\nconst BipaBiometricForm = (props: BipaBiometricFormProps) => {\n\n const [firstName, setFirstName] = useState((!!props.formPrefill?.firstName) ? props.formPrefill.firstName : '');\n const [firstNameError, setFirstNameError] = useState(false);\n\n const [lastName, setLastName] = useState((!!props.formPrefill?.lastName) ? props.formPrefill.lastName : '');\n const [lastNameError, setLastNameError] = useState(false);\n\n const [email, setEmail] = useState((!!props.formPrefill?.email) ? props.formPrefill.email : '');\n const [emailError, setEmailError] = useState(false);\n\n const [serverError, setServerError] = useState(false);\n\n const topInputRef = useRef(undefined);\n\n useEffect(() => {\n props.callbacks?.onDisplayPage?.('BIOMETRIC_FORM');\n }, []);\n\n const onSubmitForm = () => {\n const formData = {\n firstName: firstName,\n lastName: lastName,\n email: email\n };\n\n if (!serverError) { setServerError(false); }\n\n const fieldErrors = ParameterHelper.validateBipaForm(formData).map(error => error.field);\n\n if (!firstName) { setFirstNameError(true); }\n if (!lastName) { setLastNameError(true); }\n if (!email) { setEmailError(true); }\n\n if (!firstName || !lastName || !email) {\n topInputRef.current.scrollIntoView();\n\n } else if (fieldErrors.length > 0) {\n if (fieldErrors.includes('firstName')) { setFirstNameError(true); }\n if (fieldErrors.includes('lastName')) { setLastNameError(true); }\n if (fieldErrors.includes('email')) { setEmailError(true); }\n topInputRef.current.scrollIntoView();\n\n } else {\n submitBipaFormRequest({\n source: props.source,\n environment: props.environment,\n accessToken: props.accessToken,\n refreshToken: props.refreshToken,\n firstName: formData.firstName,\n lastName: formData.lastName,\n email: formData.email,\n bipaVersion: props.bipaVersion,\n onAuthUpdated: props.callbacks.onAuthUpdated\n }).then((response) => {\n if (response.ok) {\n props.onBipaSubmit(formData);\n } else if (response.status < 404) {\n response.json().then((json) => {\n const errorFields: string[] = (!!json?.fieldErrors) ? json.fieldErrors.map(error => error.field) : [];\n console.info(errorFields);\n \n if (errorFields.includes('firstName')) { setFirstNameError(true); }\n if (errorFields.includes('lastName')) { setLastNameError(true); }\n if (errorFields.includes('email')) { setEmailError(true); }\n });\n } else {\n setServerError(true);\n props.onError(new BipaServiceError(`failed to submit bipa form due to response=${response.status} ${response.statusText}`));\n }\n }).catch((e) => {\n setServerError(true);\n props.onError(e);\n });\n }\n };\n\n const handleInputChange = (\n element: React.ChangeEvent,\n dispatch: React.Dispatch>\n ) => {\n if (!!element.target.value && element.target.value !== '') {\n dispatch(element.target.value);\n } else {\n dispatch('');\n }\n };\n\n const confirmButtonDisabled = firstName === undefined || firstName === ''\n || lastName === undefined || lastName === ''\n || email === undefined || email === '';\n const showFieldWarning = firstNameError || lastNameError || emailError;\n\n return (\n
\n\n
\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_TITLE)}

\n\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_SUBTITLE)}

\n\n { showFieldWarning &&\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_ERROR)}

\n }\n\n { serverError &&\n

{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_SERVER_ERROR)}

\n }\n\n
\n {\n setFirstNameError(false);\n handleInputChange(element, setFirstName);\n }}\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_NAME)}/>\n { firstNameError && }\n
\n
\n {\n setLastNameError(false);\n handleInputChange(element, setLastName);\n }}\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_SURNAME)}/>\n { lastNameError && }\n
\n
\n {\n setEmailError(false);\n handleInputChange(element, setEmail);\n }}\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_EMAIL)}/>\n { emailError && }\n
\n { emailError &&
{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_ERROR_MAIL)}
}\n
{LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_MANDATORY_FIELD)}
\n
\n\n
\n
\n \n\n \n
\n
\n
\n );\n};\n\nexport {\n BipaBiometricForm\n};\n","import React from 'react';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport './YesNoCheckBox.scss';\n\ninterface YesNoCheckBoxProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nconst YesNoCheckBox = (props: YesNoCheckBoxProps) => {\n\n return (\n
\n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_NO)}\n \n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_YES)}\n
\n );\n};\n\nexport {\n YesNoCheckBox\n};\n","import React, { useEffect, useState } from 'react';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { BipaCallbacks } from '../interfaces/BipaCallbacks';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport { BipaPrivacyOptions } from '../interfaces/PrivacyOptions';\n\nimport './PrivacyAgreement.scss';\nimport { YesNoCheckBox } from './YesNoCheckbox';\n\ninterface PrivacyAgreementProps {\n region: string,\n isIllinoisUser: boolean;\n privacyOptions: BipaPrivacyOptions;\n callbacks: BipaCallbacks;\n onSetIllinoisUser: (isIllinois: boolean) => void;\n onSubmit: () => void;\n onCancel: () => void;\n}\n\nconst PrivacyAgreement = (props: PrivacyAgreementProps) => {\n \n const [showGradient, setShowGradient] = useState(true);\n\n useEffect(() => {\n props.callbacks?.onDisplayPage?.('PRIVACY');\n\n try {\n if (document.getElementsByClassName('scrollable-container')[0].clientHeight >= document.getElementsByClassName('scrollable-content')[0].clientHeight) {\n setShowGradient(false);\n }\n } catch (e) { }\n }, []);\n\n const trackScrolling = (e: React.UIEvent) => {\n if (e.currentTarget.scrollTop < 2) {\n !showGradient && setShowGradient(true);\n } else {\n showGradient && setShowGradient(false);\n }\n };\n\n return (\n
\n\n
\n\n
\n\n

{LocalizationHelper.getText(PrivacyLocalizationKey.PRIVACY_AGREEMENT_TITLE)}

\n\n \n\n {props.region === 'US' &&\n <>\n
\n \n
\n\n
\n { props.onSetIllinoisUser(checked); }}/>\n
\n \n }\n\n \n\n {props.region === 'US' &&\n \n }\n\n
\n
\n\n
\n
\n\n \n
\n );\n};\n\nexport {\n PrivacyAgreement\n};\n","import { AgreementType } from '../constants/AgreementType';\n\nconst BASIC_COOKIE_NAME = 'BasicImageConsent=true';\nconst BIOMETRIC_COOKIE_NAME = 'MlProcessImageConsent=true';\nconst COOKIE_PATH = 'path=/';\n\nconst CookieHelper = {\n setBiometricCookie: (agreementType: AgreementType): void => {\n if (!CookieHelper.biometricCookieExists(agreementType)) {\n document.cookie = `${CookieHelper.getBiometricCookieName(agreementType)};${COOKIE_PATH}`;\n }\n },\n\n biometricCookieExists: (agreementType: AgreementType): boolean => {\n if (agreementType === AgreementType.BASIC) {\n return document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BASIC))\n || document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BIOMETRIC));\n\n } else if (agreementType === AgreementType.BIOMETRIC) {\n return document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BIOMETRIC));\n\n } else {\n return false;\n }\n },\n\n getBiometricCookieName: (agreementType: AgreementType): string => {\n return agreementType === AgreementType.BIOMETRIC ? BIOMETRIC_COOKIE_NAME : BASIC_COOKIE_NAME;\n }\n};\n\nexport {\n CookieHelper\n};","import { MicroserviceEnvironment } from '@luxottica/vto-microservices';\nimport { AgreementType } from '../constants/AgreementType';\nimport { MissingTranslationError } from '../errors/errors';\nimport { PrivacyLocalization } from '../interfaces/PrivacyLocalization';\n\nconst localizationBaseUrl = 'https://d5nhc6q3o19l2.cloudfront.net';\n\nconst fetchBipaJson = (\n agreementType: AgreementType,\n environment: MicroserviceEnvironment,\n locale: string\n): Promise => {\n if (agreementType === AgreementType.BASIC) {\n // const localizationFileUrl = `${localizationBaseUrl}/frame-advisor/${locale}/bipa-vm_${locale}.json`;\n // TODO: update environment\n const localizationFileUrl = `${localizationBaseUrl}/vmmv/v1/prod/privacy/application_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n\n } else {\n const localizationFileUrl = `${localizationBaseUrl}/frame-advisor/v2/${bipaJsonEnv(environment)}/privacy/privacy_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json() as PrivacyLocalization;\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n }\n\n};\n\nconst bipaJsonEnv = (environment: MicroserviceEnvironment): 'dev' | 'prod' | 'test' => {\n switch (environment) {\n case 'STAGING':\n return 'dev';\n\n case 'PRODUCTION':\n return 'prod';\n\n case 'ACCEPTANCE':\n default:\n return 'test';\n }\n};\n\nexport {\n fetchBipaJson\n};\n","import { bipaAgreementRequest, loginRequest, MicroserviceEnvironment } from '@luxottica/vto-microservices';\nimport React, { useEffect, useRef, useState } from 'react';\nimport './BipaOverlay.scss';\nimport { BipaBiometricForm } from './components/BipaBiometricForm';\nimport { PrivacyAgreement } from './components/PrivacyAgreement';\nimport { AgreementType } from './constants/AgreementType';\nimport { ROOT_STYLE_NAME } from './constants/Styling';\nimport { CookieHelper } from './helpers/CookieHelper';\nimport { LocalizationHelper } from './helpers/LocalizationHelper';\nimport { fetchBipaJson } from './helpers/RequestHelper';\nimport { BipaCallbacks } from './interfaces/BipaCallbacks';\nimport { BipaFormData } from './interfaces/BipaFormData';\nimport { BipaPage } from './interfaces/BipaPage';\nimport { BipaPrivacyOptions } from './interfaces/PrivacyOptions';\n\ninterface BipaOverlayProps {\n type: AgreementType;\n environment: MicroserviceEnvironment;\n tokenVersion: 1 | 2;\n accessToken: string;\n refreshToken: string;\n locale: string;\n region: string;\n source: string;\n formPrefill?: Partial;\n privacy: BipaPrivacyOptions;\n callbacks: BipaCallbacks;\n}\n\nconst BipaOverlay = (props: BipaOverlayProps) => {\n\n const isFirstRender = useRef(true);\n\n const [illinoisUser, setIlliniosUser] = useState(false);\n const [currentPage, setCurrentPage] = useState(undefined);\n const [bipaVersion, setBipaVersion] = useState(undefined);\n\n const onClickSubmit = () => {\n if (illinoisUser) {\n setCurrentPage('BIOMETRIC_FORM');\n } else {\n CookieHelper.setBiometricCookie(props.type);\n props.callbacks.onSubmit();\n }\n };\n\n const onClickBipaSubmit = (formData: BipaFormData) => {\n CookieHelper.setBiometricCookie(props.type);\n props.callbacks.onSubmit(formData);\n };\n\n const onClickCancel = () => {\n props.callbacks.onUserReject();\n };\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n\n loginRequest({\n environment: props.environment,\n version: props.tokenVersion,\n accessToken: props.accessToken,\n refreshToken: props.refreshToken,\n onAuthUpdated: props.callbacks.onAuthUpdated\n }).then((loginReturn) => {\n return Promise.all([\n fetchBipaJson(props.type, props.environment, props.locale),\n (props.region === 'US') ? bipaAgreementRequest({\n locale: props.locale,\n environment: props.environment,\n accessToken: loginReturn.accessToken,\n refreshToken: loginReturn.refreshToken,\n onAuthUpdated: props.callbacks.onAuthUpdated\n }) : Promise.resolve(undefined)\n ]);\n }).then((response) => {\n const bipaAgreementText = (!!response?.[1]?.text) ? response[1].text : undefined;\n const bipaAgreementVersion = (!!response?.[1]?.version) ? response[1].version : undefined;\n \n LocalizationHelper.setText({\n ...response[0],\n BIPA_FORM_BIPA_AGREEMENT: bipaAgreementText,\n ...props.privacy.localizationText,\n });\n setBipaVersion(bipaAgreementVersion);\n setCurrentPage('PRIVACY');\n }).catch((e) => {\n props.callbacks.onError(e);\n });\n }\n }, []);\n\n const renderPage = (props: BipaOverlayProps, currentPage: BipaPage) => {\n if (currentPage === 'PRIVACY') {\n return (\n { setIlliniosUser(isIllinoisUser); }}\n onSubmit={onClickSubmit}\n onCancel={onClickCancel}/>\n );\n } else if (currentPage === 'BIOMETRIC_FORM') {\n return (\n setCurrentPage('PRIVACY')}\n onError={props.callbacks.onError}/>\n );\n }\n };\n\n return (\n
\n
\n {renderPage(props, currentPage)}\n
\n
\n );\n};\n\nexport {\n BipaOverlay,\n BipaOverlayProps\n};\n","const ROOT_STYLE_NAME = 'bipa-overlay-root-style';\n\nexport {\n ROOT_STYLE_NAME\n};\n","import { bipaAgreementRequest, BipaAgreementReturn, MicroserviceEnvironment, submitBipaFormRequest } from '@luxottica/vto-microservices';\nimport { BipaOverlay, BipaOverlayProps } from './BipaOverlay';\nimport { AgreementType } from './constants/AgreementType';\nimport { BipaSubmissionError } from './errors/errors';\nimport { CookieHelper } from './helpers/CookieHelper';\nimport { ParameterHelper } from './helpers/ParameterHelper';\nimport { BipaCallbacks } from './interfaces/BipaCallbacks';\nimport { BipaVersionParameters, SaveBipaEntryParameters } from './interfaces/BipaConfiguration';\nimport { BipaFormData } from './interfaces/BipaFormData';\nimport { BipaPage } from './interfaces/BipaPage';\nimport { PrivacyLocalization, PrivacyLocalizationKey } from './interfaces/PrivacyLocalization';\nimport { BipaPrivacyOptions } from './interfaces/PrivacyOptions';\n\nconst BipaManager = {\n getCookieName: (agreementType: AgreementType): string => {\n return CookieHelper.getBiometricCookieName(agreementType);\n },\n\n biometricCookieExists: (agreementType: AgreementType): boolean => {\n return CookieHelper.biometricCookieExists(agreementType);\n },\n\n getBipaVersion: (config: BipaVersionParameters): Promise => {\n return bipaAgreementRequest({\n locale: config.locale,\n environment: config.environment,\n accessToken: config.accessToken,\n refreshToken: config.refreshToken,\n onAuthUpdated: config.onAuthUpdated\n });\n },\n\n saveBipaEntry: (\n config: SaveBipaEntryParameters\n ): Promise => {\n const fieldErrors = ParameterHelper.validateBipaForm(config.formData);\n if (fieldErrors.length > 0) {\n return Promise.reject(new BipaSubmissionError('failed client-side bipa form validation', fieldErrors));\n }\n\n return submitBipaFormRequest({\n environment: config.environment,\n accessToken: config.accessToken,\n refreshToken: config.refreshToken,\n onAuthUpdated: config.onAuthUpdated,\n bipaVersion: config.bipaVersion,\n source: config.source,\n firstName: config.formData.firstName,\n lastName: config.formData.lastName,\n email: config.formData.email\n }).then((response) => {\n return response.json().then((json) => {\n return {\n response: response,\n body: json\n };\n });\n }).then((responseData) => {\n if (responseData.response.ok) {\n return responseData.response;\n } else {\n return (!!responseData.body?.title && !!responseData.body?.message) ?\n Promise.reject(new BipaSubmissionError(`${responseData.body.title}: ${responseData.body.message}`, responseData.body.fieldErrors))\n :\n Promise.reject(new BipaSubmissionError('failed to contact bipa server', undefined));\n }\n }).catch((e) => {\n if (e instanceof BipaSubmissionError) {\n throw e;\n } else {\n throw new BipaSubmissionError('failed to contact bipa server', undefined);\n }\n });\n }\n};\n\nexport {\n AgreementType,\n MicroserviceEnvironment,\n BipaManager,\n BipaVersionParameters,\n SaveBipaEntryParameters,\n BipaPage,\n BipaOverlay,\n BipaOverlayProps,\n BipaFormData,\n BipaPrivacyOptions,\n PrivacyLocalization,\n PrivacyLocalizationKey,\n BipaCallbacks,\n};\n","import { UAParser } from \"ua-parser-js\";\n\nclass UserAgentParser {\n\n public static getInstance() {\n if (!UserAgentParser.instance) {\n UserAgentParser.instance = new UserAgentParser();\n }\n return UserAgentParser.instance;\n }\n\n private static instance: UserAgentParser;\n private userAgentData: IUAParser.IResult;\n\n private constructor() {\n this.userAgentData = new UAParser().getResult();\n }\n\n public getUserAgentData(): IUAParser.IResult {\n return this.userAgentData;\n }\n\n}\n\nexport { UserAgentParser };\n","\nclass WasmDetection {\n\n public static getInstance() {\n if (!WasmDetection.instance) {\n WasmDetection.instance = new WasmDetection();\n }\n return WasmDetection.instance;\n }\n\n private static instance: WasmDetection;\n\n private simplewasm = Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00);\n\n public isWebAssemblySupported(): boolean {\n let supported = false;\n try {\n if (typeof WebAssembly === \"object\" && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(this.simplewasm);\n supported = module instanceof WebAssembly.Module\n && new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n supported = false;\n }\n return supported;\n }\n\n}\n\nexport { WasmDetection };\n","\nclass WebGlDetection {\n\n public static getInstance() {\n if (!WebGlDetection.instance) {\n WebGlDetection.instance = new WebGlDetection();\n }\n return WebGlDetection.instance;\n }\n\n private static instance: WebGlDetection;\n\n private static tmpCanvasElementId = \"canvas-for-webgl-check\";\n private static webglCtxAttributes: WebGLContextAttributes = { depth: true, premultipliedAlpha: false };\n\n public isWebGlSupported(): boolean {\n let supported = false;\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"id\", WebGlDetection.tmpCanvasElementId);\n if (canvas) {\n const webglContext = this.getWebglContext(canvas, [\"webgl2\", \"webgl\", \"experimental-webgl\"]);\n if (webglContext) {\n supported = true;\n }\n }\n } catch (e) {\n supported = false;\n } finally {\n if (document) {\n const elementToRemove = document.getElementById(WebGlDetection.tmpCanvasElementId);\n if (elementToRemove) {\n elementToRemove.outerHTML = \"\";\n }\n }\n }\n return supported;\n }\n\n private getWebglContext(canvas: HTMLCanvasElement, webglContext: string[]): WebGLRenderingContext {\n let webglRenderingContext: any;\n for (const contextName of webglContext) {\n webglRenderingContext = canvas.getContext(contextName, WebGlDetection.webglCtxAttributes);\n if (webglRenderingContext) {\n break;\n }\n }\n return webglRenderingContext;\n }\n\n}\n\nexport { WebGlDetection };\n","declare global {\n // tslint:disable-next-line:interface-name\n interface Window { webkit: any; }\n}\n\nclass WebRtcDetection {\n\n public static getInstance() {\n if (!WebRtcDetection.instance) {\n WebRtcDetection.instance = new WebRtcDetection();\n }\n return WebRtcDetection.instance;\n }\n\n private static instance: WebRtcDetection;\n\n public isUserMediaSupported(): boolean {\n return this.isMediaDeviceAvailable() || this.isNativeBridgePresent();\n }\n\n public isVideoInputDeviceAvailable() {\n let videoInputDeviceAvailability: Promise;\n try {\n if (this.isMediaDeviceAvailable()) {\n videoInputDeviceAvailability = navigator.mediaDevices.enumerateDevices()\n .then((devices) => devices.some((device) => device.kind === \"videoinput\"));\n } else if (this.isNativeBridgePresent()) {\n videoInputDeviceAvailability = Promise.resolve(true);\n } else {\n videoInputDeviceAvailability = Promise.resolve(false);\n }\n } catch (e) {\n videoInputDeviceAvailability = Promise.resolve(false);\n }\n return videoInputDeviceAvailability;\n }\n\n private isMediaDeviceAvailable(): boolean {\n return (typeof navigator.mediaDevices === \"object\") && (typeof navigator.mediaDevices.getUserMedia === \"function\");\n }\n\n private isNativeBridgePresent(): boolean {\n return (\n // TODO do we need to create a vm-nativebridge module in order to centralise this check?\n typeof window.webkit === \"object\" &&\n typeof(window.webkit.messageHandlers) === \"object\" &&\n typeof(window.webkit.messageHandlers.startNativeCam) === \"object\"\n );\n }\n}\n\nexport { WebRtcDetection };\n","import { UserAgentParser } from \"./parser/UserAgentParser\";\nimport { WasmDetection } from \"./wasm/WasmDetection\";\nimport { WebGlDetection } from \"./webgl/WebGlDetection\";\nimport { WebRtcDetection } from \"./webrtc/WebRtcDetection\";\n\nclass DeviceDetection {\n\n private uaData: IUAParser.IResult;\n\n constructor() {\n this.uaData = UserAgentParser.getInstance().getUserAgentData();\n }\n\n public isAppleiOS13() {\n let isIOS13 = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.os.version && this.uaData.os.version.startsWith(\"13\")) {\n isIOS13 = true;\n // tslint:disable-next-line: no-console\n console.info(\"--- detected iOS 13 ---\");\n }\n } else if (this.isiPadOS()) {\n isIOS13 = true;\n // tslint:disable-next-line: no-console\n console.info(\"--- detected iPad 13 ---\");\n // tslint:disable-next-line: no-console\n console.warn(\"iPad OS detection is still a workaround, Apple does not use a specific UA for iPad\");\n }\n return isIOS13;\n }\n\n public isiOS(): boolean {\n return ((this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") || this.isiPadOS());\n }\n\n // Workaround for iPadOS which is currently not detectable via UA\n // https://github.com/faisalman/ua-parser-js/issues/387#issuecomment-579147248\n public isiPadOS() {\n const osName = (this.uaData.os && this.uaData.os.name && this.uaData.os.name) || undefined;\n const iPadOS = window.orientation !== undefined && osName === \"Mac OS\";\n return osName === \"iOS\" || iPadOS;\n }\n\n public getUserAgentData(): IUAParser.IResult {\n return this.uaData;\n }\n\n public isWebView(): boolean {\n let isWebView = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.engine && this.uaData.engine.name && this.uaData.engine.name === \"WebKit\") {\n if (this.uaData.browser && this.uaData.browser.name && this.uaData.browser.name === \"WebKit\") {\n isWebView = true;\n }\n }\n }\n return isWebView;\n }\n\n public isWebViewBrowser(): boolean {\n let isWebViewBrowser = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.engine && this.uaData.engine.name && this.uaData.engine.name === \"WebKit\") {\n if (this.uaData.browser && this.uaData.browser.name && this.uaData.browser.name !== \"Mobile Safari\") {\n isWebViewBrowser = true;\n }\n }\n }\n return isWebViewBrowser;\n }\n\n public isWebAssemblySupported(): boolean {\n return WasmDetection.getInstance().isWebAssemblySupported();\n }\n\n public isUserMediaSupported(): boolean {\n return WebRtcDetection.getInstance().isUserMediaSupported();\n }\n\n public isVideoInputDeviceAvailable() {\n return WebRtcDetection.getInstance().isVideoInputDeviceAvailable();\n }\n\n public isWebGlSupported() {\n return WebGlDetection.getInstance().isWebGlSupported();\n }\n\n}\n\nexport { DeviceDetection };\n","import { RemoteLogConfig } from \"@luxottica/vm-remotelog\";\nimport mitt from \"mitt\";\nimport { name, version } from \"../package.json\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"EventBus\");\n\nclass EventBus {\n\n public static publish(evtName: string, evtData: any) {\n logger.debug(\"publishing event '{}': {}\", evtName, JSON.stringify(evtData));\n EventBus.emitter.emit(evtName, evtData);\n logger.debug(\"published event '{}': {}\", evtName, JSON.stringify(evtData));\n }\n\n public static register(evtName: string, evtHandler: any) {\n logger.debug(\"registering event '{}': {}\", evtName, JSON.stringify(evtHandler));\n EventBus.emitter.on(evtName, evtHandler);\n logger.debug(\"registered event '{}': {}\", evtName, JSON.stringify(evtHandler));\n }\n\n private static emitter: mitt.Emitter = mitt();\n\n constructor() {\n logger.info(\"event bus initialized: {}\", EventBus.emitter.constructor.name);\n }\n\n}\n\nexport { EventBus };\n","export enum GuidanceCommand {\n NONE = 7,\n UNKNOWN = 8,\n MOVE_CENTER = 9,\n MOVE_CLOSER = 10,\n MOVE_FARTHER = 11,\n MOVE_UP = 12,\n MOVE_RIGHT = 13,\n MOVE_DOWN = 14,\n MOVE_LEFT = 15,\n LOOK_UP = 16,\n LOOK_RIGHT = 17,\n LOOK_DOWN = 18,\n LOOK_LEFT = 19,\n TILT_LEFT = 20,\n TILT_RIGHT = 21,\n STAY_STILL = 22\n}\n","export enum NudgingType {\n OFF = 0,\n ON = 1,\n STANDSTILL = 2,\n}\n","export enum StandstillStatus {\n ON = 1,\n PENDING = 2,\n OFF = 3\n}\n","export enum TrackResult {\n OK = 0,\n LostWillTryRecovery = -3,\n LostWillReset = -4,\n FaceFittingTooNarrow = -5,\n AnglesOutOfRange = -6,\n NoFaceFound = -10,\n FaceTooSmallDetected = -11,\n FaceDetectedWaitForMoreSamples = -12,\n TrackerStopped = -20\n}\n","class Timer {\n\n private startTime: number;\n\n public start = (): void => {\n this.startTime = Date.now();\n }\n\n public continue = (): void => {\n if (!this.startTime) {\n this.startTime = Date.now();\n }\n }\n\n public reset = (): void => {\n this.startTime = undefined;\n }\n\n public on = (): boolean => {\n return this.startTime !== undefined;\n }\n\n public currentDuration = (): number => {\n return Date.now() - this.startTime;\n }\n}\n\nexport { Timer };\n","import { RemoteLogConfig } from \"@luxottica/vm-remotelog\";\nimport { name, version } from \"../../package.json\";\nimport { GuidanceCommand } from \"../constants/GuidanceCommand\";\nimport { NudgingType } from \"../constants/NudgingType.js\";\nimport { StandstillStatus } from \"../constants/StandstillStatus\";\nimport { TrackResult } from \"../constants/TrackResult\";\nimport { TrackingOptions } from \"../PoseTracker\";\nimport { Timer } from \"../utils/Timer.js\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"GuidanceEngine\");\n\ndeclare interface StandstillOptions {\n timeLimit: number;\n positionVariance: number;\n axisVariance: number;\n depthRange: number[];\n}\n\nclass GuidanceEngine {\n\n public nudgingType: NudgingType;\n public oldTrackResult: TrackResult;\n public guidanceStatus: GuidanceCommand;\n public standstillStatus: StandstillStatus;\n public renderDelay: boolean = false;\n public shouldReset: boolean = false;\n\n private pendingFrameCounter = 0;\n private pendingFrameLimit = 100;\n\n private standstillTimer: Timer;\n private standstillOptions: StandstillOptions;\n\n constructor(\n options: TrackingOptions\n ) {\n this.standstillTimer = new Timer();\n this.guidanceStatus = GuidanceCommand.NONE;\n this.standstillStatus = StandstillStatus.ON;\n this.updateTrackingOptions(options);\n }\n\n public updateTrackingOptions(options: TrackingOptions): any {\n this.nudgingType = options.nudgingType;\n this.standstillOptions = {\n timeLimit: options.standstill.timeLimit,\n positionVariance: options.standstill.positionVariance,\n axisVariance: options.standstill.axisVariance * (Math.PI / 180),\n depthRange: options.standstill.depthRange\n };\n }\n public addPose(pose: Float32Array, status: TrackResult, imageData: ImageData) {\n const oldGuidanceStatus = this.guidanceStatus;\n const oldStandstillStatus = this.standstillStatus;\n this.renderDelay = false;\n\n if (this.nudgingType === NudgingType.OFF) {\n this.updateDisabledGuidance(pose, status);\n } else if (this.nudgingType === NudgingType.ON) {\n this.updateGuidance(pose, status);\n this.updateDisabledStandstill(pose, status);\n } else {\n this.updateGuidance(pose, status);\n this.updateStandstill(pose, status);\n }\n\n if (this.oldTrackResult !== status\n || oldGuidanceStatus !== this.guidanceStatus\n || oldStandstillStatus !== this.standstillStatus) {\n logger.debug(`new pose tracker status ${\n JSON.stringify({\n wasm: TrackResult[status],\n guidance: GuidanceCommand[this.guidanceStatus],\n standstill: StandstillStatus[this.standstillStatus]\n })\n }`);\n }\n\n this.oldTrackResult = status;\n }\n\n private updateGuidance(\n pose: Float32Array,\n status: TrackResult\n ): void {\n\n let guidanceCommand: GuidanceCommand;\n\n switch (status) {\n case TrackResult.OK:\n case TrackResult.TrackerStopped:\n case TrackResult.LostWillTryRecovery:\n guidanceCommand = GuidanceCommand.NONE;\n break;\n case TrackResult.NoFaceFound:\n case TrackResult.FaceTooSmallDetected:\n guidanceCommand = GuidanceCommand.UNKNOWN;\n break;\n case TrackResult.LostWillReset:\n case TrackResult.FaceDetectedWaitForMoreSamples:\n case TrackResult.AnglesOutOfRange:\n guidanceCommand = GuidanceCommand.MOVE_CENTER;\n break;\n case TrackResult.FaceFittingTooNarrow:\n guidanceCommand = GuidanceCommand.MOVE_CLOSER;\n break;\n default:\n guidanceCommand = GuidanceCommand.NONE;\n break;\n }\n\n this.guidanceStatus = guidanceCommand;\n }\n\n private updateDisabledGuidance(\n pose: Float32Array,\n status: TrackResult\n ): void {\n\n let guidanceCommand: GuidanceCommand;\n\n switch (status) {\n case TrackResult.OK:\n case TrackResult.TrackerStopped:\n case TrackResult.LostWillTryRecovery:\n guidanceCommand = GuidanceCommand.NONE;\n break;\n case TrackResult.NoFaceFound:\n case TrackResult.FaceTooSmallDetected:\n case TrackResult.LostWillReset:\n case TrackResult.FaceDetectedWaitForMoreSamples:\n case TrackResult.AnglesOutOfRange:\n case TrackResult.FaceFittingTooNarrow:\n guidanceCommand = GuidanceCommand.UNKNOWN;\n break;\n default:\n guidanceCommand = GuidanceCommand.NONE;\n break;\n }\n\n this.guidanceStatus = guidanceCommand;\n this.standstillStatus = (pose) ? StandstillStatus.ON : StandstillStatus.OFF;\n }\n\n private updateStandstill(\n pose: Float32Array,\n status: TrackResult\n ): void {\n\n if (!pose && status !== TrackResult.LostWillTryRecovery) {\n this.standstillStatus = StandstillStatus.ON;\n return;\n }\n\n switch (this.standstillStatus) {\n case StandstillStatus.ON:\n this.standstillTimer.reset();\n if (status === TrackResult.OK) {\n this.guidanceStatus = this.updateDirection(pose);\n this.standstillStatus = StandstillStatus.PENDING;\n }\n return;\n\n case StandstillStatus.PENDING:\n if (status !== TrackResult.OK) {\n this.standstillStatus = StandstillStatus.ON;\n } else {\n this.guidanceStatus = this.updateDirection(pose);\n\n if (this.guidanceStatus !== GuidanceCommand.STAY_STILL) {\n this.standstillTimer.reset();\n this.pendingFrameCounter++;\n if (this.pendingFrameCounter > this.pendingFrameLimit) {\n this.resetPoseTracker();\n }\n } else {\n this.standstillTimer.continue();\n this.pendingFrameCounter = 0;\n if (this.standstillTimer.currentDuration() > this.standstillOptions.timeLimit) {\n this.guidanceStatus = GuidanceCommand.NONE;\n this.standstillStatus = StandstillStatus.OFF;\n this.resetPoseTracker();\n this.renderDelay = true;\n }\n }\n }\n return;\n\n case StandstillStatus.OFF:\n if (status !== TrackResult.OK\n && status !== TrackResult.LostWillTryRecovery) {\n this.standstillStatus = StandstillStatus.ON;\n }\n return;\n }\n }\n\n private updateDisabledStandstill(\n pose: Float32Array,\n status: TrackResult\n ): void {\n if (status !== TrackResult.OK) {\n this.standstillStatus = StandstillStatus.ON;\n return;\n } else {\n if (this.standstillStatus === StandstillStatus.ON) {\n this.guidanceStatus = this.updateDirection(pose);\n if (this.guidanceStatus === GuidanceCommand.STAY_STILL) {\n this.guidanceStatus = GuidanceCommand.NONE;\n this.standstillStatus = StandstillStatus.OFF;\n } else {\n this.standstillStatus = StandstillStatus.ON;\n }\n } else {\n return;\n }\n }\n }\n\n private resetPoseTracker() {\n this.shouldReset = true;\n this.pendingFrameCounter = 0;\n }\n\n private updateDirection(\n pose: Float32Array\n ): GuidanceCommand {\n\n if (pose[3] < -this.standstillOptions.positionVariance) {\n return GuidanceCommand.MOVE_LEFT;\n } else if (pose[3] > this.standstillOptions.positionVariance) {\n return GuidanceCommand.MOVE_RIGHT;\n }\n\n if (pose[4] < -this.standstillOptions.positionVariance) {\n return GuidanceCommand.MOVE_DOWN;\n } else if (pose[4] > this.standstillOptions.positionVariance) {\n return GuidanceCommand.MOVE_UP;\n }\n\n if (pose[5] < this.standstillOptions.depthRange[0]) {\n return GuidanceCommand.MOVE_FARTHER;\n } else if (pose[5] > this.standstillOptions.depthRange[1]) {\n return GuidanceCommand.MOVE_CLOSER;\n }\n\n if (Math.abs(pose[0]) < this.standstillOptions.axisVariance\n && Math.abs(pose[1]) < this.standstillOptions.axisVariance\n && Math.abs(pose[2]) < this.standstillOptions.axisVariance) {\n return GuidanceCommand.STAY_STILL;\n } else {\n const poseAngles = [pose[0], pose[1], pose[2]];\n const max = Math.max(...poseAngles);\n const min = Math.min(...poseAngles);\n const maxAbs = (Math.abs(max) > Math.abs(min)) ? max : min;\n const maxIndex = poseAngles.indexOf(maxAbs);\n\n switch (maxIndex) {\n case 0:\n return (maxAbs > 0) ? GuidanceCommand.LOOK_UP : GuidanceCommand.LOOK_DOWN;\n case 1:\n return (maxAbs > 0) ? GuidanceCommand.LOOK_LEFT : GuidanceCommand.LOOK_RIGHT;\n case 2:\n return (maxAbs > 0) ? GuidanceCommand.TILT_RIGHT : GuidanceCommand.TILT_LEFT;\n default:\n return;\n }\n }\n }\n}\n\nexport { GuidanceEngine, StandstillOptions };\n","class StringHelper {\n\n public static radToDegK = (180 / Math.PI);\n\n public static radToDeg(value: number, trailingDigits = 2): string {\n return (value * StringHelper.radToDegK).toFixed(trailingDigits);\n }\n}\n\nexport default StringHelper;\n","import { RemoteLogConfig } from \"@luxottica/vm-remotelog\";\nimport { vec3 } from \"gl-matrix\";\nimport { name, version } from \"../../package.json\";\n\nimport { TrackingOptions } from \"../PoseTracker.js\";\nimport StringHelper from \"./StringHelper.js\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"PoseHelper\");\n\nexport interface PitchYawRollRange {\n pitch: {start: number, end: number};\n yaw: {start: number, end: number};\n roll: {start: number, end: number};\n}\n\nexport interface FormattedPose {\n position: {\n x: string,\n y: string,\n z: string,\n };\n rotation: {\n p: string,\n y: string,\n r: string\n };\n}\n\nexport class PoseHelper {\n\n public static checkPoseSanity(\n pose: Float32Array,\n options: TrackingOptions,\n focalLength: number,\n processingWidth: number,\n processingHeight: number\n ): boolean {\n\n if (pose && pose[3] && pose[4] && pose[5]) {\n const poseSanity = (pose[5] > options.depthRange[0] && pose[5] < options.depthRange[1])\n && this.checkPoseEdge(pose, options, focalLength, processingWidth, processingHeight);\n if (!poseSanity) {\n logger.debug(\"pose sanity check failed\");\n }\n return poseSanity;\n } else {\n return false;\n }\n }\n\n public static checkPoseEdge(\n poseArray: Float32Array,\n trackingOptions: TrackingOptions,\n focalLength: number,\n width: number,\n height: number\n ): boolean {\n const topEdgeBound = trackingOptions.edgeDetectionPercentage[0] * height;\n const rightEdgeBound = trackingOptions.edgeDetectionPercentage[1] * width;\n const bottomEdgeBound = height - (trackingOptions.edgeDetectionPercentage[2] * height);\n const leftEdgeBound = width - (trackingOptions.edgeDetectionPercentage[3] * width);\n\n const xProjection = (poseArray[3] * focalLength / poseArray[5]) + (width / 2);\n const yProjection = (poseArray[4] * focalLength / poseArray[5]) + (height / 2);\n\n return (yProjection >= topEdgeBound\n && xProjection >= rightEdgeBound\n && yProjection <= bottomEdgeBound\n && xProjection <= leftEdgeBound\n );\n }\n\n public static formatPose(pose: Float32Array): FormattedPose {\n if (pose && pose[3] && pose[4] && pose[5]) {\n const eulerAngles: number[] = PoseHelper.axisAngleToEuler(pose);\n return {\n position: {\n x: pose[3].toFixed(2),\n y: pose[4].toFixed(2),\n z: pose[5].toFixed(2),\n },\n rotation: {\n p: StringHelper.radToDeg(eulerAngles[0], 2),\n y: StringHelper.radToDeg(eulerAngles[1], 2),\n r: StringHelper.radToDeg(eulerAngles[2], 2),\n },\n };\n } else {\n return undefined;\n }\n }\n\n public static axisAngleToEuler = (axisAngle: Float32Array) => {\n const axis = vec3.fromValues(axisAngle[0], axisAngle[1], axisAngle[2]);\n const angle = vec3.length(axis);\n if (angle < 1e-6) {\n return [0.0, 0.0, 0.0];\n }\n axis[0] /= angle;\n axis[1] /= angle;\n axis[2] /= angle;\n\n const q = new Float32Array(4);\n const sine = Math.sin(angle);\n q[0] = Math.sqrt(2 + 2 * Math.cos(angle)) / 2;\n q[1] = sine * axis[0] / (2 * q[0]);\n q[2] = sine * axis[1] / (2 * q[0]);\n q[3] = sine * axis[2] / (2 * q[0]);\n const pitch = Math.atan2(2 * (q[0] * q[1] - q[2] * q[3]),\n q[0] * q[0] - q[1] * q[1] - q[2] * q[2] + q[3] * q[3]);\n const yaw = Math.asin(2 * (q[0] * q[2] + q[1] * q[3]));\n const roll = Math.atan2(2 * (q[0] * q[3] - q[1] * q[2]),\n q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3]);\n return [pitch, yaw, roll];\n }\n\n public static convertDegreeRangeToRadian(axisRange: number[]): PitchYawRollRange {\n logger.debug(\"axis range: {}\", axisRange);\n const axisRad = [\n axisRange[0] * Math.PI / 180.0,\n axisRange[1] * Math.PI / 180.0,\n axisRange[2] * Math.PI / 180.0,\n ];\n const axisRangeRad = {\n pitch: { start: -(axisRad[0] / 2), end: (axisRad[0] / 2) },\n yaw: { start: -(axisRad[1] / 2), end: (axisRad[1] / 2) },\n roll: { start: -(axisRad[2] / 2), end: (axisRad[2] / 2) }\n };\n logger.debug(\"radian range: {}\", JSON.stringify(axisRangeRad));\n\n return axisRangeRad;\n }\n}\n","import { EventBus } from \"@luxottica/vm-eventbus\";\nimport { RemoteLogConfig } from \"@luxottica/vm-remotelog\";\nimport { name, version } from \"../../../package.json\";\nimport { INudgingEventProducer } from \"../domain/INudgingEventProducer\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"NudgingEventProducer\");\n\nclass NudgingEventProducer implements INudgingEventProducer {\n\n constructor() {\n logger.debug(\"nudging event producer initialized\");\n }\n\n public newNudgingState(stateCode: string, stateMess: string): Promise {\n if (stateCode) {\n logger.debug(\"new nudging state: {} ({})\", stateCode, stateMess);\n EventBus.publish(\"poseTrackerStatus\", {\n code: stateCode,\n text: stateMess,\n });\n return Promise.resolve();\n } else {\n return Promise.reject();\n }\n }\n}\n\nexport { NudgingEventProducer };\n","import { RemoteLog, RemoteLogConfig } from \"@luxottica/vm-remotelog\";\nimport { loadWasm, WasmEnvironment } from \"@luxottica/vm-webassembly\";\nimport { name, version } from \"../package.json\";\nimport { GuidanceCommand } from \"./constants/GuidanceCommand\";\nimport { NudgingType } from \"./constants/NudgingType\";\nimport { StandstillStatus } from \"./constants/StandstillStatus\";\nimport { TrackResult } from \"./constants/TrackResult\";\nimport { GuidanceEngine, StandstillOptions } from \"./guidance/GuidanceEngine\";\nimport { FormattedPose, PoseHelper } from \"./helpers/PoseHelper\";\nimport { NudgingEventProducer } from \"./nudging/adapter/NudgingEventProducer\";\nimport { INudgingEventProducer } from \"./nudging/domain/INudgingEventProducer\";\nimport { Version } from \"./Version\";\nimport { WasmCapabilities } from \"./WasmCapabilities\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"PoseTracker\");\n\ndeclare interface TrackingOptions {\n debug?: boolean;\n inspect?: boolean;\n onPoseTrack?: (VtoMirrorPose) => void;\n recoveryLimit?: number;\n areaSize?: number;\n areaOffset?: number[];\n depthRange?: number[];\n axisRange?: number[];\n minimumFaceSizeRatio?: number;\n fittedPointsRatio?: number;\n edgeDetectionPercentage?: number[];\n nudgingType?: NudgingType;\n standstill?: StandstillOptions;\n // this field is not used by the posetracker but at the moment of writing\n // is used by Virtual Mirror to set a FOV different from default (52.0)\n fov?: number;\n}\n\ndeclare interface PoseResponse {\n pose: Float32Array;\n renderDelay: boolean;\n guidanceCommand: GuidanceCommand;\n standstillStatus: StandstillStatus;\n wasmStatus: TrackResult;\n wearsGlasses: boolean;\n}\n\n// No more needed, the processing is an input parameter\n// const MAX_PROCESSING_DIMENSION = 480;\nconst htConfigurableValidRanges = false;\n\nlet mappedMemoryBuffer: any;\n\nclass PoseTracker {\n\n private FOV_PORTRAIT;\n\n private guidanceEngine: GuidanceEngine;\n\n private nudgingEventProducer: INudgingEventProducer;\n\n private headTrackerPromise: Promise;\n private headTrackerIsReady: boolean;\n private mappedArray: Uint8ClampedArray;\n\n private processingW: number;\n private processingH: number;\n private verticalFocalLength: number;\n\n private poseTrackerStatus = TrackResult.TrackerStopped;\n private headTracker: any;\n private trackingOptions: TrackingOptions;\n\n private static initializerPromise;\n\n public static warmUp(env: WasmEnvironment) {\n if (!PoseTracker.initializerPromise) {\n PoseTracker.initializerPromise = import(/* webpackChunkName: \"HeadTrackerInitializer\" */ \"./wasm/HeadTrackerInitializer\")\n .then(({HeadTrackerInitializer}) => {\n return {\n wasm: loadWasm(env),\n HeadTrackerInitializer,\n };\n });\n }\n }\n\n constructor(\n processingW: number,\n processingH: number,\n processingVerticalFoVDeg: number,\n trackingOptions: TrackingOptions,\n wasmCapabilities: WasmCapabilities,\n onWasmLoaded: () => void,\n onFail?: () => void,\n ) {\n logger.debug(\"PoseTracker created: {}\", Version.getInstance().getModuleInfo());\n this.trackingOptions = {\n ...trackingOptions,\n };\n this.guidanceEngine = new GuidanceEngine(this.trackingOptions);\n\n this.nudgingEventProducer = new NudgingEventProducer();\n this.processingW = processingW;\n this.processingH = processingH;\n this.setFocalLength(processingVerticalFoVDeg);\n\n try {\n this.headTrackerPromise = PoseTracker.initializerPromise\n .then(({HeadTrackerInitializer, wasm}) => {\n return new Promise((resolve, reject) => {\n try {\n // don't be fooled by this signature, loadWasm is not a promise, blame webassembly for this\n wasm.then((wasmModule) => {\n new HeadTrackerInitializer(this.processingW, this.processingH, this.verticalFocalLength)\n .init(wasmModule)\n .then((ht) => {\n this.headTracker = ht;\n this.headTrackerIsReady = true;\n resolve(ht);\n onWasmLoaded();\n }).catch((reason) => {\n reject(reason);\n logger.error(\"posetracker initialization failed: {}\", reason);\n });\n\n // Passing also processings size,\n // since now the total area may be larger than MAX_PROCESSING_DIMENSION^2\n this.initialiseSharedMemory(wasmModule, this.processingW, this.processingH);\n });\n } catch (error) {\n reject(error);\n }\n });\n });\n } catch (e) {\n logger.error(e);\n if (onFail) {\n onFail();\n }\n }\n }\n\n private static deg2rad(fov: number): number {\n return fov * Math.PI / 180.0;\n }\n\n public isReady(): boolean {\n if (this.headTrackerIsReady) {\n logger.debug(\"headtracker is ready\");\n return true;\n } else {\n logger.debug(\"headtracker not ready\");\n return false;\n }\n }\n\n // Added getter\n public get trackingWidth(): number {\n return this.processingW;\n }\n\n // Added getter\n public get trackingHeight(): number {\n return this.processingH;\n }\n\n public get trackingVerticalFoVDeg(): number {\n return this.FOV_PORTRAIT * 180.0 / Math.PI;\n }\n\n public setDebug(enable: boolean) {\n this.headTrackerPromise.then((ht) => {\n ht.setDebug(enable);\n logger.debug(\"config headtracker debug: {}\", enable);\n }).catch((reason) => {\n logger.warn(\"config headtracker debug failed: {}\", reason);\n });\n }\n\n public setGlassesDetection(enable: boolean) {\n this.headTrackerPromise.then((ht) => {\n ht.setGlassesDetection(enable);\n logger.debug(\"config headtracker glasses detection: {}\", enable);\n }).catch((reason) => {\n logger.warn(\"config headtracker glasses detection failed: {}\", reason);\n });\n }\n\n public setLightingDetection(enable: boolean) {\n this.headTrackerPromise.then((ht) => {\n ht.setLightingDetection(enable);\n logger.debug(\"config headtracker lighting detection: {}\", enable);\n }).catch((reason) => {\n logger.warn(\"config headtracker lighting detection failed: {}\", reason);\n });\n }\n\n public set3DHead(head3DPoints: Float32Array) {\n this.headTrackerPromise.then((ht) => {\n ht.set3DHeadModel(head3DPoints);\n logger.debug(\"config headtracker 3d head model: {}\", head3DPoints);\n }).catch((reason) => {\n logger.warn(\"config headtracker 3d head model failed: {}\", reason);\n });\n }\n\n // not used\n // be careful because when FOV changes is ALWAYS required\n // to call setCameraParameters to update the headtracker\n // TODO: check if wasm reset itself after setCameraParameters\n public setFovDegrees(fov: number) {\n logger.debug(\"updating FOV to {}\", fov);\n // set FOV_LANDSCAPE and FOV_PORTRAIT in radians\n // set verticalFocalLength\n this.setFocalLength(fov);\n this.headTrackerPromise.then((ht) => {\n ht.setCameraParameters(\n this.verticalFocalLength,\n this.processingW / 2.0,\n this.processingH / 2.0,\n );\n });\n }\n\n private setFocalLength(fov: number) {\n this.FOV_PORTRAIT = PoseTracker.deg2rad(fov);\n this.verticalFocalLength = this.getVerticalFocalLength();\n }\n\n public setFaceDetectionArea(\n processingWidth: number,\n processingHeight: number,\n minimumFaceSizeRatio: number,\n fittedPointsRatio: number\n ) {\n this.processingW = processingWidth;\n this.processingH = processingHeight;\n this.verticalFocalLength = this.getVerticalFocalLength();\n this.headTrackerPromise.then((ht) => {\n const area = {\n x: 0,\n y: 0,\n width: this.processingW,\n height: this.processingH\n };\n\n ht.setImageSize(this.processingW, this.processingH);\n ht.setCameraParameters(\n this.verticalFocalLength,\n this.processingW / 2.0,\n this.processingH / 2.0,\n );\n ht.setFaceDetectionArea(area, minimumFaceSizeRatio, fittedPointsRatio);\n logger.debug(\"config headtracker face detection area : {}\", JSON.stringify(area));\n logger.debug(\"config headtracker face detection minFaceSizeRatio : {}\", minimumFaceSizeRatio);\n logger.debug(\"config headtracker face detection fittedPointsRatio : {}\", fittedPointsRatio);\n\n }).catch((reason) => {\n logger.warn(\"config headtracker face detection area failed: {}\", reason);\n });\n }\n\n public setInitialisationValidRanges(axisRange: number[]) {\n if (htConfigurableValidRanges) {\n this.headTrackerPromise.then((ht) => {\n const validRanges = PoseHelper.convertDegreeRangeToRadian(axisRange);\n ht.setInitialisationValidRanges(\n validRanges[0],\n validRanges[1],\n validRanges[2]);\n }).catch((reason) => {\n logger.warn(\"config headtracker valid ranges failed: {}\", reason);\n });\n } else {\n logger.debug((\"ht valid ranges configuration OFF\"));\n }\n }\n\n // count is the number of times the face has to be detected on roughly\n // the same area for the tracker to be initialised\n /**\n * Set minimum detections of the same face before running the tracker\n * @param count Minimum number of continuous detections\n * @param overlap Minimum overlap between the last detection and\n * the current one. [0-1.0]\n */\n public setMinimumFaceDetectionCount(howManyTimeTheFaceHasToBeDetected: number, overlap: number) {\n this.headTrackerPromise.then((ht) => {\n ht.setMinimumFaceDetectionCount(howManyTimeTheFaceHasToBeDetected, overlap);\n logger.debug(\"config headtracker min face detection: {} {}\", howManyTimeTheFaceHasToBeDetected, overlap);\n }).catch((reason) => {\n logger.warn(\"config headtracker min face detection failed: {}\", reason);\n });\n }\n\n // defaults to 10 in the native side\n public setFastRecoveryLimit(limit: number) {\n this.headTrackerPromise.then((ht) => {\n ht.setFastRecoveryLimit(limit);\n logger.debug(\"config headtracker recovery limit: {}\", limit);\n }).catch((reason) => {\n logger.warn(\"config headtracker recovery limit failed: {}\", reason);\n });\n }\n\n public reset() {\n this.headTrackerPromise.then((ht) => {\n ht.reset();\n logger.debug(\"headtracker reset\");\n }).catch((reason) => {\n logger.warn(\"headtracker reset failed: {}\", reason);\n });\n }\n\n public setTrackingOptions(options: TrackingOptions): void {\n this.trackingOptions = options;\n this.guidanceEngine.updateTrackingOptions(this.trackingOptions);\n }\n\n public getPose(imageData: ImageData): PoseResponse {\n logger.debug(\"image data size: w {}, h {}\", imageData.width, imageData.height);\n\n this.mappedArray.set(imageData.data, 0);\n if (this.headTrackerIsReady) {\n const retCode = this.getHeadTrackerStatus();\n if (this.poseTrackerStatus !== retCode.status.value) {\n this.poseTrackerStatus = retCode.status.value;\n this.sendPoseTrackerEvent(retCode.status.value.toString(), TrackResult[retCode.status.value]);\n }\n const poseArray: Float32Array = this.checkPoseSanity(retCode.pose, this.trackingOptions);\n this.guidanceEngine.addPose(poseArray, retCode.status.value, imageData);\n if (this.guidanceEngine.shouldReset) {\n logger.debug(\"resetting posetracker\");\n this.reset();\n this.guidanceEngine.shouldReset = false;\n }\n // TODO\n // const glasses = (retCode.wearsGlasses === this.wasmModule.UserWearsGlasses.Yes);\n // const badLighting = (retCode.lighting === this.wasmModule.LightingEnvironment.Bad);\n const glasses = false;\n\n if (retCode.status.value === TrackResult.OK && poseArray === undefined) {\n this.reset();\n }\n\n return {\n guidanceCommand: this.guidanceEngine.guidanceStatus,\n pose: poseArray,\n renderDelay: this.guidanceEngine.renderDelay,\n standstillStatus: this.guidanceEngine.standstillStatus,\n wasmStatus: retCode.status.value,\n wearsGlasses: glasses,\n };\n }\n return {\n guidanceCommand: this.guidanceEngine.guidanceStatus,\n pose: undefined,\n renderDelay: this.guidanceEngine.renderDelay,\n standstillStatus: this.guidanceEngine.standstillStatus,\n wasmStatus: TrackResult.TrackerStopped,\n wearsGlasses: false,\n };\n }\n\n public formatPose = (pose: Float32Array) => {\n return PoseHelper.formatPose(pose);\n }\n\n private getHeadTrackerStatus(): any {\n if (this.headTrackerIsReady) {\n try {\n const headTrackerStatus = this.headTracker.track(mappedMemoryBuffer);\n return headTrackerStatus;\n } catch (e) {\n logger.error(e.message);\n return undefined;\n }\n } else {\n return undefined;\n }\n }\n\n private sendPoseTrackerEvent(poseTrackerStatusCode: string, poseTrackerStatusMess: string) {\n this.nudgingEventProducer.newNudgingState(poseTrackerStatusCode, poseTrackerStatusMess).then(() => {\n logger.debug(\"new nudging state notified\");\n }).catch((e) => {\n logger.error(\"new nudging state notification error: {}\", e);\n });\n }\n\n // private initialiseSharedMemory(wasmModule: WebAssembly.Module) {\n // const imageBufferSize = MAX_PROCESSING_DIMENSION * MAX_PROCESSING_DIMENSION * 4;\n // const wasm: any = wasmModule;\n // this.mappedMemoryBuffer = wasm._malloc(imageBufferSize);\n // this.mappedArray = new Uint8ClampedArray(wasm.HEAPU8.buffer, this.mappedMemoryBuffer, imageBufferSize);\n // logger.debug(\"initialized memory for wasm module: {} bytes\", imageBufferSize);\n // }\n\n private initialiseSharedMemory(wasmModule: WebAssembly.Module, maxWidth: number, maxHeight: number) {\n const imageBufferSize = maxWidth * maxHeight * 4;\n const wasm: any = wasmModule;\n\n // TODO: check if this works as intented\n // This should not be needed anyway... but since \"malloc\" was called, maybe also \"free\" is needed\n if (mappedMemoryBuffer) {\n wasm._free(mappedMemoryBuffer);\n }\n\n mappedMemoryBuffer = wasm._malloc(imageBufferSize);\n this.mappedArray = new Uint8ClampedArray(wasm.HEAPU8.buffer, mappedMemoryBuffer, imageBufferSize);\n logger.debug(\"initialized memory for wasm module: {} bytes\", imageBufferSize);\n }\n\n private checkPoseSanity(pose: Float32Array, options: TrackingOptions): Float32Array {\n const isPoseValid = PoseHelper.checkPoseSanity(\n pose, options, this.verticalFocalLength, this.processingW, this.processingH);\n return (isPoseValid) ? pose : undefined;\n }\n\n private getVerticalFocalLength = () => {\n // we have been using a 45 degree FOV for the cropped central\n // part of the image (480x640), scaled down from the cropped larger image.\n // For landscape images, we use 60degrees FOV\n /* if (this.processingW > this.processingH) {\n return 0.5 * this.processingW / Math.tan(0.5 * this.FOV_LANDSCAPE);\n } */\n return 0.5 * this.processingH / Math.tan(0.5 * this.FOV_PORTRAIT);\n }\n}\n\nexport { PoseResponse, PoseTracker };\nexport { GuidanceCommand, StandstillStatus, NudgingType, FormattedPose, TrackingOptions, TrackResult };\nexport { WasmCapabilities, WasmEnvironment };\n","import { RemoteLogConfig } from \"@luxottica/vm-remotelog\";\nimport { name, version } from \"../package.json\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"Version\");\n\nclass Version {\n\n public static getInstance() {\n if (!Version.instance) {\n Version.instance = new Version();\n }\n return Version.instance;\n }\n\n private static instance: Version;\n\n private constructor() {\n logger.debug(\"running {} v{}\", name, version);\n }\n\n public getModuleInfo(): [string, string] {\n return [name, version];\n }\n\n}\n\nexport { Version };\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { UAParser } from \"ua-parser-js\";\n\nclass UserAgentParser {\n\n public static getInstance() {\n if (!UserAgentParser.instance) {\n UserAgentParser.instance = new UserAgentParser();\n }\n return UserAgentParser.instance;\n }\n\n private static instance: UserAgentParser;\n private userAgentData: IUAParser.IResult;\n\n private constructor() {\n this.userAgentData = new UAParser().getResult();\n }\n\n public getUserAgentData(): IUAParser.IResult {\n return this.userAgentData;\n }\n\n}\n\nexport { UserAgentParser };\n","\nclass WasmDetection {\n\n public static getInstance() {\n if (!WasmDetection.instance) {\n WasmDetection.instance = new WasmDetection();\n }\n return WasmDetection.instance;\n }\n\n private static instance: WasmDetection;\n\n private simplewasm = Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00);\n\n public isWebAssemblySupported(): boolean {\n let supported = false;\n try {\n if (typeof WebAssembly === \"object\" && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(this.simplewasm);\n supported = module instanceof WebAssembly.Module\n && new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n supported = false;\n }\n return supported;\n }\n\n}\n\nexport { WasmDetection };\n","\nclass WebGlDetection {\n\n public static getInstance() {\n if (!WebGlDetection.instance) {\n WebGlDetection.instance = new WebGlDetection();\n }\n return WebGlDetection.instance;\n }\n\n private static instance: WebGlDetection;\n\n private static tmpCanvasElementId = \"canvas-for-webgl-check\";\n private static webglCtxAttributes: WebGLContextAttributes = { depth: true, premultipliedAlpha: false };\n\n public isWebGlSupported(): boolean {\n let supported = false;\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"id\", WebGlDetection.tmpCanvasElementId);\n if (canvas) {\n const webglContext = this.getWebglContext(canvas, [\"webgl2\", \"webgl\", \"experimental-webgl\"]);\n if (webglContext) {\n supported = true;\n }\n }\n } catch (e) {\n supported = false;\n } finally {\n if (document) {\n const elementToRemove = document.getElementById(WebGlDetection.tmpCanvasElementId);\n if (elementToRemove) {\n elementToRemove.outerHTML = \"\";\n }\n }\n }\n return supported;\n }\n\n private getWebglContext(canvas: HTMLCanvasElement, webglContext: string[]): WebGLRenderingContext {\n let webglRenderingContext: any;\n for (const contextName of webglContext) {\n webglRenderingContext = canvas.getContext(contextName, WebGlDetection.webglCtxAttributes);\n if (webglRenderingContext) {\n break;\n }\n }\n return webglRenderingContext;\n }\n\n}\n\nexport { WebGlDetection };\n","declare global {\n // tslint:disable-next-line:interface-name\n interface Window { webkit: any; }\n}\n\nclass WebRtcDetection {\n\n public static getInstance() {\n if (!WebRtcDetection.instance) {\n WebRtcDetection.instance = new WebRtcDetection();\n }\n return WebRtcDetection.instance;\n }\n\n private static instance: WebRtcDetection;\n\n public isUserMediaSupported(): boolean {\n return this.isMediaDeviceAvailable() || this.isNativeBridgePresent();\n }\n\n public isVideoInputDeviceAvailable() {\n let videoInputDeviceAvailability: Promise;\n try {\n if (this.isMediaDeviceAvailable()) {\n videoInputDeviceAvailability = navigator.mediaDevices.enumerateDevices()\n .then((devices) => devices.some((device) => device.kind === \"videoinput\"));\n } else if (this.isNativeBridgePresent()) {\n videoInputDeviceAvailability = Promise.resolve(true);\n } else {\n videoInputDeviceAvailability = Promise.resolve(false);\n }\n } catch (e) {\n videoInputDeviceAvailability = Promise.resolve(false);\n }\n return videoInputDeviceAvailability;\n }\n\n private isMediaDeviceAvailable(): boolean {\n return (typeof navigator.mediaDevices === \"object\") && (typeof navigator.mediaDevices.getUserMedia === \"function\");\n }\n\n private isNativeBridgePresent(): boolean {\n return (\n // TODO do we need to create a vm-nativebridge module in order to centralise this check?\n typeof window.webkit === \"object\" &&\n typeof(window.webkit.messageHandlers) === \"object\" &&\n typeof(window.webkit.messageHandlers.startNativeCam) === \"object\"\n );\n }\n}\n\nexport { WebRtcDetection };\n","import { UserAgentParser } from \"./parser/UserAgentParser\";\nimport { WasmDetection } from \"./wasm/WasmDetection\";\nimport { WebGlDetection } from \"./webgl/WebGlDetection\";\nimport { WebRtcDetection } from \"./webrtc/WebRtcDetection\";\n\nclass DeviceDetection {\n\n private uaData: IUAParser.IResult;\n\n constructor() {\n this.uaData = UserAgentParser.getInstance().getUserAgentData();\n }\n\n public isAppleiOS13() {\n let isIOS13 = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.os.version && this.uaData.os.version.startsWith(\"13\")) {\n isIOS13 = true;\n // tslint:disable-next-line: no-console\n console.info(\"--- detected iOS 13 ---\");\n }\n } else if (this.isiPasOS()) {\n isIOS13 = true;\n // tslint:disable-next-line: no-console\n console.info(\"--- detected iPad 13 ---\");\n // tslint:disable-next-line: no-console\n console.warn(\"iPad OS detection is still a workaround, Apple does not use a specific UA for iPad\");\n }\n return isIOS13;\n }\n\n // Workaround for iPadOS which is currently not detectable via UA\n // https://github.com/faisalman/ua-parser-js/issues/387#issuecomment-579147248\n public isiPasOS() {\n const osName = (this.uaData.os && this.uaData.os.name && this.uaData.os.name) || undefined;\n const iPadOS = window.orientation !== undefined && osName === \"Mac OS\";\n return osName === \"iOS\" || iPadOS;\n }\n\n public getUserAgentData(): IUAParser.IResult {\n return this.uaData;\n }\n\n public isWebView(): boolean {\n let isWebView = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.engine && this.uaData.engine.name && this.uaData.engine.name === \"WebKit\") {\n if (this.uaData.browser && this.uaData.browser.name && this.uaData.browser.name === \"WebKit\") {\n isWebView = true;\n }\n }\n }\n return isWebView;\n }\n\n public isWebViewBrowser(): boolean {\n let isWebViewBrowser = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.engine && this.uaData.engine.name && this.uaData.engine.name === \"WebKit\") {\n if (this.uaData.browser && this.uaData.browser.name && this.uaData.browser.name !== \"Mobile Safari\") {\n isWebViewBrowser = true;\n }\n }\n }\n return isWebViewBrowser;\n }\n\n public isWebAssemblySupported(): boolean {\n return WasmDetection.getInstance().isWebAssemblySupported();\n }\n\n public isUserMediaSupported(): boolean {\n return WebRtcDetection.getInstance().isUserMediaSupported();\n }\n\n public isVideoInputDeviceAvailable() {\n return WebRtcDetection.getInstance().isVideoInputDeviceAvailable();\n }\n\n public isWebGlSupported() {\n return WebGlDetection.getInstance().isWebGlSupported();\n }\n\n}\n\nexport { DeviceDetection };\n","export class LogMessage {\n\n public level: string;\n public logName: string;\n public message: string;\n public date: string = new Date().toISOString();\n\n constructor(level: string, logName: string, message: string) {\n this.level = level;\n this.message = message;\n this.logName = logName;\n }\n\n public getLevel() {\n return this.level;\n }\n\n public getLogName() {\n return this.logName;\n }\n\n public getMessage() {\n return this.message;\n }\n\n public getDate() {\n return this.date;\n }\n\n}\n","import localforage from \"localforage\";\n\nconst dbName = \"db_remotelog\";\n\nclass DBRemoteLogFactory {\n\n public static getInstance() {\n if (!DBRemoteLogFactory.instance) {\n DBRemoteLogFactory.instance = new DBRemoteLogFactory();\n }\n return DBRemoteLogFactory.instance;\n }\n\n private static instance: DBRemoteLogFactory;\n private db: LocalForage;\n\n private constructor() {\n this.db = localforage.createInstance({ name: dbName });\n }\n\n public getDB(): LocalForage {\n return this.db;\n }\n\n public getLogsTableName() {\n return \"logs\";\n }\n\n}\n\nexport { DBRemoteLogFactory };\n","import { ILogsConfiguration } from \"./LogsConfiguration.js\";\n\nclass LogsConfigurationRetriever {\n\n private configurationUrl = \"https://luxdeepblue.github.io/vm-remotelog-configuration/configuration.json\";\n private currentHostname = window.location.hostname;\n\n public getConfiguration(): Promise {\n return new Promise(\n (resolve) => {\n fetch(this.configurationUrl,\n {\n headers: { \"Accept\": \"application/json\", \"Accept-Encoding\": \"gzip\" },\n method: \"GET\",\n },\n ).then((res) => {\n if (res.ok) {\n return res.json();\n } else {\n resolve(this.defaultConfiguration());\n }\n },\n ).then((json) => {\n if (json[this.currentHostname]) {\n const config: ILogsConfiguration = {\n appviewSessionIsActive: json[this.currentHostname].appviewSessionIsActive,\n browserSessionIsActive: json[this.currentHostname].browserSessionIsActive,\n clientLogIsActive: json[this.currentHostname].clientLogIsActive,\n serverLogIsActive: json[this.currentHostname].serverLogIsActive,\n trackingStatusIsActive: json[this.currentHostname].trackingStatusIsActive,\n };\n resolve(config);\n } else {\n resolve(this.defaultConfiguration());\n }\n },\n ).catch((e) => {\n resolve(this.defaultConfiguration());\n });\n },\n );\n }\n\n private defaultConfiguration(): ILogsConfiguration {\n return {\n appviewSessionIsActive: true,\n browserSessionIsActive: true,\n clientLogIsActive: true,\n serverLogIsActive: false,\n trackingStatusIsActive: true,\n };\n }\n\n}\n\nexport { LogsConfigurationRetriever };\n","import { LogsConfigurationRetriever } from \"./LogsConfigurationRetriever\";\n\nclass LogsConfig {\n\n public static getInstance() {\n if (!LogsConfig.instance) {\n LogsConfig.instance = new LogsConfig();\n }\n return LogsConfig.instance;\n }\n\n private static instance: LogsConfig;\n\n private appViewSessionActive: Promise;\n private browserSessionActive: Promise;\n private trackingStatusActive: Promise;\n private clientLogActive: Promise;\n private serverLogActive: Promise;\n\n private configuration = new LogsConfigurationRetriever().getConfiguration();\n\n public constructor() {\n this.appViewSessionActive = new Promise((resolve) => {\n this.configuration\n .then((cfg) => {\n resolve(cfg.appviewSessionIsActive);\n })\n .catch((reason) => {\n resolve(true);\n });\n });\n this.browserSessionActive = new Promise((resolve) => {\n this.configuration\n .then((cfg) => {\n resolve(cfg.browserSessionIsActive);\n })\n .catch((reason) => {\n resolve(true);\n });\n });\n this.trackingStatusActive = new Promise((resolve) => {\n this.configuration\n .then((cfg) => {\n resolve(cfg.trackingStatusIsActive);\n })\n .catch((reason) => {\n resolve(true);\n });\n });\n this.clientLogActive = new Promise((resolve) => {\n this.configuration\n .then((cfg) => {\n resolve(cfg.clientLogIsActive);\n })\n .catch((reason) => {\n resolve(true);\n });\n });\n this.serverLogActive = new Promise((resolve) => {\n this.configuration\n .then((cfg) => {\n resolve(cfg.serverLogIsActive);\n })\n .catch((reason) => {\n resolve(true);\n });\n });\n }\n\n public async isAppViewSessionActive() {\n return this.appViewSessionActive;\n }\n\n public async isBrowserSessionActive() {\n return this.browserSessionActive;\n }\n\n public async isTrackingStatusActive() {\n return this.trackingStatusActive;\n }\n\n public async isServerLogActive() {\n return this.serverLogActive;\n }\n\n public async isClientLogActive() {\n return this.clientLogActive;\n }\n\n}\n\nexport { LogsConfig };\n","import { v4 as uuid } from \"uuid\";\nimport { DBRemoteLogFactory } from \"../../../../adapter/db/factory/DBRemoteLogFactory\";\nimport { LogsConfig } from \"../../../../config/LogsConfig\";\nimport { LogMessage } from \"../../../model/LogMessage\";\n\nclass RemoteLogService {\n\n public log(message: LogMessage): void {\n LogsConfig.getInstance().isServerLogActive().then((isActive) => {\n if (isActive) {\n this.queueMessage(message);\n }\n });\n }\n\n private queueMessage(logMessage: LogMessage) {\n this.dbInstance().getDB().setItem(uuid(), {\n date: logMessage.getDate(),\n level: logMessage.getLevel(),\n logName: logMessage.getLogName(),\n message: logMessage.getMessage(),\n });\n }\n\n private dbInstance() {\n return DBRemoteLogFactory.getInstance();\n }\n\n}\n\nexport { RemoteLogService };\n","import { Appender, ILogEvent, LogAppender, LogLevel } from \"@log4js2/core\";\nimport { LogMessage } from \"../model/LogMessage\";\nimport { RemoteLogService } from \"../service/log/producer/RemoteLogService\";\n\n@Appender(\"RemoteLogAppender\")\nclass RemoteLogAppender extends LogAppender<{}> {\n\n private logService = new RemoteLogService();\n\n public static get appenderName(): string {\n return \"RemoteLogAppender\";\n }\n\n public append(logEvent: ILogEvent) {\n if (logEvent && logEvent.level && logEvent.level <= this.getLogLevel()) {\n this.log(logEvent);\n }\n }\n\n private log(logEvent: ILogEvent) {\n switch (logEvent.level) {\n case LogLevel.FATAL:\n case LogLevel.ERROR: {\n if (logEvent.error) {\n this.logService.log(this.newLogMessage(\"E\", logEvent));\n } else {\n this.logService.log(this.newLogMessage(\"E\", logEvent));\n }\n break;\n }\n case LogLevel.WARN: {\n this.logService.log(this.newLogMessage(\"W\", logEvent));\n break;\n }\n case LogLevel.INFO: {\n this.logService.log(this.newLogMessage(\"I\", logEvent));\n break;\n }\n case LogLevel.DEBUG:\n case LogLevel.TRACE: {\n break;\n }\n default:\n break;\n }\n }\n\n private newLogMessage(logLevel: string, logEvent: ILogEvent) {\n return new LogMessage(logLevel, logEvent.logger || \"\", logEvent.message || \"\");\n }\n}\n\nexport { RemoteLogAppender };\n","import { configure, getLogger, LogAppender, LogLevel } from \"@log4js2/core\";\nimport { v4 as uuid } from \"uuid\";\nimport { LogsConfig } from \"../config/LogsConfig\";\nimport { RemoteLogAppender } from \"./appender/RemoteLogAppender\";\n\nconst VM_BROWSERSESSION_UUID = \"vm.browsersessionuuid.20200120\";\nconst VM_LOGLEVEL_OVERRIDE = \"vm.loglevel.override\";\n\nconst defaultLevel = LogLevel.DEBUG;\nconst defaultVirtualConsole = false;\nconst defaultLayout = \"%d [%p] %c - %m\";\n\nclass RemoteLogConfig {\n\n public static getInstance() {\n if (!RemoteLogConfig.instance) {\n RemoteLogConfig.instance = new RemoteLogConfig();\n }\n return RemoteLogConfig.instance;\n }\n\n private static instance: RemoteLogConfig;\n\n private storage = window.localStorage;\n private configured = false;\n\n private browserUUID: string = \"\";\n\n public static get storageIdentifier() {\n return VM_BROWSERSESSION_UUID;\n }\n\n private constructor() {\n this.createSessionId();\n this.configureLevel(defaultLevel);\n (window as any).VMAvailableLogLevels = LogLevel;\n (window as any).VMLogLevelsOverrideKey = VM_LOGLEVEL_OVERRIDE;\n }\n\n public getLogger(moduleName: string, moduleVersion: string, loggerName: string) {\n return getLogger([moduleName, moduleVersion, loggerName].join(\".\"));\n }\n\n public getLoggerInfo(moduleName: string, moduleVersion: string, loggerName: string) {\n return getLogger([moduleName, moduleVersion, loggerName].join(\".\"));\n }\n\n public get currentUuid() {\n return this.browserUUID;\n }\n\n private configureLevel(logLevel: LogLevel) {\n const logOverride = this.storage.getItem(VM_LOGLEVEL_OVERRIDE);\n if (logOverride !== null) {\n const logLevelOverride = logOverride as unknown as LogLevel;\n // tslint:disable-next-line: no-console\n console.warn(\"overriding loglevel with localstorage one ->\", logLevelOverride);\n this.configureLog4js2([\"Console\", RemoteLogAppender], logLevelOverride);\n } else {\n try {\n const isActive = LogsConfig.getInstance().isClientLogActive();\n this.configureLog4js2([\"Console\", RemoteLogAppender], LogLevel.INFO);\n isActive.then((value) => {\n this.configureLog4js2([\"Console\", RemoteLogAppender], value ? LogLevel.INFO : LogLevel.ERROR);\n this.configured = true;\n }).catch((e) => {\n // tslint:disable-next-line: no-console\n console.error(e);\n });\n } catch (e) {\n // tslint:disable-next-line: no-console\n console.error(e);\n this.configureLog4js2([\"Console\", RemoteLogAppender], defaultLevel);\n }\n }\n }\n\n private configureLog4js2(logAppenders: Array, logLevel: LogLevel) {\n if (!this.configured) {\n configure({\n appenders: logAppenders,\n layout: defaultLayout,\n level: logLevel,\n virtualConsole: defaultVirtualConsole,\n });\n const appenders = logAppenders.map((appender) => this.logAppenderName(appender));\n // tslint:disable-next-line: no-console\n console.info(`appenders : ${appenders}\nlayout : ${defaultLayout}\nlevel : ${logLevel}\nvirtual console : ${defaultVirtualConsole}`);\n }\n }\n\n private logAppenderName(appender: string | typeof LogAppender): string {\n let name = \"n.a\";\n switch (typeof appender) {\n case \"string\":\n name = \"Console\";\n break;\n case \"function\":\n name = \"RemoteLogAppender\";\n break;\n default:\n name = \"n.a.[\" + typeof appender + \"]\";\n break;\n }\n return name;\n }\n\n private createSessionId() {\n let currentUuid = this.storage.getItem(VM_BROWSERSESSION_UUID);\n if (!currentUuid) {\n const newUuid = uuid();\n if (newUuid) {\n this.storage.setItem(VM_BROWSERSESSION_UUID, newUuid);\n currentUuid = newUuid;\n }\n }\n this.browserUUID = currentUuid || \"cantcreateuuid\";\n }\n\n}\n\nexport { RemoteLogConfig };\n","import localforage from \"localforage\";\n\nconst dbName = \"db_appviewsession\";\n\nclass DBAppViewSessionFactory {\n\n public static getInstance() {\n if (!DBAppViewSessionFactory.instance) {\n DBAppViewSessionFactory.instance = new DBAppViewSessionFactory();\n }\n return DBAppViewSessionFactory.instance;\n }\n\n private static instance: DBAppViewSessionFactory;\n private db: LocalForage;\n\n private constructor() {\n this.db = localforage.createInstance({ name: dbName });\n }\n\n public getDB(): LocalForage {\n return this.db;\n }\n\n public getLogsTableName() {\n return \"logs\";\n }\n\n}\n\nexport { DBAppViewSessionFactory };\n","import { name, version } from \"../../../../package.json\";\nimport { RemoteLogConfig } from \"../../RemoteLogConfig\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"VmAnalyticsApiConfig\");\n\nexport class VmAnalyticsApiConfig {\n\n private hostTest = \"https://vmcore-test.luxottica.com\";\n private hostProd = \"https://vmcore.luxottica.com\";\n private appViewSessionApi = \"/api/appviewsession\";\n private browserSessionApi = \"/api/browsersession\";\n private trackingStatusApi = \"/api/trackingstatus\";\n private remoteLogApi = \"/api/remotelog\";\n private currentHostname = window.location.hostname;\n\n public get appViewSessionApiEndpoint() {\n return this.getHostname() + this.appViewSessionApi;\n }\n\n public get browserSessionApiEndpoint() {\n return this.getHostname() + this.browserSessionApi;\n }\n\n public get trackingStatusApiEndpoint() {\n return this.getHostname() + this.trackingStatusApi;\n }\n\n public get remoteLogApiEndpoint() {\n return this.getHostname() + this.remoteLogApi;\n }\n\n private getHostname() {\n const host = this.isDevEnvironment() ? this.hostTest : this.hostProd;\n logger.debug(\"analytics api hostname: {}\", host);\n return host;\n }\n\n private isDevEnvironment() {\n const isDev = this.currentHostname === \"localhost\";\n logger.debug(\"is dev environment: {}\", isDev);\n return isDev;\n }\n}\n","const sendXhrRequest = (\r\n method: string,\r\n url: string,\r\n body: any,\r\n responseType: XMLHttpRequestResponseType,\r\n responseHeaders: string[] = [],\r\n options: Record = {},\r\n onProgress?: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null\r\n): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method || \"GET\", url);\r\n xhr.responseType = responseType;\r\n for (const header in options) {\r\n if (options[header]) {\r\n xhr.setRequestHeader(header, options[header]);\r\n }\r\n }\r\n\r\n xhr.onload = (e: any) => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n\r\n const responseHeaderValues: {[header: string]: string} = {};\r\n responseHeaders.forEach((header) => {\r\n const responseHeaderValue = xhr.getResponseHeader(header);\r\n if (responseHeaderValue !== null && responseHeaderValue !== undefined) {\r\n responseHeaderValues[header] = responseHeaderValue;\r\n }\r\n });\r\n\r\n resolve({\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n response: xhr.response,\r\n headers: responseHeaderValues\r\n });\r\n } else {\r\n reject({\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n response: xhr.response\r\n });\r\n }\r\n };\r\n\r\n xhr.onerror = (e) => {\r\n reject({\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n response: xhr.response\r\n });\r\n };\r\n\r\n if (xhr.upload && onProgress) {\r\n xhr.upload.onprogress = onProgress;\r\n }\r\n xhr.send(body);\r\n });\r\n};\r\n\r\nexport {\r\n sendXhrRequest\r\n};\r\n","import { name, version } from \"../../../package.json\";\nimport { IRemoteAppViewSession } from \"../../domain/model/IRemoteAppViewSession\";\nimport { RemoteLogConfig } from \"../../domain/RemoteLogConfig\";\nimport { VmAnalyticsApiConfig } from \"../../domain/service/config/VmAnalyticsApiConfig\";\nimport { sendXhrRequest } from \"../../helpers/RequestHelper\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"AppViewSessionAdapter\");\n\nclass AppViewSessionAdapter implements LogAdapter {\n\n private config = new VmAnalyticsApiConfig();\n\n public log(message: IRemoteAppViewSession): Promise {\n const sessionId = RemoteLogConfig.getInstance().currentUuid;\n if (sessionId) {\n const jsonBody = JSON.stringify({\n browserSessionUuid: sessionId,\n date: new Date().toISOString(),\n statusCode: message.statusCode,\n statusText: message.statusText,\n });\n\n const requestUrl = this.config.appViewSessionApiEndpoint;\n return sendXhrRequest(\n \"POST\",\n requestUrl,\n jsonBody,\n \"\",\n [],\n {\n \"Accept\": \"application/json\",\n \"Content-type\": \"application/json\",\n // \"Referrer-Policy\": \"unsafe-url\"\n },\n ).catch((e) => {\n return Promise.reject(e);\n });\n\n } else {\n logger.warn(\"sessionId not available\");\n return Promise.reject();\n }\n }\n}\n\nexport { AppViewSessionAdapter };\n","import { name, version } from \"../../../../../package.json\";\nimport { DBAppViewSessionFactory } from \"../../../../adapter/db/factory/DBAppViewSessionFactory\";\nimport { AppViewSessionAdapter } from \"../../../../adapter/rest/AppViewSessionAdapter\";\nimport { IRemoteAppViewSession } from \"../../../model/IRemoteAppViewSession\";\nimport { RemoteLogConfig } from \"../../../RemoteLogConfig\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"AppViewSessionConsumer\");\n\nconst dbInstance = () => {\n return DBAppViewSessionFactory.getInstance();\n};\n\nconst messageAdapter = () => {\n return new AppViewSessionAdapter();\n};\n\nconst consumeDbRows = () => {\n const dbase = dbInstance().getDB();\n\n dbase.iterate((\n value: IRemoteAppViewSession,\n key: string\n ) => {\n // if (value === null) {\n // console.error(\"undefined: \", { key });\n // }\n messageAdapter().log({\n statusCode: value.statusCode,\n statusText: value.statusText\n }).then(() => {\n logger.debug(\"consumed stored log message: {}\", JSON.stringify(value));\n // console.info(\"consumed: \", {key, value});\n return dbase.removeItem(key);\n }).catch(() => {\n // console.error(\"failed: \", { key });\n });\n }).then(() => {\n logger.debug(\"all logs consumed from local indexdb\");\n });\n};\n\nclass AppViewSessionConsumer {\n public consume() {\n const time1 = window.performance.now();\n consumeDbRows();\n const time2 = window.performance.now();\n logger.debug(\"logs consumed in {} ms\", time2 - time1);\n }\n}\n\nexport { AppViewSessionConsumer };\n","import { name, version } from \"../../../../package.json\";\nimport { RemoteLogConfig } from \"../../RemoteLogConfig\";\nimport { AppViewSessionConsumer } from \"../log/consumer/AppViewSessionConsumer\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"AppViewSessionConsumerJob\");\n\nclass AppViewSessionConsumerJob {\n\n public static getInstance() {\n if (!AppViewSessionConsumerJob.instance) {\n AppViewSessionConsumerJob.instance = new AppViewSessionConsumerJob();\n }\n return AppViewSessionConsumerJob.instance;\n }\n\n private static instance: AppViewSessionConsumerJob;\n private started: boolean = false;\n private intervalFunction: any;\n\n private constructor() {\n logger.info(\"remote log consumer job created\");\n }\n\n public start(): void {\n if (this.started === true) {\n logger.debug(\"already started\");\n } else {\n logger.info(\"start to consume logs\");\n this.started = true;\n this.intervalFunction = window.setInterval(new AppViewSessionConsumer().consume, 3000);\n }\n }\n\n public stop(): void {\n if (this.intervalFunction) {\n window.clearInterval(this.intervalFunction);\n }\n }\n\n}\n\nexport { AppViewSessionConsumerJob };\n","import localforage from \"localforage\";\n\nconst dbName = \"db_browsersession\";\n\nclass DBBrowserSessionFactory {\n\n public static getInstance() {\n if (!DBBrowserSessionFactory.instance) {\n DBBrowserSessionFactory.instance = new DBBrowserSessionFactory();\n }\n return DBBrowserSessionFactory.instance;\n }\n\n private static instance: DBBrowserSessionFactory;\n private db: LocalForage;\n\n private constructor() {\n this.db = localforage.createInstance({ name: dbName });\n }\n\n public getDB(): LocalForage {\n return this.db;\n }\n\n public getLogsTableName() {\n return \"logs\";\n }\n\n}\n\nexport { DBBrowserSessionFactory };\n","import { DeviceDetection } from \"@luxottica/vm-devicedetection\";\nimport { name, version } from \"../../../package.json\";\nimport { IRemoteBrowserSession } from \"../../domain/model/IRemoteBrowserSession\";\nimport { RemoteLogConfig } from \"../../domain/RemoteLogConfig\";\nimport { VmAnalyticsApiConfig } from \"../../domain/service/config/VmAnalyticsApiConfig\";\nimport { sendXhrRequest } from \"../../helpers/RequestHelper\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"BrowserSessionAdapter\");\n\nconst VM_BROWSERSESSION_FLAG = RemoteLogConfig.storageIdentifier + \".flag\";\nconst VM_BROWSERSESSION_ETAG = RemoteLogConfig.storageIdentifier + \".etag\";\n\nclass BrowserSessionAdapter implements LogAdapter {\n\n private config = new VmAnalyticsApiConfig();\n private storage = window.localStorage;\n\n public log(message: IRemoteBrowserSession): Promise {\n const deviceDetection: DeviceDetection = new DeviceDetection();\n const userAgentData = deviceDetection.getUserAgentData();\n const persistedSessionFlag = this.storage.getItem(VM_BROWSERSESSION_FLAG);\n const persistedSessionUuid = RemoteLogConfig.getInstance().currentUuid;\n\n if (persistedSessionFlag) {\n logger.info(\"skip (session id already created)\");\n return Promise.resolve(false);\n } else {\n if (persistedSessionUuid) {\n const jsonBody = JSON.stringify({\n browserSessionUuid: persistedSessionUuid,\n date: message.date,\n device: {\n cpuArchitecture: userAgentData.cpu.architecture,\n model: userAgentData.device.model,\n resolution: {\n dpi: message.deviceResolution.dpi,\n h: message.deviceResolution.h,\n w: message.deviceResolution.w,\n },\n type: userAgentData.device.type,\n vendor: userAgentData.device.vendor,\n webapi: {\n ambientLight: \"ondevicelight\" in window,\n connection: \"connection\" in navigator,\n serviceWorker: \"serviceWorker\" in navigator,\n share: \"share\" in navigator,\n visibility: \"hidden\" in document,\n },\n webcam: {\n available: message.deviceWebcam.enabled,\n resolutionW: message.deviceWebcam.resolution,\n },\n webgl: {\n version: message.deviceWebgl.version,\n },\n },\n os: {\n name: userAgentData.os.name,\n version: parseFloat(userAgentData.os.version!),\n },\n userAgent: {\n browserEngineName: userAgentData.engine.name,\n browserEngineVersion: parseFloat(userAgentData.engine.version!),\n browserName: userAgentData.browser.name,\n browserVersion: parseFloat(userAgentData.browser.version!),\n webView: deviceDetection.isWebView(),\n },\n });\n\n const requestUrl = this.config.browserSessionApiEndpoint;\n return sendXhrRequest(\n \"POST\",\n requestUrl,\n jsonBody,\n \"\",\n [\"etag\"],\n {\n \"Accept\": \"application/json\",\n \"Content-type\": \"application/json\",\n // \"Referrer-Policy\": \"unsafe-url\"\n },\n ).then((response) => {\n const etagsessionId = response.headers.etag;\n this.storage.setItem(VM_BROWSERSESSION_FLAG, \"true\");\n this.storage.setItem(VM_BROWSERSESSION_ETAG, etagsessionId ? etagsessionId.slice(-1, 1) : \"n.a.\");\n return true;\n }).catch((e) => {\n return Promise.reject(e);\n });\n\n } else {\n logger.warn(\"persistent session uuid not available\");\n return Promise.reject(\"persistent session uuid not available\");\n }\n }\n }\n\n}\n\nexport { BrowserSessionAdapter };\n","import { name, version } from \"../../../../../package.json\";\nimport { DBBrowserSessionFactory } from \"../../../../adapter/db/factory/DBBrowserSessionFactory\";\nimport { BrowserSessionAdapter } from \"../../../../adapter/rest/BrowserSessionAdapter\";\nimport { IRemoteBrowserSession } from \"../../../model/IRemoteBrowserSession\";\nimport { RemoteLogConfig } from \"../../../RemoteLogConfig\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"BrowserSessionConsumer\");\n\nconst dbInstance = () => {\n return DBBrowserSessionFactory.getInstance();\n};\n\nconst messageAdapter = () => {\n return new BrowserSessionAdapter();\n};\n\nconst consumeDbRows = () => {\n const dbase = dbInstance().getDB();\n\n dbase.iterate((\n value: IRemoteBrowserSession,\n key: string\n ) => {\n // if (value === null) {\n // console.error(\"undefined: \", { key });\n // }\n messageAdapter().log({\n date: value.date,\n deviceResolution: value.deviceResolution,\n deviceWebcam: value.deviceWebcam,\n deviceWebgl: value.deviceWebgl,\n }).then(() => {\n logger.debug(\"consumed stored log message: {}\", JSON.stringify(value));\n // console.info(\"consumed: \", {key, value});\n return dbase.removeItem(key);\n }).catch(() => {\n // console.error(\"failed: \", { key });\n });\n }).then(() => {\n logger.debug(\"all logs consumed from local indexdb\");\n });\n};\n\nclass BrowserSessionConsumer {\n\n public consume() {\n const time1 = window.performance.now();\n consumeDbRows();\n const time2 = window.performance.now();\n logger.debug(\"logs consumed in {} ms\", time2 - time1);\n }\n\n}\n\nexport { BrowserSessionConsumer };\n","import { name, version } from \"../../../../package.json\";\nimport { RemoteLogConfig } from \"../../RemoteLogConfig\";\nimport { BrowserSessionConsumer } from \"../log/consumer/BrowserSessionConsumer\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"BrowserSessionConsumerJob\");\n\nclass BrowserSessionConsumerJob {\n\n public static getInstance() {\n if (!BrowserSessionConsumerJob.instance) {\n BrowserSessionConsumerJob.instance = new BrowserSessionConsumerJob();\n }\n return BrowserSessionConsumerJob.instance;\n }\n\n private static instance: BrowserSessionConsumerJob;\n private started: boolean = false;\n private intervalFunction: any;\n\n private constructor() {\n logger.info(\"remote log consumer job created\");\n }\n\n public start(): void {\n if (this.started === true) {\n logger.debug(\"already started\");\n } else {\n logger.info(\"start to consume logs\");\n this.started = true;\n this.intervalFunction = window.setInterval(new BrowserSessionConsumer().consume, 3000);\n }\n }\n\n public stop(): void {\n if (this.intervalFunction) {\n window.clearInterval(this.intervalFunction);\n }\n }\n\n}\n\nexport { BrowserSessionConsumerJob };\n","import { name, version } from \"../../../package.json\";\nimport { LogMessage } from \"../../domain/model/LogMessage\";\nimport { RemoteLogConfig } from \"../../domain/RemoteLogConfig\";\nimport { VmAnalyticsApiConfig } from \"../../domain/service/config/VmAnalyticsApiConfig\";\nimport { sendXhrRequest } from \"../../helpers/RequestHelper\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"RemoteLogAdapter\");\n\nclass RemoteLogAdapter implements LogAdapter {\n\n private config = new VmAnalyticsApiConfig();\n\n public log(logMessage: LogMessage): Promise {\n try {\n const sessionId = RemoteLogConfig.getInstance().currentUuid;\n if (sessionId) {\n const jsonBody = JSON.stringify({\n browserSessionUuid: sessionId,\n date: new Date().toISOString(),\n level: logMessage.getLevel(),\n logName: logMessage.getLogName(),\n message: logMessage.getMessage(),\n });\n\n const requestUrl = this.config.remoteLogApiEndpoint;\n\n return sendXhrRequest(\n \"POST\",\n requestUrl,\n jsonBody,\n \"\",\n [],\n {\n \"Accept\": \"application/json\",\n \"Content-type\": \"application/json\",\n // \"Referrer-Policy\": \"unsafe-url\"\n },\n ).catch((e) => {\n return Promise.reject(e);\n });\n\n } else {\n console.warn(\"sessionId not available\");\n return Promise.reject(\"sessionId not available\");\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n}\n\nexport { RemoteLogAdapter };\n","import { name, version } from \"../../../../../package.json\";\nimport { DBRemoteLogFactory } from \"../../../../adapter/db/factory/DBRemoteLogFactory\";\nimport { RemoteLogAdapter } from \"../../../../adapter/rest/RemoteLogAdapter\";\nimport { LogMessage } from \"../../../model/LogMessage\";\nimport { RemoteLogConfig } from \"../../../RemoteLogConfig\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"RemoteLogConsumer\");\n\nconst dbInstance = () => {\n return DBRemoteLogFactory.getInstance();\n};\n\nconst messageAdapter = () => {\n return new RemoteLogAdapter();\n};\n\nconst consumeDbRows = () => {\n const dbase = dbInstance().getDB();\n\n dbase.iterate((\n value: LogMessage,\n key: string\n ) => {\n if (value === null) {\n // console.error(\"undefined: \", { key });\n }\n messageAdapter().log(\n new LogMessage(value.level, value.logName, value.message)\n ).then(() => {\n logger.debug(\"consumed stored log message: {}\", JSON.stringify(value));\n // console.info(\"consumed: \", {key, value});\n return dbase.removeItem(key);\n }).catch(() => {\n // console.error(\"failed: \", { key });\n });\n }).then(() => {\n logger.debug(\"all logs consumed from local indexdb\");\n });\n};\n\nclass RemoteLogConsumer {\n\n public consume() {\n const time1 = window.performance.now();\n consumeDbRows();\n const time2 = window.performance.now();\n logger.debug(\"logs consumed in {} ms\", time2 - time1);\n }\n\n}\n\nexport { RemoteLogConsumer };\n","import { name, version } from \"../../../../package.json\";\nimport { RemoteLogConfig } from \"../../RemoteLogConfig\";\nimport { RemoteLogConsumer } from \"../log/consumer/RemoteLogConsumer\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"RemoteLogConsumerJob\");\n\nclass RemoteLogConsumerJob {\n\n public static getInstance() {\n if (!RemoteLogConsumerJob.instance) {\n RemoteLogConsumerJob.instance = new RemoteLogConsumerJob();\n }\n return RemoteLogConsumerJob.instance;\n }\n\n private static instance: RemoteLogConsumerJob;\n private started: boolean = false;\n private intervalFunction: any;\n\n private constructor() {\n logger.info(\"remote log consumer job created\");\n }\n\n public start(): void {\n if (this.started === true) {\n logger.debug(\"already started\");\n } else {\n logger.info(\"start to consume logs\");\n this.started = true;\n this.intervalFunction = window.setInterval(new RemoteLogConsumer().consume, 5000);\n }\n }\n\n public stop(): void {\n if (this.intervalFunction) {\n window.clearInterval(this.intervalFunction);\n }\n }\n\n}\n\nexport { RemoteLogConsumerJob };\n","import localforage from \"localforage\";\n\nconst dbName = \"db_trackingstatus\";\n\nclass DBTrackingStatusFactory {\n\n public static getInstance() {\n if (!DBTrackingStatusFactory.instance) {\n DBTrackingStatusFactory.instance = new DBTrackingStatusFactory();\n }\n return DBTrackingStatusFactory.instance;\n }\n\n private static instance: DBTrackingStatusFactory;\n private db: LocalForage;\n\n private constructor() {\n this.db = localforage.createInstance({ name: dbName });\n }\n\n public getDB(): LocalForage {\n return this.db;\n }\n\n public getLogsTableName() {\n return \"logs\";\n }\n\n}\n\nexport { DBTrackingStatusFactory };\n","import { name, version } from \"../../../package.json\";\nimport { IRemoteTrackingStatus } from \"../../domain/model/IRemoteTrackingStatus\";\nimport { RemoteLogConfig } from \"../../domain/RemoteLogConfig\";\nimport { VmAnalyticsApiConfig } from \"../../domain/service/config/VmAnalyticsApiConfig\";\nimport { sendXhrRequest } from \"../../helpers/RequestHelper\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"TrackingStatusAdapter\");\n\nclass TrackingStatusAdapter implements LogAdapter {\n\n private config = new VmAnalyticsApiConfig();\n\n public log(message: IRemoteTrackingStatus): Promise {\n const sessionId = RemoteLogConfig.getInstance().currentUuid;\n if (sessionId) {\n let jsonBody;\n if (message.fps) {\n jsonBody = JSON.stringify({\n browserSessionUuid: sessionId,\n date: new Date().toISOString(),\n fps: message.fps,\n });\n } else {\n jsonBody = JSON.stringify({\n browserSessionUuid: sessionId,\n date: new Date().toISOString(),\n trackingCode: message.trackingCode,\n trackingText: message.trackingText,\n });\n }\n const requestUrl = this.config.trackingStatusApiEndpoint;\n\n return sendXhrRequest(\n \"POST\",\n requestUrl,\n jsonBody,\n \"\",\n [],\n {\n \"Accept\": \"application/json\",\n \"Content-type\": \"application/json\",\n // \"Referrer-Policy\": \"unsafe-url\"\n },\n ).catch((e) => {\n return Promise.reject(e);\n });\n\n } else {\n console.warn(\"sessionId not available\");\n return Promise.reject(\"sessionId not available\");\n }\n }\n}\n\nexport { TrackingStatusAdapter };\n","import { name, version } from \"../../../../../package.json\";\nimport { DBTrackingStatusFactory } from \"../../../../adapter/db/factory/DBTrackingStatusFactory\";\nimport { TrackingStatusAdapter } from \"../../../../adapter/rest/TrackingStatusAdapter\";\nimport { IRemoteTrackingStatus } from \"../../../model/IRemoteTrackingStatus.js\";\nimport { RemoteLogConfig } from \"../../../RemoteLogConfig\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"TrackingStatusConsumer\");\n\nconst dbInstance = () => {\n return DBTrackingStatusFactory.getInstance();\n};\n\nconst messageAdapter = () => {\n return new TrackingStatusAdapter();\n};\n\nconst consumeDbRows = () => {\n const dbase = dbInstance().getDB();\n\n dbase.iterate((\n value: IRemoteTrackingStatus,\n key: string\n ) => {\n // if (value === null) {\n // console.error(\"undefined: \", { key });\n // }\n messageAdapter().log({\n fps: value.fps,\n trackingCode: value.trackingCode,\n trackingText: value.trackingText,\n }).then(() => {\n logger.debug(\"consumed stored log message: {}\", JSON.stringify(value));\n // console.info(\"consumed: \", {key, value});\n return dbase.removeItem(key);\n }).catch(() => {\n // console.error(\"failed: \", { key });\n });\n }).then(() => {\n logger.debug(\"all logs consumed from local indexdb\");\n });\n};\n\nclass TrackingStatusConsumer {\n\n public consume() {\n const time1 = window.performance.now();\n consumeDbRows();\n const time2 = window.performance.now();\n logger.debug(\"logs consumed in {} ms\", time2 - time1);\n }\n\n}\n\nexport { TrackingStatusConsumer };\n","import { name, version } from \"../../../../package.json\";\nimport { RemoteLogConfig } from \"../../RemoteLogConfig\";\nimport { TrackingStatusConsumer } from \"../log/consumer/TrackingStatusConsumer\";\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, \"TrackingStatusConsumerJob\");\n\nclass TrackingStatusConsumerJob {\n\n public static getInstance() {\n if (!TrackingStatusConsumerJob.instance) {\n TrackingStatusConsumerJob.instance = new TrackingStatusConsumerJob();\n }\n return TrackingStatusConsumerJob.instance;\n }\n\n private static instance: TrackingStatusConsumerJob;\n private started: boolean = false;\n private intervalFunction: any;\n\n private constructor() {\n logger.info(\"remote log consumer job created\");\n }\n\n public start(): void {\n if (this.started === true) {\n logger.debug(\"already started\");\n } else {\n logger.info(\"start to consume logs\");\n this.started = true;\n this.intervalFunction = window.setInterval(new TrackingStatusConsumer().consume, 3000);\n }\n }\n\n public stop(): void {\n if (this.intervalFunction) {\n window.clearInterval(this.intervalFunction);\n }\n }\n\n}\n\nexport { TrackingStatusConsumerJob };\n","import { AppViewSessionConsumerJob } from \"./AppViewSessionConsumerJob\";\nimport { BrowserSessionConsumerJob } from \"./BrowserSessionConsumerJob\";\nimport { RemoteLogConsumerJob } from \"./RemoteLogConsumerJob\";\nimport { TrackingStatusConsumerJob } from \"./TrackingStatusConsumerJob\";\n\nclass JobsStarter {\n\n public static getInstance() {\n if (!JobsStarter.instance) {\n JobsStarter.instance = new JobsStarter();\n }\n return JobsStarter.instance;\n }\n\n private static instance: JobsStarter;\n\n public constructor() {\n this.createJobs();\n }\n\n private createJobs() {\n BrowserSessionConsumerJob.getInstance().start();\n AppViewSessionConsumerJob.getInstance().start();\n TrackingStatusConsumerJob.getInstance().start();\n RemoteLogConsumerJob.getInstance().start();\n }\n\n}\n\nexport { JobsStarter };\n","import { v4 as uuid } from \"uuid\";\nimport { DBAppViewSessionFactory } from \"../../../../adapter/db/factory/DBAppViewSessionFactory\";\nimport { LogsConfig } from \"../../../../config/LogsConfig\";\nimport { IRemoteAppViewSession } from \"../../../model/IRemoteAppViewSession\";\n\nclass AppViewSessionService {\n\n public log(message: IRemoteAppViewSession): void {\n const timestamp = this.now();\n LogsConfig.getInstance().isAppViewSessionActive().then((isActive) => {\n if (isActive) {\n this.queueMessage(message, timestamp);\n }\n });\n }\n\n private queueMessage(message: IRemoteAppViewSession, timestamp: string) {\n this.dbInstance().getDB().setItem(uuid(), {\n date: timestamp,\n statusCode: message.statusCode,\n statusText: message.statusText,\n });\n }\n\n private dbInstance() {\n return DBAppViewSessionFactory.getInstance();\n }\n\n private now() {\n return new Date().toISOString();\n }\n\n}\n\nexport { AppViewSessionService };\n","import { v4 as uuid } from \"uuid\";\nimport { DBBrowserSessionFactory } from \"../../../../adapter/db/factory/DBBrowserSessionFactory\";\nimport { LogsConfig } from \"../../../../config/LogsConfig\";\nimport { IRemoteBrowserSession } from \"../../../model/IRemoteBrowserSession\";\n\nclass BrowserSessionService {\n\n public log(message: IRemoteBrowserSession): void {\n const timestamp = this.now();\n LogsConfig.getInstance().isBrowserSessionActive().then((isActive) => {\n if (isActive) {\n this.queueMessage(message, timestamp);\n }\n });\n }\n\n private queueMessage(message: IRemoteBrowserSession, timestamp: string) {\n this.dbInstance().getDB().setItem(uuid(), {\n date: timestamp,\n deviceResolution: message.deviceResolution,\n deviceWebcam: message.deviceWebcam,\n deviceWebgl: message.deviceWebgl,\n });\n }\n\n private dbInstance() {\n return DBBrowserSessionFactory.getInstance();\n }\n\n private now() {\n return new Date().toISOString();\n }\n\n}\n\nexport { BrowserSessionService };\n","import { v4 as uuid } from \"uuid\";\nimport { DBTrackingStatusFactory } from \"../../../../adapter/db/factory/DBTrackingStatusFactory\";\nimport { LogsConfig } from \"../../../../config/LogsConfig\";\nimport { IRemoteTrackingStatus } from \"../../../model/IRemoteTrackingStatus\";\n\nclass TrackingStatusService {\n\n public log(message: IRemoteTrackingStatus): void {\n const timestamp = this.now();\n LogsConfig.getInstance().isTrackingStatusActive().then((isActive) => {\n if (isActive) {\n this.queueMessage(message, timestamp);\n }\n });\n }\n\n private queueMessage(message: IRemoteTrackingStatus, timestamp: string) {\n this.dbInstance().getDB().setItem(uuid(), {\n date: timestamp,\n fps: message.fps,\n trackingCode: message.trackingCode,\n trackingText: message.trackingText,\n });\n }\n\n private dbInstance() {\n return DBTrackingStatusFactory.getInstance();\n }\n\n private now() {\n return new Date().toISOString();\n }\n\n}\n\nexport { TrackingStatusService };\n","import { RemoteLogAppender } from \"./domain/appender/RemoteLogAppender\";\nimport { IRemoteAppViewSession } from \"./domain/model/IRemoteAppViewSession\";\nimport { IRemoteBrowserSession } from \"./domain/model/IRemoteBrowserSession\";\nimport { IRemoteTrackingStatus } from \"./domain/model/IRemoteTrackingStatus\";\nimport { RemoteLogConfig } from \"./domain/RemoteLogConfig\";\nimport { JobsStarter } from \"./domain/service/job/JobsStarter\";\nimport { AppViewSessionService } from \"./domain/service/log/producer/AppViewSessionService\";\nimport { BrowserSessionService } from \"./domain/service/log/producer/BrowserSessionService\";\nimport { TrackingStatusService } from \"./domain/service/log/producer/TrackingStatusService\";\n\nclass RemoteLog {\n\n private browserSessionService = new BrowserSessionService();\n private appViewSessionService = new AppViewSessionService();\n private trackingStatusService = new TrackingStatusService();\n\n public constructor() {\n JobsStarter.getInstance();\n }\n\n public sendBrowserSession(browserSession: IRemoteBrowserSession) {\n this.browserSessionService.log(browserSession);\n }\n\n public sendAppViewSession(...appViewSession: IRemoteAppViewSession[]) {\n appViewSession.forEach((item) => {\n this.appViewSessionService.log(item);\n });\n }\n\n public sendTracking(...trackingStatus: IRemoteTrackingStatus[]) {\n trackingStatus.forEach((item) => {\n this.trackingStatusService.log(item);\n });\n }\n\n public sendFps(...trackingStatus: IRemoteTrackingStatus[]) {\n trackingStatus.forEach((item) => {\n this.trackingStatusService.log(item);\n });\n }\n\n}\n\nexport { RemoteLog, RemoteLogAppender, RemoteLogConfig };\n","import { MicroserviceEnvironment } from '../constants/MicroserviceEnvironment';\nimport { ApiConfig } from '../interfaces/ApiConfig';\n\nconst envHost: Record = {\n STAGING: 'https://test-gateway-vtoprofile.luxdeepblue.com',\n ACCEPTANCE: 'https://acceptance-gateway-vtoprofile.luxdeepblue.com',\n PRODUCTION: 'https://gateway-vtoprofile.luxdeepblue.com'\n};\n\nconst envMap: Record = {\n STAGING: {\n loginFaUrl: `${envHost.STAGING}/auth/fradv/token`,\n loginVmUrl: `${envHost.STAGING}/auth/vm/token`,\n refreshUrl: `${envHost.STAGING}/auth/refresh`,\n bipaTextUrl: `${envHost.STAGING}/services/vtobipams/public/v2/bipa/version`,\n bipaSubmitFormUrl: `${envHost.STAGING}/services/vtobipams/public/v1/bipa-consent`,\n videoSessionUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v3/video`,\n enrichUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/ml-enrich`,\n vtoUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/basel-mesh`,\n additionalInfoUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/additional-info`,\n poseExtractionUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v1/poses-extraction`,\n statusUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v2/status`,\n pdStatusUrl: `${envHost.STAGING}/services/vtomedicalinfoms/public/v1/pupillary-distance/status`,\n profileUrl: `${envHost.STAGING}/services/vtovideoprofilems/public/v3/get-video-profile`,\n },\n ACCEPTANCE: {\n loginFaUrl: `${envHost.ACCEPTANCE}/auth/fradv/token`,\n loginVmUrl: `${envHost.ACCEPTANCE}/auth/vm/token`,\n refreshUrl: `${envHost.ACCEPTANCE}/auth/refresh`,\n bipaTextUrl: `${envHost.ACCEPTANCE}/services/vtobipams/public/v2/bipa/version`,\n bipaSubmitFormUrl: `${envHost.ACCEPTANCE}/services/vtobipams/public/v1/bipa-consent`,\n videoSessionUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v3/video`,\n enrichUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/ml-enrich`,\n vtoUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/basel-mesh`,\n additionalInfoUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/additional-info`,\n poseExtractionUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v1/poses-extraction`,\n statusUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v2/status`,\n pdStatusUrl: `${envHost.ACCEPTANCE}/services/vtomedicalinfoms/public/v1/pupillary-distance/status`,\n profileUrl: `${envHost.ACCEPTANCE}/services/vtovideoprofilems/public/v3/get-video-profile`,\n },\n PRODUCTION: {\n loginFaUrl: `${envHost.PRODUCTION}/auth/fradv/token`,\n loginVmUrl: `${envHost.PRODUCTION}/auth/vm/token`,\n refreshUrl: `${envHost.PRODUCTION}/auth/refresh`,\n bipaTextUrl: `${envHost.PRODUCTION}/services/vtobipams/public/v2/bipa/version`,\n bipaSubmitFormUrl: `${envHost.PRODUCTION}/services/vtobipams/public/v1/bipa-consent`,\n videoSessionUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v3/video`,\n enrichUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/ml-enrich`,\n vtoUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/basel-mesh`,\n additionalInfoUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/additional-info`,\n poseExtractionUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v1/poses-extraction`,\n statusUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v2/status`,\n pdStatusUrl: `${envHost.PRODUCTION}/services/vtomedicalinfoms/public/v1/pupillary-distance/status`,\n profileUrl: `${envHost.PRODUCTION}/services/vtovideoprofilems/public/v3/get-video-profile`,\n }\n};\n\nconst getConfig = (env: MicroserviceEnvironment, param: keyof ApiConfig): string => {\n return envMap[env][param];\n};\n\nexport {\n getConfig\n};\n","class MicroserviceError extends Error {\n public type: string;\n\n constructor(type: string, message: string, error?: Error) {\n super(message);\n this.type = type;\n this.name = type;\n this.message = message;\n this.stack = error?.stack;\n\n Object.setPrototypeOf(this, MicroserviceError.prototype);\n }\n}\n\nclass EnvironmentError extends MicroserviceError {\n public static type = 'EnvironmentError';\n\n constructor(readonly env: string) {\n super(EnvironmentError.type, `microservice environment ${env} is not valid`);\n Object.setPrototypeOf(this, EnvironmentError.prototype);\n }\n}\n\nclass InvalidInputError extends MicroserviceError {\n public static type = 'InputError';\n\n constructor(message: string, error?: Error) {\n super(InvalidInputError.type, message, error);\n Object.setPrototypeOf(this, InvalidInputError.prototype);\n }\n}\n\nclass LocaleError extends MicroserviceError {\n public static type = 'LocaleError';\n\n constructor(readonly locale: string) {\n super(LocaleError.type, `bipa agreement text cannot be found for locale ${locale}`);\n Object.setPrototypeOf(this, LocaleError.prototype);\n }\n}\n\nclass RequestError extends MicroserviceError {\n public static type = 'RequestError';\n\n constructor(message: string, error?: Error) {\n super(RequestError.type, message, error);\n Object.setPrototypeOf(this, RequestError.prototype);\n }\n}\n\nclass TimeoutError extends MicroserviceError {\n public static type = 'TimeoutError';\n\n constructor(duration: number) {\n super(TimeoutError.type, `request has timed out after ${duration}ms`);\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\nexport {\n InvalidInputError,\n EnvironmentError,\n LocaleError,\n RequestError,\n TimeoutError\n};\n","import { RemoteLogConfig } from '@luxottica/vm-remotelog';\nimport { name, version } from '../../package.json';\nimport { getConfig } from '../config/Config';\nimport { TimeoutError } from '../error/errors';\nimport { VtoRequest } from '../interfaces/Request';\n\nconst logger = RemoteLogConfig.getInstance().getLoggerInfo(name, version, 'RequestHelper');\n\nfunction delay(ms: number) {\n return new Promise(\n resolve => setTimeout(resolve, ms)\n );\n}\n\nconst pollPromise = (\n interval: number,\n timeout: number,\n promise: () => Promise,\n shouldCancel: () => boolean\n): Promise => {\n let completed = false;\n const startTime = Date.now();\n return new Promise(async (resolve, reject) => {\n\n while (true) {\n if (completed) { return; }\n if (shouldCancel()) { return; }\n if (Date.now() - startTime > timeout) { reject(new TimeoutError(timeout)); return; }\n\n await promise().then((result) => {\n completed = true;\n resolve(result);\n }).catch(() => {\n logger.debug('continue poll');\n });\n\n await delay(interval);\n }\n });\n};\n\nconst pollProcessingStatus = (\n request: VtoRequest,\n url: string,\n entryTypes: string[]\n): Promise => {\n \n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${request.accessToken}`,\n 'accept': '*/*',\n },\n }).then(response => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error('FAILED POLL');\n }\n }).then((json: PollingResponse) => {\n logger.debug(json);\n const pollingEntry = json.filter((entry) => { return entryTypes.includes(entry.type); });\n if (pollingEntry.length > 0) {\n const complete = pollingEntry.every(entry => ['OK', 'KO'].includes(entry.progress));\n const success = pollingEntry.every(entry => entry.progress === 'OK');\n if (complete) {\n return success;\n } else {\n throw new Error('processing incomplete');\n }\n } else {\n throw new Error('processing incomplete');\n }\n }).catch(err => {\n logger.debug(err);\n throw(err);\n });\n};\n\nconst parseJsonResponse = (\n response: Response\n): Promise => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n};\n\nexport {\n pollPromise,\n pollProcessingStatus,\n parseJsonResponse\n};\n","import { getConfig } from '../config/Config';\nimport { RefreshResponse, RefreshReturn } from '../interfaces/Refresh';\nimport { VtoRequest } from '../interfaces/Request';\n\nconst refreshRequest = (\n request: VtoRequest\n): Promise => {\n\n const url = getConfig(request.environment, 'refreshUrl');\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n refresh_token: request.refreshToken\n })\n\n }).then(response => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n\n }).then((json: RefreshResponse) => {\n // logger.debug(json);\n const refreshReturn = {\n accessToken: json.access_token,\n refreshToken: json.refresh_token\n };\n if (!!request.onAuthUpdated) { request.onAuthUpdated(refreshReturn); }\n return refreshReturn;\n\n }).catch(err => {\n // logger.error(err);\n throw(err);\n\n });\n};\n\nexport {\n refreshRequest\n};\n","import { getConfig } from '../config/Config';\nimport { LocaleError } from '../error/errors';\nimport { parseJsonResponse } from '../helpers/RequestHelper';\nimport { BipaAgreementRequestData, BipaAgreementResponse, BipaAgreementReturn, BipaTextResponse, SubmitBipaFormRequestData } from '../interfaces/Bipa';\nimport { refreshRequest } from './RefreshRequest';\n\nconst bipaAgreementFetch = (\n request: BipaAgreementRequestData\n): Promise => {\n const bipaAgreementUrl = getConfig(request.environment, 'bipaTextUrl');\n\n return fetch(bipaAgreementUrl, {\n method: 'GET',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`,\n },\n });\n};\n\nconst bipaAgreementRequest = (\n request: BipaAgreementRequestData\n): Promise => {\n\n let bipaVersion: number;\n let bipaDescription: string;\n\n return bipaAgreementFetch(request).then((bipaAgreementResponse) => {\n if (bipaAgreementResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return bipaAgreementFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return bipaAgreementResponse;\n }\n\n }).then((response) => {\n return parseJsonResponse(response);\n\n }).then((json: BipaTextResponse) => {\n bipaVersion = json.version;\n bipaDescription = json.description;\n\n const bipaUrls = JSON.parse(json.jsonUrl);\n if (!!bipaUrls[request.locale]) {\n return fetch(bipaUrls[request.locale]);\n } else {\n throw new LocaleError(request.locale);\n }\n\n }).then((response) => {\n return parseJsonResponse(response);\n\n }).then((bipaAgreementResponse: BipaAgreementResponse) => {\n return {\n version: bipaVersion,\n description: bipaDescription,\n text: bipaAgreementResponse.BIPA_AGREEMENT,\n };\n });\n};\n\nconst submitBipaFormFetch = (\n request: SubmitBipaFormRequestData\n): Promise => {\n const bipaSubmitUrl = getConfig(request.environment, 'bipaSubmitFormUrl');\n\n return fetch(bipaSubmitUrl, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`,\n },\n body: `{ \"bipaVersion\": ${request.bipaVersion}, \"channel\": \"${request.source}\", \"firstName\": \"${request.firstName}\", \"lastName\": \"${request.lastName}\", \"email\": \"${request.email}\" }`\n });\n};\n\nconst submitBipaFormRequest = (\n request: SubmitBipaFormRequestData\n): Promise => {\n\n return submitBipaFormFetch(request).then((submitBipaResponse) => {\n if (submitBipaResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return submitBipaFormFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return submitBipaResponse;\n }\n });\n};\n\nexport {\n bipaAgreementRequest,\n submitBipaFormRequest\n};\n","import { getConfig } from '../config/Config';\nimport { ProfileRequestData, ProfileResponse, ProfileReturn } from '../interfaces/Profile';\nimport { refreshRequest } from './RefreshRequest';\n\nconst profileFetch = (\n request: ProfileRequestData\n): Promise => {\n const url = getConfig(request.environment, 'profileUrl');\n\n return fetch(`${url}/${request.videoId}`, {\n method: 'GET',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`\n }\n });\n};\n\nconst profileRequest = (\n request: ProfileRequestData\n): Promise => {\n\n return profileFetch(request).then((profileResponse) => {\n if (profileResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return profileFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return profileResponse;\n }\n\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n\n }).then((json: ProfileResponse) => {\n const result: ProfileReturn = {};\n result['properties'] = json.mlInformations;\n result['videoId'] = json.uuid;\n return result;\n\n });\n};\n\nexport {\n profileRequest\n};","import { getConfig } from '../config/Config';\nimport { InvalidInputError, RequestError } from '../error/errors';\nimport { pollProcessingStatus, pollPromise } from '../helpers/RequestHelper';\nimport { ProcessImageRequestData, UploadImageDataRequestData, UploadImageRequestData, UploadImageResponse, UploadImageReturn } from '../interfaces/Image';\nimport { ProfileReturn } from '../interfaces/Profile';\nimport { profileRequest } from './ProfileRequest';\nimport { refreshRequest } from './RefreshRequest';\n\nconst uploadImageFetch = (\n request: UploadImageRequestData\n): Promise => {\n\n const form = new FormData();\n form.append('file', new File([request.img], 'take0.jpg', { type: 'image/jpeg' }));\n\n return fetch(`${request.uploadPath}/take0.jpg`, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n Authorization: `Bearer ${request.accessToken}`\n },\n body: form\n });\n};\n\nconst processImageFetch = (\n request: ProcessImageRequestData\n): Promise> => {\n const mlUrl = getConfig(request.environment, 'enrichUrl');\n const vtoUrl = getConfig(request.environment, 'vtoUrl');\n\n return Promise.all([\n (request.enableMachineLearning) ? fetch(mlUrl, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`\n },\n 'body': `{ \"uuid\": \"${request.videoId}\" }`\n }): undefined,\n (request.enableVto) ? fetch(vtoUrl, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`\n },\n 'body': `{ \"uuid\": \"${request.videoId}\" }`\n }) : undefined\n ]);\n};\n\nconst uploadImageRequest = (\n request: UploadImageRequestData\n): Promise => {\n\n return uploadImageFetch(request).then((uploadImageResponse) => {\n if (uploadImageResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return uploadImageFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return uploadImageResponse;\n }\n }).then((response) => {\n if (response.ok) {\n return;\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n });\n};\n\nconst uploadImageDataRequest = (\n request: UploadImageDataRequestData\n): Promise => {\n\n return new Promise((resolve, reject) => {\n const w = request.imgData.width;\n const h = request.imgData.height;\n \n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n \n const ctx = canvas.getContext('2d');\n if (!!ctx) {\n ctx.putImageData(request.imgData, 0, 0);\n canvas.toBlob((blob) => {\n if (!!blob) {\n resolve(blob);\n } else {\n reject(new RequestError('failed to extract image from canvas'));\n }\n }, 'image/jpeg', 0.95);\n \n } else {\n reject(new RequestError('failed to extract image from canvas'));\n }\n }).then((imgBlob) => {\n return uploadImageRequest({\n ...request,\n img: imgBlob\n });\n });\n};\n\nconst processImageRequest = (\n request: ProcessImageRequestData\n): Promise => {\n\n if (!request.enableMachineLearning && !request.enableVto) {\n return Promise.reject(new InvalidInputError('enableMachineLearning and enableVto cannot both be set to false'));\n }\n\n return processImageFetch(request).then((processImageResponse) => {\n if ((!!processImageResponse[0] && processImageResponse[0].ok && processImageResponse[0].status === 401)\n || (!!processImageResponse[1] && processImageResponse[1].ok && processImageResponse[1].status === 401)) {\n return refreshRequest(request).then((refreshResponse) => {\n return processImageFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return processImageResponse;\n }\n\n }).then((response) => {\n if ((response[0] === undefined || response[0].ok)\n && (response[1] === undefined || response[1].ok)) {\n\n const promises: Promise[] = [];\n const entries: string[] = [];\n\n if (request.enableVto) {\n entries.push('BASEL_MESH');\n }\n\n if (request.enableMachineLearning) { \n entries.push('ML_INFORMATION');\n\n const pdStatusUrl = `${getConfig(request.environment, 'pdStatusUrl')}/${request.videoId}` ;\n promises.push(pollPromise(\n 1000,\n 30000,\n () => pollProcessingStatus(request, pdStatusUrl, ['PD']),\n request.shouldCancel\n ));\n }\n\n const statusUrl = `${getConfig(request.environment, 'statusUrl')}/${request.videoId}` ;\n promises.push(pollPromise(\n 1000,\n 30000,\n () => pollProcessingStatus(request, statusUrl, entries),\n request.shouldCancel\n ));\n\n return Promise.all(promises).then(results => results.every(result => !!result));\n\n } else {\n throw new RequestError(`failed to poll status with sessionId=${request.videoId}`);\n }\n\n }).then((success) => {\n if (success) {\n return profileRequest(request);\n } else {\n throw new RequestError(`failed to poll status with sessionId=${request.videoId}`);\n }\n });\n};\n\nexport {\n uploadImageRequest,\n uploadImageDataRequest,\n processImageRequest\n};","import { getConfig } from '../config/Config';\nimport { LoginRequestData, LoginResponse, LoginReturn } from '../interfaces/Login';\n\nconst loginRequest = (\n request: LoginRequestData\n): Promise => {\n\n if (!!request.accessToken && !!request.refreshToken) {\n return Promise.resolve({\n accessToken: request.accessToken,\n refreshToken: request.refreshToken\n });\n\n } else {\n const loginType = (request.version === 1) ? 'loginVmUrl' : 'loginFaUrl';\n const url = getConfig(request.environment, loginType);\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ rememberMe: true })\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n }).then((json: LoginResponse) => {\n const authData = {\n accessToken: json.access_token,\n refreshToken: json.refresh_token\n };\n request.onAuthUpdated?.(authData);\n return authData;\n });\n }\n};\n\nexport {\n loginRequest\n};","import { getConfig } from '../config/Config';\nimport { SessionRequestData, SessionResponse, SessionReturn } from '../interfaces/Session';\nimport { refreshRequest } from './RefreshRequest';\n\nconst sessionFetch = (\n request: SessionRequestData\n): Promise => {\n\n const url = getConfig(request.environment, 'videoSessionUrl');\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`,\n },\n body: `{ \"region\": \"${request.region}\", \"source\": \"${request.source}\"}`\n });\n};\n\nconst sessionRequest = (\n request: SessionRequestData\n): Promise => {\n\n return sessionFetch(request).then((sessionResponse) => {\n if (sessionResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return sessionFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return sessionResponse;\n }\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n }).then((json: SessionResponse) => {\n return {\n videoId: json.uuid,\n uploadPath: json.uploadBasePath,\n };\n });\n};\n\nexport {\n sessionRequest\n};","import { getConfig } from '../config/Config';\nimport { InvalidInputError, RequestError } from '../error/errors';\nimport { pollProcessingStatus, pollPromise } from '../helpers/RequestHelper';\nimport { ProfileReturn } from '../interfaces/Profile';\nimport { ProcessVideoRequestData, UploadVideoRequestData } from '../interfaces/Video';\nimport { profileRequest } from './ProfileRequest';\nimport { refreshRequest } from './RefreshRequest';\n\nconst uploadVideoFetch = (\n request: UploadVideoRequestData\n): Promise => {\n\n const form = new FormData();\n const mimeType = `video/${request.fileType}`;\n form.append('file', new File(request.video, `videoTake.${request.fileType}`, { type: mimeType }));\n\n return fetch(`${request.uploadPath}/videoTake.${request.fileType}`, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n Authorization: `Bearer ${request.accessToken}`,\n },\n body: form\n }).then(response => {\n const url = getConfig(request.environment, 'additionalInfoUrl');\n\n if (response.ok) {\n return fetch(`${url}/${request.videoId}`, {\n method: 'PUT',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`,\n },\n 'body': `{ \"mimeType\": \"${mimeType}\" }`\n });\n } else {\n const e = new Error('failed to upload');\n throw e;\n }\n });\n};\n\nconst processVideoFetch = (\n request: ProcessVideoRequestData\n): Promise> => {\n const mlUrl = getConfig(request.environment, 'enrichUrl');\n const vtoUrl = getConfig(request.environment, 'poseExtractionUrl');\n\n return Promise.all([\n (request.enableMachineLearning) ? fetch(mlUrl, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`\n },\n 'body': `{ \"uuid\": \"${request.videoId}\" }`\n }): undefined,\n (request.enableVto) ? fetch(vtoUrl, {\n method: 'POST',\n headers: {\n 'Accept': '*/*',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${request.accessToken}`\n },\n 'body': `{ \"uuid\": \"${request.videoId}\" }`\n }) : undefined\n ]);\n};\n\nconst uploadVideoRequest = (\n request: UploadVideoRequestData\n): Promise => {\n\n return uploadVideoFetch(request).then((uploadVideoResponse) => {\n if (uploadVideoResponse.status === 401) {\n return refreshRequest(request).then((refreshResponse) => {\n return uploadVideoFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return uploadVideoResponse;\n }\n }).then((response) => {\n if (response.ok) {\n return;\n } else {\n return response.json().catch(() => {\n throw new Error(`${response.status}: ${response.statusText}`);\n }).then((json) => {\n throw new Error(JSON.stringify(json));\n });\n }\n });\n};\n\nconst processVideoRequest = (\n request: ProcessVideoRequestData\n): Promise => {\n\n if (!request.enableMachineLearning && !request.enableVto) {\n return Promise.reject(new InvalidInputError('enableMachineLearning and enableVto cannot both be set to false'));\n }\n\n return processVideoFetch(request).then((processVideoResponse) => {\n if ((!!processVideoResponse[0] && processVideoResponse[0].ok && processVideoResponse[0].status === 401)\n || (!!processVideoResponse[1] && processVideoResponse[1].ok && processVideoResponse[1].status === 401)) {\n return refreshRequest(request).then((refreshResponse) => {\n return processVideoFetch({\n ...request,\n accessToken: refreshResponse.accessToken,\n refreshToken: refreshResponse.refreshToken\n });\n });\n } else {\n return processVideoResponse;\n }\n\n }).then((response) => {\n if ((response[0] === undefined || response[0].ok)\n && (response[1] === undefined || response[1].ok)) {\n\n const promises: Promise[] = [];\n const entries: string[] = ['POSES_EXTRACTION'];\n\n if (request.enableVto) {\n entries.push('BASEL_MESH');\n }\n\n if (request.enableMachineLearning) {\n entries.push('ML_INFORMATION');\n\n const pdStatusUrl = `${getConfig(request.environment, 'pdStatusUrl')}/${request.videoId}` ;\n promises.push(pollPromise(\n 1000,\n 30000,\n () => pollProcessingStatus(request, pdStatusUrl, ['PD']),\n request.shouldCancel\n ));\n }\n\n const statusUrl = `${getConfig(request.environment, 'statusUrl')}/${request.videoId}` ;\n promises.push(pollPromise(\n 1000,\n 30000,\n () => pollProcessingStatus(request, statusUrl, entries),\n request.shouldCancel\n ));\n\n return Promise.all(promises).then(results => results.every(result => !!result));\n\n } else {\n throw new RequestError(`failed to poll status with sessionId=${request.videoId}`);\n }\n\n }).then((success) => {\n if (success) {\n return profileRequest(request);\n } else {\n throw new RequestError(`failed to poll status with sessionId=${request.videoId}`);\n }\n });\n};\n\nexport {\n uploadVideoRequest,\n processVideoRequest\n};\n","enum Environment {\n LOCAL = \"LOCAL\",\n PROD = \"PROD\",\n TEST = \"TEST\",\n}\n\nconst hostname = {\n LOCAL: \"http://localhost:5000\",\n PROD: \"https://vmcore.luxottica.com\",\n TEST: \"https://vmcore-test.luxottica.com\",\n};\n\nconst getHostname = (env: Environment) => {\n return hostname[env];\n};\n\nexport {\n Environment,\n getHostname,\n};\n","\nvar NativeModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n return (\nfunction(NativeModule) {\n NativeModule = NativeModule || {};\n\nvar Module=typeof NativeModule!==\"undefined\"?NativeModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0,\"getNativeTypeSize invalid bits \"+bits+\", type \"+type);return bits/8}else{return 0}}}}var asm2wasmImports={\"f64-rem\":function(x,y){return x%y},\"debugger\":function(){}};var functionPointers=new Array(0);var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":3014,\"maximum\":3014,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var ALLOC_NORMAL=0;var ALLOC_NONE=3;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,stackAlloc,dynamicAlloc][allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var PAGE_SIZE=16384;var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=6028384,DYNAMICTOP_PTR=785296;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||33554432;if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile=\"vm_ht.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_unstable\":asmLibraryArg,\"global\":{\"NaN\":NaN,Infinity:Infinity},\"global.Math\":Math,\"asm2wasm\":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}Module[\"asm\"]=createWasm;var tempDouble;var tempI64;__ATINIT__.push({func:function(){globalCtors()}});function demangle(func){return func}function demangleAll(text){var regex=/\\b__Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV[\"USER\"]=ENV[\"LOGNAME\"]=\"web_user\";ENV[\"PATH\"]=\"/\";ENV[\"PWD\"]=\"/\";ENV[\"HOME\"]=\"/home/web_user\";ENV[\"LANG\"]=(typeof navigator===\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";ENV[\"_\"]=thisProgram;poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]===\"string\"){var line=key+\"=\"+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}var ___exception_infos={};function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}var ___exception_last=0;function ___cxa_throw(ptr,type,destructor){___exception_infos[ptr]={ptr:ptr,adjusted:[ptr],type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};___exception_last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exceptions=1}else{__ZSt18uncaught_exceptionv.uncaught_exceptions++}throw ptr}function ___cxa_uncaught_exceptions(){return __ZSt18uncaught_exceptionv.uncaught_exceptions}function ___lock(){}function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function ___map_file(pathname,size){___setErrNo(1);return-1}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!==\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=path.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(function(p){return!!p}),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(1)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}});var remove=[];Object.keys(dst.entries).forEach(function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}});if(!total){return callback(null)}var errored=false;var db=src.type===\"remote\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readwrite\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err&&!errored){errored=true;return callback(err)}}transaction.onerror=function(e){done(this.error);e.preventDefault()};transaction.oncomplete=function(e){if(!errored){callback(null)}};create.sort().forEach(function(path){if(dst.type===\"local\"){IDBFS.loadRemoteEntry(store,path,function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)})}else{IDBFS.loadLocalEntry(path,function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)})}});remove.sort().reverse().forEach(function(path){if(dst.type===\"local\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,\"/\",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split(\"/\");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(5)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(22)}return position}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)},lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(40)}var parts=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(40)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return 13}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return 13}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return 13}return 0},mayLookup:function(dir){var err=FS.nodePermissions(dir,\"x\");if(err)return err;if(!dir.node_ops.lookup)return 13;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 17}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,\"wx\");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return 20}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 16}}else{if(FS.isDir(node.mode)){return 21}}return 0},mayOpen:function(node,flags){if(!node){return 2}if(FS.isLink(node.mode)){return 40}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 21}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(24)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(29)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate===\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(16)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(16)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(20)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(22)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(22)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(1)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i\"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"WORKERFS\":WORKERFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);if(typeof Uint8Array!=\"undefined\")xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]===\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]===\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!==\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(5)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(5)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-22}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-22;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-22}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-2}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-13}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},getStreamFromFD:function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(9);return stream},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-75}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[result>>2]=tempI64[0],HEAP32[result+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-22}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-22;case 9:___setErrNo(22);return-1;default:{return-22}}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall4(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.write(stream,HEAP8,buf,count)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-25;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-25;return 0}case 21519:{if(!stream.tty)return-25;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-25;return-22}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-25;return 0}case 21524:{if(!stream.tty)return-25;return 0}default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __emscripten_syscall_munmap(addr,len){if(addr===-1||len===0){return-22}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();return __emscripten_syscall_munmap(addr,len)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _fd_write(stream,iov,iovcnt,pnum){try{stream=FS.getStream(stream);if(!stream)throw new FS.ErrnoError(9);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn(\"object already deleted: \"+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(dynCall){var args=[];for(var i=1;i>2)+i])}return array}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+\" called with \"+arguments.length+\" arguments, expected \"+(argCount-1))}var destructors=[];var args=new Array(argCount);args[0]=rawConstructor;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this[\"fromWireType\"](heap[pointer>>2])};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,\"fromWireType\":function(c){return this.constructor.values[c]},\"toWireType\":function(destructors,c){return c.value},\"argPackAdvance\":8,\"readValueFromPointer\":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,\"enum\");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+\"_\"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!==\"number\"&&typeof value!==\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(\"Cannot call \"+name+\" due to unbound types\",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf(\"unsigned\")!=-1;registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":function(destructors,value){if(typeof value!==\"number\"&&typeof value!==\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}return isUnsignedType?value>>>0:value|0},\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(heap[\"buffer\"],data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var endChar=HEAPU8[value+4+length];var endCharSwap=0;if(endChar!=0){endCharSwap=endChar;HEAPU8[value+4+length]=0}var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(HEAPU8[currentBytePtr]==0){var stringSegment=UTF8ToString(decodeStartPtr);if(str===undefined)str=stringSegment;else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}if(endCharSwap!=0)HEAPU8[value+4+length]=endCharSwap}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var a=new Array(length);var start=value+4>>shift;for(var i=0;i>2]=length;var start=ptr+4>>shift;for(var i=0;i>2]=rd;return returnType[\"toWireType\"](destructors,handle)}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key])}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_new_object(){return __emval_register({})}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function __emval_set_property(handle,key,value){handle=requireHandle(handle);key=requireHandle(key);value=requireHandle(value);handle[key]=value}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return __emval_register(v)}function _abort(){abort()}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return 0||typeof performance===\"object\"&&performance&&typeof performance[\"now\"]===\"function\"}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(22);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _emscripten_get_heap_size(){return HEAP8.length}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _getenv(name){if(name===0)return 0;name=UTF8ToString(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}var ___tm_timezone=(stringToUTF8(\"GMT\",785392,4),785392);function _gmtime_r(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();HEAP32[tmPtr+36>>2]=0;HEAP32[tmPtr+32>>2]=0;var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+40>>2]=___tm_timezone;return tmPtr}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}function _llvm_trap(){abort(\"trap!\")}function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),\"i8\",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),\"i8\",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function _pthread_cond_wait(){return 0}function _pthread_mutexattr_destroy(){}function _pthread_mutexattr_init(){}function _pthread_mutexattr_settype(){}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value===\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={\"%a\":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},\"%A\":function(date){return WEEKDAYS[date.tm_wday]},\"%b\":function(date){return MONTHS[date.tm_mon].substring(0,3)},\"%B\":function(date){return MONTHS[date.tm_mon]},\"%C\":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":function(date){return leadingNulls(date.tm_mday,2)},\"%e\":function(date){return leadingSomething(date.tm_mday,2,\" \")},\"%g\":function(date){return getWeekBasedYear(date).toString().substring(2)},\"%G\":function(date){return getWeekBasedYear(date)},\"%H\":function(date){return leadingNulls(date.tm_hour,2)},\"%I\":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},\"%m\":function(date){return leadingNulls(date.tm_mon+1,2)},\"%M\":function(date){return leadingNulls(date.tm_min,2)},\"%n\":function(){return\"\\n\"},\"%p\":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}else{return\"PM\"}},\"%S\":function(date){return leadingNulls(date.tm_sec,2)},\"%t\":function(){return\"\\t\"},\"%u\":function(date){return date.tm_wday||7},\"%U\":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?\"01\":\"00\"},\"%V\":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return\"53\"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return\"01\"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":function(date){return date.tm_zone},\"%%\":function(){return\"%\"}};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:var maxHeapSize=2*1024*1024*1024-65536;maxHeapSize=HEAPU8.length;return maxHeapSize/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}___setErrNo(22);return-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof performance===\"object\"&&performance&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=function(){return performance[\"now\"]()}}else{_emscripten_get_now=Date.now}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmGlobalArg={};var asmLibraryArg={\"pa\":___buildEnvironment,\"b\":___cxa_allocate_exception,\"ca\":___cxa_pure_virtual,\"a\":___cxa_throw,\"Y\":___cxa_uncaught_exceptions,\"F\":___lock,\"N\":___map_file,\"C\":___syscall140,\"M\":___syscall145,\"oa\":___syscall195,\"na\":___syscall20,\"t\":___syscall221,\"ma\":___syscall3,\"la\":___syscall4,\"L\":___syscall5,\"ka\":___syscall54,\"B\":___syscall6,\"ja\":___syscall91,\"s\":___unlock,\"ia\":___wasi_fd_write,\"ha\":__embind_finalize_value_array,\"K\":__embind_finalize_value_object,\"ga\":__embind_register_bool,\"fa\":__embind_register_class,\"ea\":__embind_register_class_constructor,\"f\":__embind_register_class_function,\"da\":__embind_register_emval,\"A\":__embind_register_enum,\"g\":__embind_register_enum_value,\"J\":__embind_register_float,\"ba\":__embind_register_function,\"l\":__embind_register_integer,\"h\":__embind_register_memory_view,\"I\":__embind_register_std_string,\"aa\":__embind_register_std_wstring,\"$\":__embind_register_value_array,\"w\":__embind_register_value_array_element,\"H\":__embind_register_value_object,\"q\":__embind_register_value_object_field,\"_\":__embind_register_void,\"z\":__emval_as,\"e\":__emval_decref,\"y\":__emval_get_property,\"Z\":__emval_incref,\"k\":__emval_new_cstring,\"G\":__emval_new_object,\"x\":__emval_run_destructors,\"j\":__emval_set_property,\"o\":__emval_take_value,\"__memory_base\":1024,\"__table_base\":0,\"c\":_abort,\"p\":_clock_gettime,\"X\":_emscripten_get_heap_size,\"W\":_emscripten_memcpy_big,\"V\":_emscripten_resize_heap,\"i\":_getenv,\"U\":_gmtime_r,\"n\":_llvm_stackrestore,\"m\":_llvm_stacksave,\"T\":_llvm_trap,\"E\":_localtime_r,\"S\":_pthread_cond_wait,\"r\":_pthread_mutexattr_destroy,\"v\":_pthread_mutexattr_init,\"u\":_pthread_mutexattr_settype,\"R\":_strftime,\"Q\":_strftime_l,\"P\":_sysconf,\"O\":_time,\"d\":abort,\"memory\":wasmMemory,\"D\":setTempRet0,\"table\":wasmTable};var asm=Module[\"asm\"](asmGlobalArg,asmLibraryArg,buffer);Module[\"asm\"]=asm;var __ZSt18uncaught_exceptionv=Module[\"__ZSt18uncaught_exceptionv\"]=function(){return Module[\"asm\"][\"qa\"].apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=function(){return Module[\"asm\"][\"ra\"].apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return Module[\"asm\"][\"sa\"].apply(null,arguments)};var ___getTypeName=Module[\"___getTypeName\"]=function(){return Module[\"asm\"][\"ta\"].apply(null,arguments)};var __get_daylight=Module[\"__get_daylight\"]=function(){return Module[\"asm\"][\"ua\"].apply(null,arguments)};var __get_timezone=Module[\"__get_timezone\"]=function(){return Module[\"asm\"][\"va\"].apply(null,arguments)};var __get_tzname=Module[\"__get_tzname\"]=function(){return Module[\"asm\"][\"wa\"].apply(null,arguments)};var _free=Module[\"_free\"]=function(){return Module[\"asm\"][\"xa\"].apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return Module[\"asm\"][\"ya\"].apply(null,arguments)};var globalCtors=Module[\"globalCtors\"]=function(){return Module[\"asm\"][\"wb\"].apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return Module[\"asm\"][\"xb\"].apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return Module[\"asm\"][\"yb\"].apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return Module[\"asm\"][\"zb\"].apply(null,arguments)};var dynCall_di=Module[\"dynCall_di\"]=function(){return Module[\"asm\"][\"za\"].apply(null,arguments)};var dynCall_diii=Module[\"dynCall_diii\"]=function(){return Module[\"asm\"][\"Aa\"].apply(null,arguments)};var dynCall_fii=Module[\"dynCall_fii\"]=function(){return Module[\"asm\"][\"Ba\"].apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return Module[\"asm\"][\"Ca\"].apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return Module[\"asm\"][\"Da\"].apply(null,arguments)};var dynCall_iidiiii=Module[\"dynCall_iidiiii\"]=function(){return Module[\"asm\"][\"Ea\"].apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return Module[\"asm\"][\"Fa\"].apply(null,arguments)};var dynCall_iiid=Module[\"dynCall_iiid\"]=function(){return Module[\"asm\"][\"Ga\"].apply(null,arguments)};var dynCall_iiiff=Module[\"dynCall_iiiff\"]=function(){return Module[\"asm\"][\"Ha\"].apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return Module[\"asm\"][\"Ia\"].apply(null,arguments)};var dynCall_iiiiff=Module[\"dynCall_iiiiff\"]=function(){return Module[\"asm\"][\"Ja\"].apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return Module[\"asm\"][\"Ka\"].apply(null,arguments)};var dynCall_iiiiid=Module[\"dynCall_iiiiid\"]=function(){return Module[\"asm\"][\"La\"].apply(null,arguments)};var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=function(){return Module[\"asm\"][\"Ma\"].apply(null,arguments)};var dynCall_iiiiiid=Module[\"dynCall_iiiiiid\"]=function(){return Module[\"asm\"][\"Na\"].apply(null,arguments)};var dynCall_iiiiiifiididiii=Module[\"dynCall_iiiiiifiididiii\"]=function(){return Module[\"asm\"][\"Oa\"].apply(null,arguments)};var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=function(){return Module[\"asm\"][\"Pa\"].apply(null,arguments)};var dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=function(){return Module[\"asm\"][\"Qa\"].apply(null,arguments)};var dynCall_iiiiiiiii=Module[\"dynCall_iiiiiiiii\"]=function(){return Module[\"asm\"][\"Ra\"].apply(null,arguments)};var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=function(){return Module[\"asm\"][\"Sa\"].apply(null,arguments)};var dynCall_ji=Module[\"dynCall_ji\"]=function(){return Module[\"asm\"][\"Ta\"].apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return Module[\"asm\"][\"Ua\"].apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return Module[\"asm\"][\"Va\"].apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return Module[\"asm\"][\"Wa\"].apply(null,arguments)};var dynCall_vid=Module[\"dynCall_vid\"]=function(){return Module[\"asm\"][\"Xa\"].apply(null,arguments)};var dynCall_vidii=Module[\"dynCall_vidii\"]=function(){return Module[\"asm\"][\"Ya\"].apply(null,arguments)};var dynCall_vifff=Module[\"dynCall_vifff\"]=function(){return Module[\"asm\"][\"Za\"].apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return Module[\"asm\"][\"_a\"].apply(null,arguments)};var dynCall_viid=Module[\"dynCall_viid\"]=function(){return Module[\"asm\"][\"$a\"].apply(null,arguments)};var dynCall_viidi=Module[\"dynCall_viidi\"]=function(){return Module[\"asm\"][\"ab\"].apply(null,arguments)};var dynCall_viif=Module[\"dynCall_viif\"]=function(){return Module[\"asm\"][\"bb\"].apply(null,arguments)};var dynCall_viifff=Module[\"dynCall_viifff\"]=function(){return Module[\"asm\"][\"cb\"].apply(null,arguments)};var dynCall_viii=Module[\"dynCall_viii\"]=function(){return Module[\"asm\"][\"db\"].apply(null,arguments)};var dynCall_viiid=Module[\"dynCall_viiid\"]=function(){return Module[\"asm\"][\"eb\"].apply(null,arguments)};var dynCall_viiidiiii=Module[\"dynCall_viiidiiii\"]=function(){return Module[\"asm\"][\"fb\"].apply(null,arguments)};var dynCall_viiif=Module[\"dynCall_viiif\"]=function(){return Module[\"asm\"][\"gb\"].apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return Module[\"asm\"][\"hb\"].apply(null,arguments)};var dynCall_viiiid=Module[\"dynCall_viiiid\"]=function(){return Module[\"asm\"][\"ib\"].apply(null,arguments)};var dynCall_viiiidiiii=Module[\"dynCall_viiiidiiii\"]=function(){return Module[\"asm\"][\"jb\"].apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return Module[\"asm\"][\"kb\"].apply(null,arguments)};var dynCall_viiiiidiiiii=Module[\"dynCall_viiiiidiiiii\"]=function(){return Module[\"asm\"][\"lb\"].apply(null,arguments)};var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=function(){return Module[\"asm\"][\"mb\"].apply(null,arguments)};var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=function(){return Module[\"asm\"][\"nb\"].apply(null,arguments)};var dynCall_viiiiiiiddi=Module[\"dynCall_viiiiiiiddi\"]=function(){return Module[\"asm\"][\"ob\"].apply(null,arguments)};var dynCall_viiiiiiii=Module[\"dynCall_viiiiiiii\"]=function(){return Module[\"asm\"][\"pb\"].apply(null,arguments)};var dynCall_viiiiiiiii=Module[\"dynCall_viiiiiiiii\"]=function(){return Module[\"asm\"][\"qb\"].apply(null,arguments)};var dynCall_viiiiiiiiidd=Module[\"dynCall_viiiiiiiiidd\"]=function(){return Module[\"asm\"][\"rb\"].apply(null,arguments)};var dynCall_viiiiiiiiii=Module[\"dynCall_viiiiiiiiii\"]=function(){return Module[\"asm\"][\"sb\"].apply(null,arguments)};var dynCall_viiiiiiiiiiddi=Module[\"dynCall_viiiiiiiiiiddi\"]=function(){return Module[\"asm\"][\"tb\"].apply(null,arguments)};var dynCall_viijii=Module[\"dynCall_viijii\"]=function(){return Module[\"asm\"][\"ub\"].apply(null,arguments)};var dynCall_vij=Module[\"dynCall_vij\"]=function(){return Module[\"asm\"][\"vb\"].apply(null,arguments)};Module[\"asm\"]=asm;Module[\"FS\"]=FS;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}noExitRuntime=true;run();\n\n\n return NativeModule\n}\n);\n})();\nexport default NativeModule;","import { Environment, getHostname } from \"./Environment.js\";\n\n// const requireFromUrl = require('require-from-url');\n// TODO: modify the path for the new wasmVersion\nimport Module from \"../artifacts/headtracker/3.1.3/vm_ht.js\";\n\n// returns the javascript glue code\n// TODO: here probably is where we should introduce a dynamic return in order to load localhost releases\n// TODO: modify the path for the new wasmVersion\nconst getWasmUrl = (env: Environment): string => {\n return `${getHostname(env)}/headtracker/3.1.3/vm_ht.wasm`;\n};\n\nconst loadWasm = (env: Environment) => {\n const wasmUrl = getWasmUrl(env);\n const wsm = Module({\n locateFile(path: string) {\n if (path.endsWith(\".wasm\")) {\n return wasmUrl;\n } else {\n return undefined;\n }\n },\n });\n return wsm;\n};\n\nexport {\n Environment as WasmEnvironment,\n loadWasm,\n};\n"],"names":["access_token","refresh_token","CONFIG","ROOT_STYLE_NAME","logger","RemoteLogConfig","getLoggerInfo","name","version","getAuthData","accessToken","refreshToken","setAuthData","authData","debug","DOMDefaultTarget","document","querySelector","onLoadingEvent","dispatchEvent","Event","onAvisorResultEvent","onCaptureErrorEvent","onDisplayPrivacyPageEvent","onPrivacyDisplayEvent","onCaptureProcessEvent","CallbackHelper","onDisplayPrivacyPage","onPrivacyDisplay","onPrivacyFail","onPrivacyReject","onVtoCaptureStep","onCountdown","onNudging","onImageConfirm","undefined","onLoading","onAdvisorResult","onCaptureProcess","onCaptureError","onAuthUpdated","LoadingSpinner","props","size","Math","min","width","height","React","className","style","LocalizationDefaults","locale","language","localeMap","de","en","es","fr","it","ja","ko","nl","pl","pt","sv","tr","zh","translations","PERMISSION_ERROR","ERROR","SUBTEXT","WEBCAM_ERROR","GENERIC_ERROR","MANUAL_START","BUTTON","TEXT","GUIDANCE","UNKNOWN","DEFAULT","MOVE_CLOSER","MOVE_FARTHER","LOOK_UP","LOOK_RIGHT","LOOK_DOWN","LOOK_LEFT","TILT_LEFT","TILT_RIGHT","GLASSES","STAY_STILL","VTO_RECORD","STEP_1","STEP_2","STEP_3","STEP_4","STEP_5","SERVER_PROCESSING","LOADING","IMAGE_UPLOAD","IMAGE_PROCESSING","DONE","CAPTURE_ERROR","UPLOAD","CLICK_OR_DROP","DROP_HERE","TAP_TO_UPLOAD","ACCEPT","DECLINE","FrameAdvisorError","constructor","type","message","error","stack","Object","setPrototypeOf","prototype","Error","InitializationError","input","JSON","stringify","NotInitializedError","LocalizationError","MountError","divId","InitializationParamsError","params","RecordingError","localizedFaTranslations","fetchFrameAdvisorJson","localizationFileURL","fetch","then","response","ok","json","LocalizationHelper","getString","page","key","e","warn","setLocalizationText","backupLanguage","Promise","resolve","reject","split","translationFound","backupLocale","defaultLocale","translation","catch","backupLanguageTranslation","defaultLanguageTranslation","fetchFrameAdvisorLocalization","currentContainer","mediaRecorder","FrameAdvisorErrorOverlay","enabled","onClick","onClickOk","FrameAdvisorContainer","content","lazyFrameAdvisorPromise","default","FrameAdvisorVideo","LazyFrameAdvisorVideo","lazy","useState","BipaManager","agreementStatus","setAgreementStatus","BipaOverlay","tokenVersion","environment","source","region","callbacks","onDisplayPage","onSubmit","onUserReject","onError","privacy","termsAndConditions","localizationText","_CONFIG$privacy","Suspense","fallback","background","options","currentFileType","videoId","uploadPath","chunks","defaultMimeType","iosMimeType","ffMimeType","RecordingHelper","initialize","mediaStream","onComplete","mimeType","reset","MediaRecorder","isTypeSupported","onstart","ondataavailable","blobEvent","data","push","startRecording","state","start","stopRecording","stop","getFileType","RequestHelper","login","loginRequest","startSession","sessionRequest","result","uploadImage","img","uploadImageRequest","uploadImageData","imgData","uploadImageDataRequest","processImage","enableMachineLearning","enableVto","shouldCancel","processImageRequest","uploadVideo","video","uploadVideoRequest","fileType","processVideo","processVideoRequest","UploadStatus","UploadImage","currentImage","Image","imageInputHandler","imageInput","current","_this$imageInput$curr","files","_this$imageInput$curr2","generateImagePreview","_this$imageInput$curr3","_this$imageInput$curr4","currentTarget","value","dropHandler","file","stopPropagation","preventDefault","setState","dragOver","dataTransfer","items","kind","getAsFile","length","currentFile","reader","FileReader","readAsDataURL","onload","src","target","toString","uploadStatus","ACCEPT_THIRD_PARTY","imageAccepted","sendUploadImageRequest","INITIAL","windowDropHandler","mouseEnterHandler","dragOverHandler","dragEnterHandler","dragLeaveHandler","onAcceptFile","onDeclineFile","UPLOADING","mounted","PROCESSING","resetComponent","properties","createRef","componentDidMount","this","body","addEventListener","componentWillUnmount","removeEventListener","render","displayText","deviceType","showLoading","showImgPreview","id","onDrop","htmlFor","accept","ref","onChange","Component","UploadImageContainer","VtoCaptureErrorOverlay","VtoCaptureContainer","lazyVtoCapturePromise","VtoCaptureVideo","LazyVtoCaptureVideo","DefaultTrackingOptions","inspect","recoveryLimit","areaSize","areaOffset","depthRange","axisRange","fittedPointsRatio","fov","minimumFaceSizeRatio","edgeDetectionPercentage","nudgingType","standstill","timeLimit","Number","MAX_SAFE_INTEGER","positionVariance","axisVariance","onPoseTrack","DefaultCaptureOptions","enableCountdown","countdownDuration","countdownDelay","tracking","DefaultInitializeOptions","DefaultTrackingOptionsPortrait","DefaultTrackingOptionsLandscape","DefaultUploadOptions","DefaultCaptureDuration","DefaultVtoCaptureOptions","setDefaultUploadImageOptions","inputParams","SupportedFeaturesHelper","devicedetection","DeviceDetection","isVideoInputDeviceAvailable","available","wasmSupport","isWebAssemblySupported","webcamAccess","isUserMediaSupported","webcamAvailable","remoteLog","RemoteLog","initialized","sendAppViewSession","statusCode","statusText","FrameAdvisorCapture","initParams","window","validatedParams","setDefaultInitializeOptions","validatedPrivacyOptions","URL","env","setConfig","call","auth","all","features","isSupported","supportedFeatures","responseData","PoseTracker","WasmEnvironment","resetBipaState","cookie","capture","captureParams","validatedOptions","device","_inputParams$tracking","setDefaultCaptureOptions","container","getElementById","onMount","classList","add","ReactDOM","loadFrameAdvisor","close","vtoCapture","vtoCaptureParams","_inputParams$tracking2","setDefaultVtoCaptureOptions","loadVtoCapture","closeVtoCapture","uploadParams","loadUploadImage","imageData","closeUploadImage","BipaError","_this","MissingTranslationError","_this2","BipaServiceError","_this4","BipaSubmissionError","fieldErrors","_this5","currentLocalizationText","PrivacyLocalizationKey","DefaultPrivacyLocalization","PRIVACY_AGREEMENT_TITLE","PRIVACY_FIRST_AGREEMENT","PRIVACY_IMPLICIT_AGREEMENT","PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS","PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION","PRIVACY_IMPLICIT_PRIVACY_POLICY","PRIVACY_BUTTON_SUBMIT","PRIVACY_BUTTON_CANCEL","BIPA_FORM_TITLE","BIPA_CITIZEN_DECLARATION","BIPA_FORM_SUBTITLE","BIPA_FORM_NAME","BIPA_FORM_SURNAME","BIPA_FORM_EMAIL","BIPA_IMPLICIT_AGREEMENT","BIPA_IMPLICIT_TERMS_AND_CONDITIONS","BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION","BIPA_IMPLICIT_PRIVACY_POLICY","BIPA_FORM_IMPLICIT_AGREEMENT","BIPA_FORM_BUTTON_SUBMIT","BIPA_FORM_BUTTON_CANCEL","BIPA_SERVER_ERROR","NOT_BLANK","SIZE","EMAIL_REGEX","createFieldError","field","objectName","ParameterHelper","bipaForm","firstName","trim","lastName","email","match","ErrorIcon","viewBox","fill","cx","cy","r","stroke","strokeWidth","d","x","y","rx","BipaBiometricForm","formPrefill","_props$formPrefill","setFirstName","firstNameError","setFirstNameError","_props$formPrefill2","setLastName","lastNameError","setLastNameError","_props$formPrefill3","setEmail","emailError","setEmailError","serverError","setServerError","topInputRef","useRef","useEffect","handleInputChange","element","dispatch","confirmButtonDisabled","showFieldWarning","BIPA_FORM_ERROR","autoComplete","placeholder","BIPA_FORM_ERROR_MAIL","BIPA_FORM_MANDATORY_FIELD","onCancel","formData","map","includes","scrollIntoView","submitBipaFormRequest","bipaVersion","onBipaSubmit","status","errorFields","console","info","disabled","YesNoCheckBox","checked","BIPA_NO","event","BIPA_YES","PrivacyAgreement","showGradient","setShowGradient","getElementsByClassName","clientHeight","onScroll","scrollTop","dangerouslySetInnerHTML","__html","BIPA_CITIZEN_QUESTION","isIllinoisUser","onSetIllinoisUser","PRIVACY_AGREEMENT_TEXT","BIPA_FORM_BIPA_AGREEMENT","rel","href","privacyOptions","onTermsAndConditionsClick","CookieHelper","setBiometricCookie","agreementType","biometricCookieExists","getBiometricCookieName","localizationBaseUrl","fetchBipaJson","localizationFileUrl","bipaJsonEnv","isFirstRender","illinoisUser","setIlliniosUser","currentPage","setCurrentPage","setBipaVersion","onClickSubmit","onClickBipaSubmit","onClickCancel","loginReturn","bipaAgreementRequest","bipaAgreementText","_response$","text","bipaAgreementVersion","_response$2","renderPage","getCookieName","getBipaVersion","config","saveBipaEntry","_responseData$body","title","_responseData$body2","UserAgentParser","userAgentData","UAParser","getResult","instance","WasmDetection","simplewasm","Uint8Array","of","supported","WebAssembly","instantiate","module","Module","Instance","WebGlDetection","canvas","createElement","setAttribute","tmpCanvasElementId","getWebglContext","elementToRemove","outerHTML","webglContext","webglRenderingContext","contextName","getContext","webglCtxAttributes","depth","premultipliedAlpha","WebRtcDetection","isMediaDeviceAvailable","isNativeBridgePresent","videoInputDeviceAvailability","navigator","mediaDevices","enumerateDevices","devices","some","getUserMedia","webkit","messageHandlers","startNativeCam","uaData","getInstance","getUserAgentData","isIOS13","os","startsWith","isiPadOS","osName","iPadOS","orientation","isWebView","engine","browser","isWebViewBrowser","isWebGlSupported","EventBus","emitter","evtName","evtData","emit","evtHandler","on","mitt","GuidanceCommand","NudgingType","StandstillStatus","TrackResult","Timer","_classCallCheck","startTime","Date","now","currentDuration","GuidanceEngine","renderDelay","shouldReset","pendingFrameCounter","pendingFrameLimit","standstillTimer","guidanceStatus","NONE","standstillStatus","ON","updateTrackingOptions","standstillOptions","PI","pose","oldGuidanceStatus","oldStandstillStatus","OFF","updateDisabledGuidance","updateGuidance","updateDisabledStandstill","updateStandstill","oldTrackResult","wasm","guidance","guidanceCommand","OK","TrackerStopped","LostWillTryRecovery","NoFaceFound","FaceTooSmallDetected","LostWillReset","FaceDetectedWaitForMoreSamples","AnglesOutOfRange","MOVE_CENTER","FaceFittingTooNarrow","updateDirection","PENDING","resetPoseTracker","MOVE_LEFT","MOVE_RIGHT","MOVE_DOWN","MOVE_UP","abs","poseAngles","max","maxAbs","indexOf","StringHelper","trailingDigits","radToDegK","toFixed","PoseHelper","_createClass","focalLength","processingWidth","processingHeight","poseSanity","checkPoseEdge","poseArray","trackingOptions","topEdgeBound","rightEdgeBound","bottomEdgeBound","leftEdgeBound","xProjection","yProjection","eulerAngles","axisAngleToEuler","position","z","rotation","p","radToDeg","axisRad","axisRangeRad","pitch","end","yaw","roll","axisAngle","axis","vec3","angle","q","Float32Array","sine","sin","sqrt","cos","atan2","asin","mappedMemoryBuffer","NudgingEventProducer","stateCode","stateMess","code","Version","processingW","processingH","processingVerticalFoVDeg","wasmCapabilities","onWasmLoaded","onFail","poseTrackerStatus","formatPose","getVerticalFocalLength","tan","FOV_PORTRAIT","getModuleInfo","guidanceEngine","nudgingEventProducer","setFocalLength","headTrackerPromise","initializerPromise","_ref","HeadTrackerInitializer","wasmModule","verticalFocalLength","init","ht","headTracker","headTrackerIsReady","reason","initialiseSharedMemory","enable","setDebug","setGlassesDetection","setLightingDetection","head3DPoints","set3DHeadModel","setCameraParameters","deg2rad","area","_this3","setImageSize","setFaceDetectionArea","howManyTimeTheFaceHasToBeDetected","overlap","setMinimumFaceDetectionCount","limit","setFastRecoveryLimit","mappedArray","set","retCode","getHeadTrackerStatus","sendPoseTrackerEvent","checkPoseSanity","addPose","wasmStatus","wearsGlasses","track","poseTrackerStatusCode","poseTrackerStatusMess","newNudgingState","maxWidth","maxHeight","imageBufferSize","_free","_malloc","Uint8ClampedArray","HEAPU8","buffer","_ref2","loadWasm","getRandomValues","rnds8","rng","crypto","bind","msCrypto","uuid","REGEX","byteToHex","i","substr","arr","offset","arguments","toLowerCase","validate","TypeError","buf","rnds","random","isiPasOS","LogMessage","level","logName","date","toISOString","DBRemoteLogFactory","db","localforage","LogsConfigurationRetriever","configurationUrl","currentHostname","location","hostname","headers","method","res","defaultConfiguration","appviewSessionIsActive","browserSessionIsActive","clientLogIsActive","serverLogIsActive","trackingStatusIsActive","LogsConfig","configuration","getConfiguration","appViewSessionActive","cfg","browserSessionActive","trackingStatusActive","clientLogActive","serverLogActive","RemoteLogService","isServerLogActive","isActive","queueMessage","logMessage","dbInstance","getDB","setItem","getDate","getLevel","getLogName","getMessage","RemoteLogAppender","logService","logEvent","getLogLevel","log","LogLevel","newLogMessage","logLevel","LogAppender","Appender","VM_BROWSERSESSION_UUID","VM_LOGLEVEL_OVERRIDE","defaultLevel","defaultLayout","storage","localStorage","configured","browserUUID","createSessionId","configureLevel","VMAvailableLogLevels","VMLogLevelsOverrideKey","moduleName","moduleVersion","loggerName","getLogger","join","logOverride","getItem","logLevelOverride","configureLog4js2","isClientLogActive","logAppenders","configure","appenders","layout","virtualConsole","appender","logAppenderName","currentUuid","newUuid","DBAppViewSessionFactory","VmAnalyticsApiConfig","hostTest","hostProd","appViewSessionApi","browserSessionApi","trackingStatusApi","remoteLogApi","getHostname","host","isDevEnvironment","isDev","sendXhrRequest","url","responseType","responseHeaders","onProgress","xhr","XMLHttpRequest","header","open","setRequestHeader","responseHeaderValues","forEach","responseHeaderValue","getResponseHeader","onerror","upload","onprogress","send","AppViewSessionAdapter","sessionId","jsonBody","browserSessionUuid","requestUrl","appViewSessionApiEndpoint","consumeDbRows","dbase","iterate","removeItem","AppViewSessionConsumer","time1","performance","time2","AppViewSessionConsumerJob","started","intervalFunction","setInterval","consume","clearInterval","DBBrowserSessionFactory","VM_BROWSERSESSION_FLAG","storageIdentifier","VM_BROWSERSESSION_ETAG","BrowserSessionAdapter","deviceDetection","persistedSessionFlag","persistedSessionUuid","cpuArchitecture","cpu","architecture","model","resolution","dpi","deviceResolution","h","w","vendor","webapi","ambientLight","connection","serviceWorker","share","visibility","webcam","deviceWebcam","resolutionW","webgl","deviceWebgl","parseFloat","userAgent","browserEngineName","browserEngineVersion","browserName","browserVersion","webView","browserSessionApiEndpoint","etagsessionId","etag","slice","BrowserSessionConsumer","BrowserSessionConsumerJob","RemoteLogAdapter","remoteLogApiEndpoint","RemoteLogConsumer","RemoteLogConsumerJob","DBTrackingStatusFactory","TrackingStatusAdapter","fps","trackingCode","trackingText","trackingStatusApiEndpoint","TrackingStatusConsumer","TrackingStatusConsumerJob","JobsStarter","createJobs","AppViewSessionService","timestamp","isAppViewSessionActive","BrowserSessionService","isBrowserSessionActive","TrackingStatusService","isTrackingStatusActive","browserSessionService","appViewSessionService","trackingStatusService","browserSession","appViewSession","item","trackingStatus","envHost","envMap","STAGING","loginFaUrl","loginVmUrl","refreshUrl","bipaTextUrl","bipaSubmitFormUrl","videoSessionUrl","enrichUrl","vtoUrl","additionalInfoUrl","poseExtractionUrl","statusUrl","pdStatusUrl","profileUrl","ACCEPTANCE","PRODUCTION","getConfig","param","MicroserviceError","EnvironmentError","InvalidInputError","LocaleError","RequestError","TimeoutError","duration","delay","ms","setTimeout","pollPromise","interval","timeout","promise","completed","pollProcessingStatus","request","entryTypes","Authorization","pollingEntry","filter","entry","complete","every","progress","success","err","parseJsonResponse","refreshRequest","refreshReturn","bipaAgreementFetch","bipaAgreementUrl","bipaDescription","bipaAgreementResponse","refreshResponse","description","bipaUrls","parse","jsonUrl","BIPA_AGREEMENT","submitBipaFormFetch","bipaSubmitUrl","submitBipaResponse","profileFetch","profileRequest","profileResponse","mlInformations","uploadImageFetch","form","FormData","append","File","processImageFetch","mlUrl","uploadImageResponse","ctx","putImageData","toBlob","blob","imgBlob","processImageResponse","promises","entries","results","loginType","rememberMe","sessionFetch","sessionResponse","uploadBasePath","uploadVideoFetch","processVideoFetch","uploadVideoResponse","processVideoResponse","Environment","LOCAL","PROD","TEST","NativeModule","_scriptDir","currentScript","moduleOverrides","hasOwnProperty","read_","thisProgram","scriptDirectory","lastIndexOf","responseText","out","dynamicAlloc","ret","HEAP32","DYNAMICTOP_PTR","_emscripten_get_heap_size","abort","getNativeTypeSize","bits","parseInt","assert","wasmBinary","wasmMemory","asm2wasmImports","Array","setValue","ptr","noSafe","charAt","HEAP8","HEAP16","tempI64","tempDouble","Math_abs","Math_min","Math_floor","Math_ceil","HEAPF32","HEAPF64","wasmTable","Table","ABORT","condition","allocate","slab","types","allocator","zeroinit","singleType","stackAlloc","subarray","typeSize","previousType","curr","getMemory","runtimeInitialized","UTF8Decoder","TextDecoder","UTF8ArrayToString","u8Array","idx","maxBytesToRead","endIdx","endPtr","decode","str","u0","u1","u2","String","fromCharCode","ch","UTF8ToString","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","writeAsciiToMemory","dontAddNull","HEAPU16","HEAPU32","INITIAL_TOTAL_MEMORY","callRuntimeCallbacks","callback","shift","func","arg","Memory","byteLength","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","ceil","floor","runDependencies","dependenciesFulfilled","addRunDependency","removeRunDependency","what","dataURIPrefix","isDataURI","filename","path","wasmBinaryFile","getBinary","stackTrace","js","jsStackTrace","replace","asmLibraryArg","NaN","Infinity","receiveInstance","exports","receiveInstantiatedSource","output","instantiateArrayBuffer","receiver","credentials","binary","instantiateStreaming","instantiateAsync","globalCtors","ENV","___setErrNo","PATH","splitPath","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","unshift","normalize","isAbsolute","trailingSlash","dirname","root","dir","basename","lastSlash","extname","paths","join2","l","PATH_FS","resolvedPath","resolvedAbsolute","FS","cwd","relative","from","to","fromParts","toParts","samePartsLength","outputParts","concat","TTY","ttys","shutdown","register","dev","ops","registerDevice","stream_ops","stream","tty","node","rdev","ErrnoError","seekable","flush","read","pos","get_char","bytesRead","write","put_char","default_tty_ops","prompt","readline","intArrayFromString","val","default_tty1_ops","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsRegularArray","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","ArrayBuffer","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","newname","oldpath","canOwn","whence","prot","flags","allocated","fromHeap","byteOffset","mmapFlags","IDBFS","dbs","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_VERSION","DB_STORE_NAME","apply","syncfs","populate","getLocalSet","local","getRemoteSet","remote","dst","reconcile","req","onupgradeneeded","fileStore","transaction","objectStoreNames","contains","objectStore","createObjectStore","indexNames","createIndex","unique","onsuccess","isRealDir","toAbsolute","check","mountpoint","stat","pop","index","openKeyCursor","cursor","primaryKey","continue","loadLocalEntry","lookupPath","storeLocalEntry","mkdir","writeFile","chmod","utime","removeLocalEntry","loadRemoteEntry","store","get","storeRemoteEntry","put","removeRemoteEntry","delete","total","create","keys","e2","remove","errored","done","oncomplete","sort","reverse","WORKERFS","DIR_MODE","FILE_MODE","FileReaderSync","createdParents","ensureParent","base","opts","lastModifiedDate","obj","pack","getTime","oldNode","newDir","newName","oldPath","chunk","ab","readAsArrayBuffer","mounts","streams","nextInode","nameTable","currentPath","ignorePermissions","trackingDelegate","openFlags","READ","WRITE","filesystems","syncFSRequests","handleFSError","errno","defaults","follow_mount","recurse_count","current_path","islast","isMountpoint","follow","count","getPath","isRoot","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","mayLookup","nodeName","FSNode","readMode","writeMode","defineProperties","isFolder","isDevice","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","fd","getStream","createStream","FSStream","object","isRead","isWrite","isAppend","newStream","closeStream","getDevice","major","minor","makedev","ma","mi","getMounts","m","doCallback","pseudo","mountRoot","unmount","next","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","dontFollow","lstat","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","created","ungotten","readFiles","trackingFlags","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","encoding","actualNumBytes","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","randomBuffer","createDevice","createSpecialDirectories","createStandardStreams","ensureErrnoError","setErrno","staticInit","quit","fflush","getMode","canRead","canWrite","joinPath","forceRelative","absolutePath","standardizePath","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createFolder","createPath","part","createFile","createDataFile","createLink","forceLoadFile","createLazyFile","LazyUint8Array","lengthKnown","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","datalength","hasByteServing","usesGzip","lazyArray","overrideMimeType","doXHR","_length","_chunkSize","fn","createPreloadedFile","dontCreateFile","preFinish","Browser","fullname","processData","byteArray","finish","handled","plugin","asyncLoad","DB_NAME","pathname","saveFilesToDB","openRequest","fail","putRequest","loadFilesFromDB","getRequest","SYSCALLS","DEFAULT_POLLMASK","mappings","umask","calculateAt","dirfd","dirstream","doStat","doMsync","addr","doMkdir","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","doWritev","varargs","getStr","getStreamFromFD","get64","low","getZero","PROCINFO","_fd_write","pnum","num","tupleRegistrations","runDestructors","destructors","del","simpleReadValueFromPointer","pointer","awaitingDependencies","registeredTypes","typeDependencies","makeLegalFunctionName","f","createNamedFunction","Function","extendError","baseErrorType","errorName","errorClass","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","structRegistrations","getShiftFromSize","embind_charCodes","readLatin1String","c","BindingError","throwBindingError","rawType","registeredInstance","ignoreDuplicateRegistrations","cb","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","throwInstanceAlreadyDeleted","finalizationGroup","detachFinalizer","handle","releaseClassHandle","smartPtr","smartPtrType","rawDestructor","runDestructor","attachFinalizer","FinalizationGroup","iter","unregister","ClassHandle_clone","preservePointerOnDelete","o","clone","getPrototypeOf","deleteScheduled","ClassHandle_delete","ClassHandle_isDeleted","delayFunction","deletionQueue","flushPendingDeletes","ClassHandle_deleteLater","registeredPointers","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","instancePrototype","getActualType","downcast","pureVirtualFunctions","upcastPointer","ptrClass","desiredClass","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","isSmartPointer","rawConstructor","isConst","sharingPolicy","clonedHandle","rawShare","__emval_register","nonConstNoSmartPtrRawPointerToWireType","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","downcastPointer","rv","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","setDelayFunction","getInheritedInstance","class_","getBasestPointer","makeClassHandle","record","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","pointeeType","toType","actualType","registeredPointerRecord","constPointerType","pointerType","dp","RegisteredPointer","destructorFunction","replacePublicSymbol","embind__requireFunction","signature","rawFunction","fp","FUNCTION_TABLE","dc","dynCall","args","makeDynCaller","UnboundTypeError","getTypeName","___getTypeName","throwUnboundTypeError","unboundTypes","seen","visit","heap32VectorToArray","firstElement","array","craftInvokerFunction","argTypes","classType","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","argumentList","dummy","new_","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","enumReadValueFromPointer","signed","heap","requireRegisteredType","impl","v","t","floatReadValueFromPointer","integerReadValueFromPointer","requireHandle","emval_symbols","_emscripten_get_now","___tm_timezone","_llvm_stacksave","self","LLVM_SAVEDSTACKS","stackSave","_tzset","called","__get_timezone","getTimezoneOffset","currentYear","getFullYear","winter","summer","__get_daylight","winterName","extractZone","summerName","winterNamePtr","summerNamePtr","__get_tzname","toTimeString","__isLeapYear","year","__arraySum","sum","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","__addDays","days","newDate","leap","currentMonth","getMonth","daysInCurrentMonth","setDate","setMonth","setFullYear","_strftime","s","maxsize","format","tm","tm_zone","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","pattern","EXPANSION_RULES_1","rule","RegExp","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","compare","getFirstWeekStartDate","janFourth","getDay","getWeekBasedYear","thisDate","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","substring","twelveHour","janFirst","firstSunday","endDate","februaryFirstUntilEndMonth","daysDifference","firstMonday","off","ahead","bytes","writeArrayToMemory","stringy","u8array","numBytesWritten","codes","embind_init_charCodes","dateNow","___buildEnvironment","environ","poolPtr","envPtr","languages","MAX_ENV_VALUES","strings","totalSize","line","__ZSt18uncaught_exceptionv","uncaught_exceptions","which","offset_high","offset_low","DOUBLE_LIMIT","op","argp","malloc","__emscripten_syscall_munmap","rawTupleType","reg","elements","elementsLength","elementTypes","elt","getterReturnType","setterArgumentType","getterContext","setter","setterContext","structType","fieldRecords","fields","fieldTypes","fieldName","trueValue","falseValue","wt","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","rawInvoker","context","isPureVirtual","unboundTypesHandler","memberFunction","isSigned","ctor","values","rawEnumType","enumValue","enumType","Enum","Value","invokerArgsArray","primitiveType","minRange","maxRange","fromWireType","bitshift","isUnsignedType","dataTypeIndex","TA","decodeMemoryView","stdStringIsUTF8","endCharSwap","decodeStartPtr","currentBytePtr","stringSegment","a","valueIsOfTypeString","charCode","charSize","getHeap","HEAP","constructorSignature","getterSignature","setterSignature","isVoid","returnType","destructorsRef","rd","address","symbol","getStringOrSymbol","argv","clk_id","tp","dest","requestedSize","_getenv","allocateUTF8","time","tmPtr","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","stackRestore","getSeconds","getMinutes","getHours","summerOffset","winterOffset","zonePtr","asm","calledRun","run","doRun","postRun","preRun","old","runCaller","getWasmUrl","wasmUrl","locateFile","endsWith"],"sourceRoot":""}