diff --git a/.eslintrc b/.eslintrc index c08354567fc..519066c9cad 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,7 +6,7 @@ "plugin:react-hooks/recommended", "plugin:react/jsx-runtime" ], - "plugins": ["@18f/eslint-plugin-identity"], + "plugins": ["@18f/eslint-plugin-identity", "testing-library"], "env": { "browser": true, "commonjs": true @@ -20,10 +20,6 @@ { "selector": "AssignmentExpression[left.property.name='href'][right.type=/(Template)?Literal/]", "message": "Do not assign window.location.href to a string or string template to avoid losing i18n parameters" - }, - { - "selector": "ExpressionStatement[expression.callee.object.name='userEvent']", - "message": "Await the promised result of a userEvent interaction" } ] }, @@ -44,11 +40,17 @@ "devDependencies": true, "packageDir": "." } - ] + ], + "testing-library/await-async-events": "error", + "testing-library/await-async-queries": "error", + "testing-library/await-async-utils": "error", + "testing-library/no-await-sync-events": "error", + "testing-library/no-await-sync-queries": "error", + "testing-library/no-debugging-utils": "error" } }, { - // Turn off react linting rules for most packages/files + // Turn off react linting rules for most packages/files "files": [ "spec/**", "app/javascript/packs/**", @@ -63,8 +65,8 @@ "app/javascript/packages/validated-field/**", "app/javascript/packages/verify-flow/**", // In progress: enabling these rules for all files in packages/document-capture - "app/javascript/packages/document-capture/context/**", - "app/javascript/packages/document-capture/higher-order/**", + "app/javascript/packages/document-capture/context/**", + "app/javascript/packages/document-capture/higher-order/**", "app/javascript/packages/document-capture/hooks/**", // Comment out a file to enable react lint rules for that file only "app/javascript/packages/document-capture/components/acuant-camera.tsx", @@ -113,6 +115,6 @@ "react-hooks/exhaustive-deps": "off", "react-hooks/rules-of-hooks": "off" } - }, + } ] -} \ No newline at end of file +} diff --git a/Gemfile.lock b/Gemfile.lock index 7fca116d58a..66fcf365f19 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -208,7 +208,7 @@ GEM erubi (~> 1.4) parser (>= 2.4) smart_properties - bigdecimal (3.1.4) + bigdecimal (3.1.5) bindata (2.4.15) bootsnap (1.17.0) msgpack (~> 1.2) @@ -427,7 +427,7 @@ GEM net-ssh (6.1.0) newrelic_rpm (9.6.0) base64 - nio4r (2.6.1) + nio4r (2.7.0) nokogiri (1.14.5) mini_portile2 (~> 2.8.0) racc (~> 1.4) @@ -472,7 +472,7 @@ GEM psych (5.1.1.1) stringio public_suffix (5.0.3) - puma (6.4.0) + puma (6.4.2) nio4r (~> 2.0) raabro (1.4.0) racc (1.7.3) @@ -561,7 +561,7 @@ GEM activerecord (>= 5.0) rgeo (>= 1.0.0) rotp (6.2.0) - rouge (4.1.3) + rouge (4.2.0) rqrcode (2.1.0) chunky_png (~> 1.0) rqrcode_core (~> 1.0) @@ -684,7 +684,7 @@ GEM activemodel mail (>= 2.6.1) simpleidn - view_component (3.8.0) + view_component (3.9.0) activesupport (>= 5.2.0, < 8.0) concurrent-ruby (~> 1.0) method_source (~> 1.0) diff --git a/app/assets/stylesheets/_uswds-core.scss b/app/assets/stylesheets/_uswds-core.scss index 94b1aeb15da..2da34521ec5 100644 --- a/app/assets/stylesheets/_uswds-core.scss +++ b/app/assets/stylesheets/_uswds-core.scss @@ -16,7 +16,6 @@ 'border-color', 'border-style', 'border-width', - 'clearfix', 'color', 'display', 'flex', @@ -30,7 +29,6 @@ 'margin', 'margin-horizontal', 'margin-vertical', - 'maxw', 'padding', 'position', 'text-align', diff --git a/app/controllers/concerns/idv/document_capture_concern.rb b/app/controllers/concerns/idv/document_capture_concern.rb index f114c76f2fd..558226afbbc 100644 --- a/app/controllers/concerns/idv/document_capture_concern.rb +++ b/app/controllers/concerns/idv/document_capture_concern.rb @@ -43,6 +43,7 @@ def extract_pii_from_doc(user, response, store_in_session: false) if store_in_session idv_session.pii_from_doc ||= {} idv_session.pii_from_doc.merge!(pii_from_doc) + idv_session.selfie_check_performed = response.selfie_check_performed end end diff --git a/app/controllers/openid_connect/authorization_controller.rb b/app/controllers/openid_connect/authorization_controller.rb index e35fe9164a9..60f8bea2162 100644 --- a/app/controllers/openid_connect/authorization_controller.rb +++ b/app/controllers/openid_connect/authorization_controller.rb @@ -10,6 +10,7 @@ class AuthorizationController < ApplicationController include BillableEventTrackable include ForcedReauthenticationConcern + before_action :block_biometric_requests_in_production, only: [:index] before_action :build_authorize_form_from_params, only: [:index] before_action :pre_validate_authorize_form, only: [:index] before_action :sign_out_if_prompt_param_is_login_and_user_is_signed_in, only: [:index] @@ -28,6 +29,7 @@ def index return redirect_to reactivate_account_url if user_needs_to_reactivate_account? return redirect_to url_for_pending_profile_reason if user_has_pending_profile? return redirect_to idv_url if identity_needs_verification? + return redirect_to idv_url if selfie_needed? end return redirect_to sign_up_completed_url if needs_completion_screen_reason link_identity_to_service_provider @@ -44,6 +46,13 @@ def index private + def block_biometric_requests_in_production + if params['biometric_comparison_required'] == 'true' && + FeatureManagement.idv_block_biometrics_requests? + render_not_acceptable + end + end + def check_sp_active return if @authorize_form.service_provider&.active? redirect_to sp_inactive_error_url @@ -99,6 +108,11 @@ def identity_needs_verification? current_user.reproof_for_irs?(service_provider: current_sp) end + def selfie_needed? + decorated_sp_session.selfie_required? && + !current_user.identity_verified_with_selfie? + end + def build_authorize_form_from_params @authorize_form = OpenidConnectAuthorizeForm.new(authorization_params) end diff --git a/app/controllers/openid_connect/logout_controller.rb b/app/controllers/openid_connect/logout_controller.rb index fd549921441..a488159319d 100644 --- a/app/controllers/openid_connect/logout_controller.rb +++ b/app/controllers/openid_connect/logout_controller.rb @@ -5,6 +5,7 @@ class LogoutController < ApplicationController include SecureHeadersConcern include FullyAuthenticatable + before_action :set_devise_failure_redirect_for_concurrent_session_logout, only: [:index] before_action :confirm_two_factor_authenticated, only: [:delete] def index @@ -39,6 +40,10 @@ def delete private + def set_devise_failure_redirect_for_concurrent_session_logout + request.env['devise_session_limited_failure_redirect_url'] = request.url + end + def redirect_user(redirect_uri, user_uuid) redirect_method = IdentityConfig.store.openid_connect_redirect_uuid_override_map.fetch( user_uuid, diff --git a/app/controllers/saml_idp_controller.rb b/app/controllers/saml_idp_controller.rb index a9dc846e012..2387631005b 100644 --- a/app/controllers/saml_idp_controller.rb +++ b/app/controllers/saml_idp_controller.rb @@ -17,6 +17,7 @@ class SamlIdpController < ApplicationController skip_before_action :verify_authenticity_token before_action :require_path_year + before_action :set_devise_failure_redirect_for_concurrent_session_logout, only: :logout before_action :handle_banned_user before_action :bump_auth_count, only: :auth before_action :redirect_to_sign_in, only: :auth, unless: :user_signed_in? @@ -105,6 +106,10 @@ def prompt_for_password_if_ial2_request_and_pii_locked redirect_to capture_password_url end + def set_devise_failure_redirect_for_concurrent_session_logout + request.env['devise_session_limited_failure_redirect_url'] = request.url + end + def pii_requested_but_locked? if (sp_session && sp_session_ial > 1) || ial_context.ialmax_requested? current_user.identity_verified? && diff --git a/app/controllers/sign_up/completions_controller.rb b/app/controllers/sign_up/completions_controller.rb index 33af693179a..5df57436ae4 100644 --- a/app/controllers/sign_up/completions_controller.rb +++ b/app/controllers/sign_up/completions_controller.rb @@ -3,7 +3,8 @@ class CompletionsController < ApplicationController include SecureHeadersConcern before_action :confirm_two_factor_authenticated - before_action :verify_confirmed, if: :ial2? + before_action :confirm_identity_verified, if: :ial2? + before_action :confirm_selfie_captured, if: :selfie_required? before_action :apply_secure_headers_override, only: [:show, :update] before_action :verify_needs_completions_screen @@ -31,10 +32,14 @@ def update private - def verify_confirmed + def confirm_identity_verified redirect_to idv_url if current_user.identity_not_verified? end + def confirm_selfie_captured + redirect_to idv_url if !current_user.identity_verified_with_selfie? + end + def verify_needs_completions_screen return_to_account unless needs_completion_screen_reason end @@ -62,6 +67,10 @@ def ial2_requested? !!(ial2? || (ial_max? && current_user.identity_verified?)) end + def selfie_required? + decorated_sp_session.selfie_required? + end + def return_to_account track_completion_event('account-page') redirect_to account_url diff --git a/app/controllers/two_factor_authentication/backup_code_verification_controller.rb b/app/controllers/two_factor_authentication/backup_code_verification_controller.rb index 231ca2b780d..d7818e091e1 100644 --- a/app/controllers/two_factor_authentication/backup_code_verification_controller.rb +++ b/app/controllers/two_factor_authentication/backup_code_verification_controller.rb @@ -19,7 +19,9 @@ def show def create @backup_code_form = BackupCodeVerificationForm.new(current_user) result = @backup_code_form.submit(backup_code_params) - analytics.track_mfa_submit_event(result.to_h) + analytics.track_mfa_submit_event( + result.to_h.merge(new_device: user_session[:new_device]), + ) irs_attempts_api_tracker.mfa_login_backup_code(success: result.success?) handle_result(result) end diff --git a/app/controllers/two_factor_authentication/otp_verification_controller.rb b/app/controllers/two_factor_authentication/otp_verification_controller.rb index 43cc0937b97..2f57b2d6286 100644 --- a/app/controllers/two_factor_authentication/otp_verification_controller.rb +++ b/app/controllers/two_factor_authentication/otp_verification_controller.rb @@ -126,7 +126,7 @@ def form_params end def post_analytics(result) - properties = result.to_h.merge(analytics_properties) + properties = result.to_h.merge(analytics_properties, new_device: user_session[:new_device]) analytics.multi_factor_auth_setup(**properties) if context == 'confirmation' analytics.track_mfa_submit_event(properties) diff --git a/app/controllers/two_factor_authentication/personal_key_verification_controller.rb b/app/controllers/two_factor_authentication/personal_key_verification_controller.rb index c30e83ecc86..1f46304ab10 100644 --- a/app/controllers/two_factor_authentication/personal_key_verification_controller.rb +++ b/app/controllers/two_factor_authentication/personal_key_verification_controller.rb @@ -26,6 +26,7 @@ def track_analytics(result) analytics_hash = result.to_h.merge( multi_factor_auth_method: 'personal-key', multi_factor_auth_method_created_at: mfa_created_at&.strftime('%s%L'), + new_device: user_session[:new_device], ) analytics.track_mfa_submit_event(analytics_hash) diff --git a/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb b/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb index 52555750d54..78dd80fb34d 100644 --- a/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb +++ b/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb @@ -102,6 +102,7 @@ def analytics_properties context: context, multi_factor_auth_method: 'piv_cac', piv_cac_configuration_id: piv_cac_verification_form&.piv_cac_configuration&.id, + new_device: user_session[:new_device], } end end diff --git a/app/controllers/two_factor_authentication/totp_verification_controller.rb b/app/controllers/two_factor_authentication/totp_verification_controller.rb index d55520cfdec..0860c2b8c32 100644 --- a/app/controllers/two_factor_authentication/totp_verification_controller.rb +++ b/app/controllers/two_factor_authentication/totp_verification_controller.rb @@ -18,8 +18,7 @@ def show def create result = TotpVerificationForm.new(current_user, params.require(:code).strip).submit - - analytics.track_mfa_submit_event(result.to_h) + analytics.track_mfa_submit_event(result.to_h.merge(new_device: user_session[:new_device])) irs_attempts_api_tracker.mfa_login_totp(success: result.success?) if result.success? diff --git a/app/controllers/two_factor_authentication/webauthn_verification_controller.rb b/app/controllers/two_factor_authentication/webauthn_verification_controller.rb index 39b1e0a42ec..df9c15076d9 100644 --- a/app/controllers/two_factor_authentication/webauthn_verification_controller.rb +++ b/app/controllers/two_factor_authentication/webauthn_verification_controller.rb @@ -19,6 +19,7 @@ def confirm **analytics_properties, multi_factor_auth_method_created_at: webauthn_configuration_or_latest.created_at.strftime('%s%L'), + new_device: user_session[:new_device], ) if analytics_properties[:multi_factor_auth_method] == 'webauthn_platform' diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index e807997d4e6..7b019aa33da 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -115,6 +115,7 @@ def process_locked_out_user def handle_valid_authentication sign_in(resource_name, resource) cache_profiles(auth_params[:password]) + user_session[:new_device] = current_user.new_device?(cookie_uuid: cookies[:device]) create_user_event(:sign_in_before_2fa) EmailAddress.update_last_sign_in_at_on_user_id_and_email( user_id: current_user.id, diff --git a/app/javascript/packages/address-search/components/address-search.spec.tsx b/app/javascript/packages/address-search/components/address-search.spec.tsx index 2ea8c677245..5b053153b69 100644 --- a/app/javascript/packages/address-search/components/address-search.spec.tsx +++ b/app/javascript/packages/address-search/components/address-search.spec.tsx @@ -9,7 +9,7 @@ describe('AddressSearch', () => { const locationsURL = 'https://localhost:3000/locations/endpoint'; context('Page Heading and PO Search About Message', () => { - it('both render when handleLocationSelect is not null', async () => { + it('both render when handleLocationSelect is not null', () => { const handleLocationsFound = sandbox.stub(); const onSelect = sinon.stub(); const { queryByText, queryByRole } = render( @@ -25,8 +25,8 @@ describe('AddressSearch', () => { , ); - const heading = await queryByText('in_person_proofing.headings.po_search.location'); - const aboutMessage = await queryByText( + const heading = queryByText('in_person_proofing.headings.po_search.location'); + const aboutMessage = queryByText( 'in_person_proofing.body.location.po_search.po_search_about', ); @@ -37,7 +37,7 @@ describe('AddressSearch', () => { ).to.exist(); }); - it('both do not render when handleLocationSelect is null', async () => { + it('both do not render when handleLocationSelect is null', () => { const handleLocationsFound = sandbox.stub(); const onSelect = sinon.stub(); const { queryByText } = render( @@ -53,8 +53,8 @@ describe('AddressSearch', () => { , ); - const heading = await queryByText('in_person_proofing.headings.po_search.location'); - const aboutMessage = await queryByText( + const heading = queryByText('in_person_proofing.headings.po_search.location'); + const aboutMessage = queryByText( 'in_person_proofing.body.location.po_search.po_search_about', ); expect(heading).to.be.empty; diff --git a/app/javascript/packages/address-search/components/full-address-search.spec.tsx b/app/javascript/packages/address-search/components/full-address-search.spec.tsx index 91c3cbcd2d4..94be94460d6 100644 --- a/app/javascript/packages/address-search/components/full-address-search.spec.tsx +++ b/app/javascript/packages/address-search/components/full-address-search.spec.tsx @@ -14,7 +14,7 @@ describe('FullAddressSearch', () => { const usStatesTerritories = [['Delware', 'DE']]; context('Page Heading and PO Search About Message', () => { - it('both render when handleLocationSelect is not null', async () => { + it('both render when handleLocationSelect is not null', () => { const handleLocationsFound = sandbox.stub(); const onSelect = sinon.stub(); const { queryByText, queryByRole } = render( @@ -30,8 +30,8 @@ describe('FullAddressSearch', () => { , ); - const heading = await queryByText('in_person_proofing.headings.po_search.location'); - const aboutMessage = await queryByText( + const heading = queryByText('in_person_proofing.headings.po_search.location'); + const aboutMessage = queryByText( 'in_person_proofing.body.location.po_search.po_search_about', ); @@ -42,7 +42,7 @@ describe('FullAddressSearch', () => { ).to.exist(); }); - it('both do not render when handleLocationSelect is null', async () => { + it('both do not render when handleLocationSelect is null', () => { const handleLocationsFound = sandbox.stub(); const { queryByText } = render( new Map() }}> @@ -57,8 +57,8 @@ describe('FullAddressSearch', () => { , ); - const heading = await queryByText('in_person_proofing.headings.po_search.location'); - const aboutMessage = await queryByText( + const heading = queryByText('in_person_proofing.headings.po_search.location'); + const aboutMessage = queryByText( 'in_person_proofing.body.location.po_search.po_search_about', ); expect(heading).to.be.empty; @@ -67,7 +67,7 @@ describe('FullAddressSearch', () => { }); context('Address Search Label Text', () => { - it('does not render when handleLocationSelect is not null', async () => { + it('does not render when handleLocationSelect is not null', () => { const handleLocationsFound = sandbox.stub(); const onSelect = sinon.stub(); const { queryByText } = render( @@ -83,13 +83,11 @@ describe('FullAddressSearch', () => { , ); - const searchLabel = await queryByText( - 'in_person_proofing.headings.po_search.address_search_label', - ); + const searchLabel = queryByText('in_person_proofing.headings.po_search.address_search_label'); expect(searchLabel).to.be.empty; }); - it('renders when handleLocationSelect is null', async () => { + it('renders when handleLocationSelect is null', () => { const handleLocationsFound = sandbox.stub(); const { queryByText } = render( new Map() }}> @@ -104,7 +102,7 @@ describe('FullAddressSearch', () => { , ); - const searchLabel = await queryByText( + const searchLabel = queryByText( 'in_person_proofing.body.location.po_search.address_search_label', ); expect(searchLabel).to.exist(); diff --git a/app/javascript/packages/assets/README.md b/app/javascript/packages/assets/README.md new file mode 100644 index 00000000000..1ceefbb9399 --- /dev/null +++ b/app/javascript/packages/assets/README.md @@ -0,0 +1,35 @@ +# `@18f/identity-assets` + +Utilities for resolving asset URLs from [Ruby on Rails' Asset Pipeline](https://guides.rubyonrails.org/asset_pipeline.html). + +## Usage + +Within your code, use `getAssetPath` and provide a raw asset path, where the expected return value is the URL resolved by the Ruby on Rails Asset pipeline: + +```ts +const spriteURL = getAssetPath('sprite.svg'); +``` + +The included Webpack plugin will scan for references to `getAssetPath` and add those as assets of the associated Webpack entrypoint. + +```ts +// webpack.config.js + +module.exports = { + // ... + plugins: [ + // ... + new RailsAssetsWebpackPlugin(), + ], +}; +``` + +The expectation is that this can be used in combination with a tool like [`WebpackManifestPlugin`](https://github.com/shellscape/webpack-manifest-plugin) to generate a JSON manifest of all assets expected to be loaded with a given Webpack entrypoint, so that the backend can ensure those asset paths are populated into a ` +``` diff --git a/app/javascript/packages/build-sass/CHANGELOG.md b/app/javascript/packages/build-sass/CHANGELOG.md index f011da1f5a7..c66c5e6ec55 100644 --- a/app/javascript/packages/build-sass/CHANGELOG.md +++ b/app/javascript/packages/build-sass/CHANGELOG.md @@ -4,6 +4,10 @@ - Requires Node.js v18 or newer +### Improvements + +- `--out-dir` is now optional. If omitted, files will be output in the same directory as their source files. + ## 2.0.0 ### Breaking Changes diff --git a/app/javascript/packages/build-sass/README.md b/app/javascript/packages/build-sass/README.md index 09c3858c0ba..d2d5409d1b3 100644 --- a/app/javascript/packages/build-sass/README.md +++ b/app/javascript/packages/build-sass/README.md @@ -6,7 +6,7 @@ Why use it? - ⚡️ **It's fast**, since it uses native Dart Sass binary through [`sass-embedded`](http://npmjs.com/package/sass-embedded), and the Rust-based [Lightning CSS](https://www.npmjs.com/package/lightningcss) for autoprefixing and minification. - 💻 **It includes a CLI**, so it's easy to integrate with command-based build pipelines like NPM scripts or Makefile. -- 🚀 **It has relevant defaults**, as as to require as little additional configuration as possible. +- 🚀 **It has relevant defaults**, to work out of the box with minimal or no additional configuration. Default behavior includes: @@ -23,7 +23,7 @@ Default behavior includes: Invoke the included `build-sass` executable with the source files and any relevant command flags. ``` -npx build-sass path/to/sass/*.scss --out-dir=build +npx build-sass path/to/sass/*.scss ``` Flags: diff --git a/app/javascript/packages/build-sass/cli.js b/app/javascript/packages/build-sass/cli.js index 34cc6ecb7b1..f755e384526 100755 --- a/app/javascript/packages/build-sass/cli.js +++ b/app/javascript/packages/build-sass/cli.js @@ -29,10 +29,6 @@ const { values: flags, positionals: fileArgs } = parseArgs({ const { watch: isWatching, 'out-dir': outDir, 'load-path': loadPaths = [] } = flags; loadPaths.push(...getDefaultLoadPaths()); -if (!outDir) { - throw new TypeError('Output directory must be provided using the `--out-dir` option.'); -} - /** @type {BuildOptions & SyncSassOptions} */ const options = { outDir, loadPaths, optimize: isProduction }; @@ -84,9 +80,13 @@ function build(files) { ); } -mkdir(outDir, { recursive: true }) - .then(() => build(fileArgs)) - .catch((error) => { - console.error(error); - process.exitCode = 1; - }); +if (outDir) { + await mkdir(outDir, { recursive: true }); +} + +try { + await build(fileArgs); +} catch (error) { + console.error(error); + process.exitCode = 1; +} diff --git a/app/javascript/packages/build-sass/cli.spec.js b/app/javascript/packages/build-sass/cli.spec.js index a4a47896483..e2fca1cee5c 100644 --- a/app/javascript/packages/build-sass/cli.spec.js +++ b/app/javascript/packages/build-sass/cli.spec.js @@ -18,4 +18,12 @@ describe('cli', () => { await stat(join(cwd, 'fixtures/missing-out-dir/in.css.scss')); }); }); + + context('with unconfigured output directory', () => { + it('outputs in the same directory as the input file', async () => { + await exec('./cli.js fixtures/default-out-dir/styles.css.scss', { cwd }); + + await stat(join(cwd, 'fixtures/default-out-dir/styles.css')); + }); + }); }); diff --git a/app/javascript/packages/build-sass/fixtures/default-out-dir/.gitignore b/app/javascript/packages/build-sass/fixtures/default-out-dir/.gitignore new file mode 100644 index 00000000000..abdfa7226b6 --- /dev/null +++ b/app/javascript/packages/build-sass/fixtures/default-out-dir/.gitignore @@ -0,0 +1 @@ +styles.css diff --git a/app/javascript/packages/build-sass/fixtures/default-out-dir/styles.css.scss b/app/javascript/packages/build-sass/fixtures/default-out-dir/styles.css.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/app/javascript/packages/build-sass/index.js b/app/javascript/packages/build-sass/index.js index 8e6741b5c24..38dca4cb5c1 100644 --- a/app/javascript/packages/build-sass/index.js +++ b/app/javascript/packages/build-sass/index.js @@ -1,4 +1,4 @@ -import { basename, join } from 'node:path'; +import { basename, join, dirname } from 'node:path'; import { createWriteStream } from 'node:fs'; import { Readable } from 'node:stream'; import { pipeline } from 'node:stream/promises'; @@ -29,7 +29,7 @@ const TARGETS = browserslistToTargets( * @return {Promise} */ export async function buildFile(file, options) { - const { outDir, optimize, loadPaths = [], ...sassOptions } = options; + const { outDir = dirname(file), optimize, loadPaths = [], ...sassOptions } = options; const sassResult = sassCompile(file, { style: optimize ? 'compressed' : 'expanded', ...sassOptions, @@ -46,9 +46,7 @@ export async function buildFile(file, options) { targets: TARGETS, }); - if (outDir) { - outFile = join(outDir, outFile); - } + outFile = join(outDir, outFile); await pipeline(Readable.from(lightningResult.code), createWriteStream(outFile)); diff --git a/app/javascript/packages/config/README.md b/app/javascript/packages/config/README.md new file mode 100644 index 00000000000..cbd08991cfe --- /dev/null +++ b/app/javascript/packages/config/README.md @@ -0,0 +1,21 @@ +# `@18f/identity-config` + +Utilities for retrieving global application configuration values. + +## Usage + +From your JavaScript code, retrieve a configuration value using the `getConfigValue` export: + +```ts +const appName = getConfigValue('appName'); +``` + +The configuration is expected to be bootstrapped in page markup within a ` +``` diff --git a/app/javascript/packages/device/README.md b/app/javascript/packages/device/README.md new file mode 100644 index 00000000000..4eddb5570db --- /dev/null +++ b/app/javascript/packages/device/README.md @@ -0,0 +1,34 @@ +# `@18f/identity-device` + +Utilities for detecting details about the user's device. + +## Usage + +Import the desired utility function from the package: + +```ts +import { isLikelyMobile } from '@18f/identity-device'; + +isLikelyMobile(); +// true +``` + +## API + +### `isIPad` + +Returns true if the device is an iPad, or false otherwise. + +iPadOS devices no longer list the correct user agent. As a proxy, we check for the incorrect one (Macintosh) then test the number of touchpoints, which for iPads will be 5. + +### `isLikelyMobile` + +Returns true if the device is likely a mobile device, or false otherwise. This is a rough approximation, using device user agent sniffing. + +### `hasMediaAccess` + +Returns true if the current device allows access to camera device APIs. + +### `isCameraCapableMobile` + +Returns true if the current device is assumed to be a mobile device where a camera is available, or false otherwise. This is a rough approximation, using device user agent sniffing and availability of camera device APIs. diff --git a/app/javascript/packages/document-capture-polling/README.md b/app/javascript/packages/document-capture-polling/README.md new file mode 100644 index 00000000000..18f42cb180a --- /dev/null +++ b/app/javascript/packages/document-capture-polling/README.md @@ -0,0 +1,20 @@ +# `@18f/identity-document-capture-polling` + +Package implementing behaviors associated with the hybrid handoff document capture flow, where document capture is initiated on a desktop computer and completed on a mobile device. The behaviors of this package are responsible for polling for the result of a document capture happening on another device, and redirecting the user upon completion or failure. + +## Usage + +Initialize the package's binding with the polling endpoint and required elements: + +```ts +import { DocumentCapturePolling } from '@18f/identity-document-capture-polling'; + +new DocumentCapturePolling({ + statusEndpoint: '/path/to/endpoint', + elements: { + backLink: document.querySelector('.link-sent-back-link'), + form: document.querySelector('.link-sent-continue-button-form'), + }, +}).bind(); +``` + diff --git a/app/javascript/packages/document-capture/README.md b/app/javascript/packages/document-capture/README.md new file mode 100644 index 00000000000..7083f63bbcc --- /dev/null +++ b/app/javascript/packages/document-capture/README.md @@ -0,0 +1,22 @@ +# `@18f/identity-document-capture` + +React components for displaying a user interface for a user to upload or capture photos of their state-issued identification. + +## Usage + +Render the included `` React component. Most settings are expected to be configured by wrapping the component with one or more of the included context provider components. + +```tsx +import { render } from 'react-dom'; +import { DocumentCapture, AnalyticsContextProvider } from '@18f/identity-document-capture'; + +const appRoot = document.getElementById('app-root'); + +render( + + {/* ... */} + + , + appRoot +); +``` diff --git a/app/javascript/packages/document-capture/components/in-person-location-full-address-entry-post-office-search-step.spec.tsx b/app/javascript/packages/document-capture/components/in-person-location-full-address-entry-post-office-search-step.spec.tsx index 1771ad0fa3f..e82f66c621f 100644 --- a/app/javascript/packages/document-capture/components/in-person-location-full-address-entry-post-office-search-step.spec.tsx +++ b/app/javascript/packages/document-capture/components/in-person-location-full-address-entry-post-office-search-step.spec.tsx @@ -44,9 +44,11 @@ const DEFAULT_PROPS = { describe('InPersonLocationFullAddressEntryPostOfficeSearchStep', () => { const usStatesTerritories: [string, string][] = [['Delware', 'DE']]; const locationsURL = 'https://localhost:3000/locations/endpoint'; + const inPersonURL = '#in_person'; const wrapper: ComponentType = ({ children }) => ( { beforeEach(() => { server.resetHandlers(); // todo: should we return USPS_RESPONSE here? - server.use(rest.post(locationsURL, (_req, res, ctx) => res(ctx.json([{ name: 'Baltimore' }])))); + server.use( + rest.post(locationsURL, (_req, res, ctx) => res(ctx.json([{ name: 'Baltimore' }]))), + rest.put(locationsURL, (_req, res, ctx) => res(ctx.json({ success: true }))), + ); }); it('renders the step', () => { @@ -326,8 +331,11 @@ describe('InPersonLocationFullAddressEntryPostOfficeSearchStep', () => { await findByLabelText('in_person_proofing.body.location.po_search.zipcode_label'), ); - await userEvent.click(findAllByText('in_person_proofing.body.location.location_button')[0]); + await userEvent.click( + (await findAllByText('in_person_proofing.body.location.location_button'))[0], + ); - expect(await queryByText('simple_form.required.text')).to.be.null(); + expect(queryByText('simple_form.required.text')).to.be.null(); + expect(window.location.hash).to.equal(inPersonURL); }); }); diff --git a/app/javascript/packages/document-capture/components/in-person-location-post-office-search-step.spec.tsx b/app/javascript/packages/document-capture/components/in-person-location-post-office-search-step.spec.tsx index 8b4472f3e1e..d5f62a77f4f 100644 --- a/app/javascript/packages/document-capture/components/in-person-location-post-office-search-step.spec.tsx +++ b/app/javascript/packages/document-capture/components/in-person-location-post-office-search-step.spec.tsx @@ -60,9 +60,11 @@ describe('InPersonLocationPostOfficeSearchStep', () => { const usStatesTerritories: [string, string][] = [['Delware', 'DE']]; const locationsURL = 'https://localhost:3000/locations/endpoint'; const addressSearchURL = 'https://localhost:3000/addresses/endpoint'; + const inPersonURL = '#in_person'; const wrapper: ComponentType = ({ children }) => ( { await userEvent.click( await findByText('in_person_proofing.body.location.po_search.search_button'), ); - const moreResults = await queryAllByText('in_person_proofing.body.location.location_button'); + const moreResults = queryAllByText('in_person_proofing.body.location.location_button'); expect(moreResults).to.be.empty(); }); @@ -366,6 +368,7 @@ describe('InPersonLocationPostOfficeSearchStep', () => { res(ctx.json(DEFAULT_RESPONSE), ctx.status(200)), ), rest.post(locationsURL, (_req, res, ctx) => res(ctx.json([{ name: 'Baltimore' }]))), + rest.put(locationsURL, (_req, res, ctx) => res(ctx.json({ success: true }))), ); }); @@ -387,9 +390,12 @@ describe('InPersonLocationPostOfficeSearchStep', () => { await findByLabelText('in_person_proofing.body.location.po_search.address_search_label'), ); - await userEvent.click(findAllByText('in_person_proofing.body.location.location_button')[0]); + await userEvent.click( + (await findAllByText('in_person_proofing.body.location.location_button'))[0], + ); - expect(await queryByText('in_person_proofing.body.location.inline_error')).to.be.null(); + expect(queryByText('in_person_proofing.body.location.inline_error')).to.be.null(); + expect(window.location.hash).to.equal(inPersonURL); }); }); }); diff --git a/app/javascript/packages/document-capture/components/status-message.jsx b/app/javascript/packages/document-capture/components/status-message.tsx similarity index 51% rename from app/javascript/packages/document-capture/components/status-message.jsx rename to app/javascript/packages/document-capture/components/status-message.tsx index 4d16415aaeb..9b6518901e8 100644 --- a/app/javascript/packages/document-capture/components/status-message.jsx +++ b/app/javascript/packages/document-capture/components/status-message.tsx @@ -1,25 +1,17 @@ -/** @typedef {import('react').ReactNode} ReactNode */ +import type { ReactNode } from 'react'; -/** - * @enum {string} - */ -export const Status = { - ERROR: 'ERROR', - SUCCESS: 'SUCCESS', -}; +export enum Status { + ERROR = 'ERROR', + SUCCESS = 'SUCCESS', +} -/** - * @typedef StatusMessageProps - * - * @prop {Status} status - * @prop {string=} className - * @prop {ReactNode=} children - */ +interface StatusMessageProps { + status: Status; + className?: string; + children?: ReactNode; +} -/** - * @param {StatusMessageProps} props - */ -function StatusMessage({ status, className, children }) { +function StatusMessage({ status, className, children }: StatusMessageProps) { const classes = [ status === Status.ERROR && 'usa-error-message', status === Status.SUCCESS && 'usa-success-message', diff --git a/app/javascript/packages/form-steps/README.md b/app/javascript/packages/form-steps/README.md new file mode 100644 index 00000000000..4435bfac638 --- /dev/null +++ b/app/javascript/packages/form-steps/README.md @@ -0,0 +1,21 @@ +# `@18f/identity-form-steps` + +React components for managing a user's progression through a series of steps in a form. + +## Usage + +At a minimum, render the `` React component with an array of step configurations. Each step must include a `name` and `form`, where the `form` is a React component that will be rendered once the user reaches the step. + +```tsx +import { render } from 'react-dom'; +import { FormSteps } from '@18f/identity-form-steps'; + +const STEPS = [ + { name: 'First Step', form: () =>

Welcome to the first step!

}, + { name: 'Second Step', form: () =>

Welcome to the second step!

}, +]; + +const appRoot = document.getElementById('app-root'); + +render(, appRoot); +``` diff --git a/app/javascript/packages/form-steps/form-steps.spec.tsx b/app/javascript/packages/form-steps/form-steps.spec.tsx index 1f2c4c00a78..6877d2c6d2e 100644 --- a/app/javascript/packages/form-steps/form-steps.spec.tsx +++ b/app/javascript/packages/form-steps/form-steps.spec.tsx @@ -405,7 +405,7 @@ describe('FormSteps', () => { await userEvent.click(getByText(t('forms.buttons.continue'))); - await expect(findByText('Second Title')).to.be.fulfilled(); + await findByText('Second Title'); await expect(checkFormHasExpectedErrors()).to.be.rejected(); window.history.back(); diff --git a/app/javascript/packages/masked-text-toggle/README.md b/app/javascript/packages/masked-text-toggle/README.md new file mode 100644 index 00000000000..d346c20fa18 --- /dev/null +++ b/app/javascript/packages/masked-text-toggle/README.md @@ -0,0 +1,32 @@ +# `@18f/identity-masked-text-toggle` + +Package implementing behaviors associated with toggling the visibility of text which is masked by default due to its sensitivity. + +For example, a Social Security number may be masked to show only `6**-**-***4` by default, and allow a user to toggle the visibility of the full number if desired. + +## Usage + +Initialize the package's binding with the polling endpoint and required elements: + +```ts +import MaskedTextToggle from '@18f/identity-masked-text-toggle'; + +const toggle = document.querySelector('.masked-text-toggle'); +new MaskedTextToggle(toggle).bind(); +``` + +The given toggle element is expected to be a checkbox, associated with the masked text wrapper by an `aria-controls` attribute. + +The masked text wrapper is expected to contain two variations of the text: a masked form (with a `data-masked="true"` attribute) and a revealed form (with a `data-masked="false"` attribute). The package will toggle visibility using the `display-none` utility class from the U.S. Web Design System. + +```html + + + 6**-**-***4 + + + + +``` diff --git a/app/javascript/packages/memorable-date/README.md b/app/javascript/packages/memorable-date/README.md new file mode 100644 index 00000000000..9865cc45843 --- /dev/null +++ b/app/javascript/packages/memorable-date/README.md @@ -0,0 +1,22 @@ +# `@18f/identity-memorable-date` + +Custom element implementing behaviors associated with Login.gov's adaptation of the U.S. Web Design System [Memorable Date component](https://designsystem.digital.gov/components/memorable-date/). + +## Usage + +Importing the element will register the `` custom element: + +```ts +import '@18f/identity-memorable-date/memorable-date-element'; +``` + +The custom element will implement modal behavior, but all markup must already exist. + +```html + + + + + + +``` diff --git a/app/javascript/packages/password-confirmation/README.md b/app/javascript/packages/password-confirmation/README.md index 5a5ae306cc8..97ad4545006 100644 --- a/app/javascript/packages/password-confirmation/README.md +++ b/app/javascript/packages/password-confirmation/README.md @@ -1,4 +1,4 @@ -# `@18f/password-confirmation` +# `@18f/identity-password-confirmation` Custom element implementation that adds password inputs with validation for confirmation. @@ -7,7 +7,7 @@ Custom element implementation that adds password inputs with validation for conf Importing the element will register the `` custom element: ```ts -import '@18f/password-confirmation/password-confirmation-element'; +import '@18f/identity-password-confirmation/password-confirmation-element'; ``` The custom element will implement the behavior for validation, but all markup must already exist. diff --git a/app/javascript/packages/password-toggle/README.md b/app/javascript/packages/password-toggle/README.md new file mode 100644 index 00000000000..84d23f0e595 --- /dev/null +++ b/app/javascript/packages/password-toggle/README.md @@ -0,0 +1,22 @@ +# `@18f/identity-password-toggle` + +Custom element implementation that toggles the visibility of a password field text in response to clicking a checkbox. + +## Usage + +Importing the element will register the `` custom element: + +```ts +import '@18f/identity-password-toggle/password-toggle-element'; +``` + +The custom element will implement associatd behaviors, but all markup must already exist. + +```html + + + + + + +``` diff --git a/app/javascript/packages/phone-input/README.md b/app/javascript/packages/phone-input/README.md new file mode 100644 index 00000000000..fa14a63cace --- /dev/null +++ b/app/javascript/packages/phone-input/README.md @@ -0,0 +1,31 @@ +# `@18f/identity-phone-input` + +Custom element implementation initializes an interactive phone input, using [`intl-tel-input`](https://github.com/jackocnr/intl-tel-input). + +## Usage + +Importing the element will register the `` custom element: + +```ts +import '@18f/identity-phone-input'; +``` + +The custom element will implement associatd behaviors, but all markup must already exist. + +```html + + +
+ + +
+ + +
+``` diff --git a/app/javascript/packages/spinner-button/README.md b/app/javascript/packages/spinner-button/README.md new file mode 100644 index 00000000000..54702984562 --- /dev/null +++ b/app/javascript/packages/spinner-button/README.md @@ -0,0 +1,38 @@ +# `@18f/identity-spinner-button` + +Custom element and React component for displaying a spinner effect on a button when clicked. + +## Usage + +### Custom Element + +Importing the element will register the `` custom element: + +```ts +import '@18f/identity-spinner-button/spinner-button-element'; +``` + +The custom element will implement associated behaviors, but all markup must already exist, rendered server-side or by the included React component. + +When clicked, the a `spinner-button--spinner-active` class will be added to the root element, which can be used to control the visibility of associated elements using custom CSS styles. + +```html + + + +``` + +### React + +The package exports a `` component. + +```tsx +import { render } from 'react-dom'; +import { SpinnerButton } from '@18f/identity-spinner-button'; + +const appRoot = document.getElementById('app-root'); + +render(Spin!, appRoot) +``` diff --git a/app/javascript/packages/time-element/README.md b/app/javascript/packages/time-element/README.md new file mode 100644 index 00000000000..49e7c385778 --- /dev/null +++ b/app/javascript/packages/time-element/README.md @@ -0,0 +1,21 @@ +# `@18f/identity-time-element` + +Custom element which converts a time string rendered by the server into the user's local time. + +## Usage + +The package exports a `TimeElement` custom element, which can be registered using the browser's custom element registry: + +```ts +import { TimeElement } from '@18f/identity-time-element'; + +customElements.define('lg-time', TimeElement); +``` + +The custom element will implement associated behaviors, but all markup must already exist. + +```html + + September 26, 2023 at 4:20 PM + +``` diff --git a/app/javascript/packages/validated-field/README.md b/app/javascript/packages/validated-field/README.md new file mode 100644 index 00000000000..e8fc974b5ab --- /dev/null +++ b/app/javascript/packages/validated-field/README.md @@ -0,0 +1,45 @@ +# `@18f/identity-validated-field` + +Custom element and React component for controlling validation behavior associated with a form input. + +It enhances the behavior of an input by: + +- Displaying an error message on the page when form submission results in a validation error +- Moving focus to the first invalid field when form submission results in a validation error +- Providing default error messages for common validation constraints (e.g. required field missing) +- Allowing you to customize error messages associated with default field validation +- Resetting the error state when an input value changes + +## Usage + +### Custom Element + +Importing the element will register the `` custom element: + +```ts +import '@18f/identity-validated-field/validated-field-element'; +``` + +The custom element will implement associated behaviors, but all markup must already exist, rendered server-side or by the included React component. + +```html + + +
+ +
+
+``` + +### React + +The package exports a `` component. If rendered without a child, it will render a text input by default. + +```tsx +import { render } from 'react-dom'; +import { ValidatedField } from '@18f/identity-validated-field'; + +const appRoot = document.getElementById('app-root'); + +render(, appRoot); +``` diff --git a/app/jobs/resolution_proofing_job.rb b/app/jobs/resolution_proofing_job.rb index 13d355bf9d8..96b5dba19d7 100644 --- a/app/jobs/resolution_proofing_job.rb +++ b/app/jobs/resolution_proofing_job.rb @@ -19,8 +19,8 @@ def perform( encrypted_arguments:, trace_id:, should_proof_state_id:, - double_address_verification: false, - ipp_enrollment_in_progress: false, + double_address_verification: nil, + ipp_enrollment_in_progress: true, user_id: nil, threatmetrix_session_id: nil, request_ip: nil, diff --git a/app/models/profile.rb b/app/models/profile.rb index 7c439e11054..2215f638668 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -33,6 +33,7 @@ class Profile < ApplicationRecord enum idv_level: { legacy_unsupervised: 1, legacy_in_person: 2, + unsupervised_with_selfie: 3, } attr_reader :personal_key diff --git a/app/models/user.rb b/app/models/user.rb index 7ded8bf2af1..a92c017fefb 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -346,6 +346,10 @@ def identity_verified?(service_provider: nil) active_profile.present? && !reproof_for_irs?(service_provider: service_provider) end + def identity_verified_with_selfie? + active_profile&.idv_level == 'unsupervised_with_selfie' + end + def reproof_for_irs?(service_provider:) return false unless service_provider&.irs_attempts_api_enabled return false unless active_profile.present? @@ -400,6 +404,10 @@ def has_devices? !recent_devices.empty? end + def new_device?(cookie_uuid:) + !cookie_uuid || !devices.exists?(cookie_uuid:) + end + # Returns the number of times the user has signed in, corresponding to the `sign_in_before_2fa` # event. # diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index 45b85cd8cf6..f1956723085 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -3071,6 +3071,7 @@ def logout_initiated( # @param [Boolean] success Whether authentication was successful # @param [Hash] errors Authentication error reasons, if unsuccessful # @param [String] context + # @param [Boolean] new_device # @param [String] multi_factor_auth_method # @param [DateTime] multi_factor_auth_method_created_at time auth method was created # @param [Integer] auth_app_configuration_id @@ -3088,6 +3089,7 @@ def multi_factor_auth( success:, errors: nil, context: nil, + new_device: nil, multi_factor_auth_method: nil, multi_factor_auth_method_created_at: nil, auth_app_configuration_id: nil, @@ -3108,6 +3110,7 @@ def multi_factor_auth( success: success, errors: errors, context: context, + new_device: new_device, multi_factor_auth_method: multi_factor_auth_method, multi_factor_auth_method_created_at: multi_factor_auth_method_created_at, auth_app_configuration_id: auth_app_configuration_id, diff --git a/app/services/idv/agent.rb b/app/services/idv/agent.rb index 1bea425d38f..dc0a117d774 100644 --- a/app/services/idv/agent.rb +++ b/app/services/idv/agent.rb @@ -11,7 +11,7 @@ def proof_resolution( user_id:, threatmetrix_session_id:, request_ip:, - ipp_enrollment_in_progress: false + ipp_enrollment_in_progress: true ) document_capture_session.create_proofing_session @@ -28,7 +28,7 @@ def proof_resolution( user_id: user_id, threatmetrix_session_id: threatmetrix_session_id, request_ip: request_ip, - double_address_verification: ipp_enrollment_in_progress, + ipp_enrollment_in_progress: ipp_enrollment_in_progress, } if IdentityConfig.store.ruby_workers_idv_enabled diff --git a/app/services/idv/profile_maker.rb b/app/services/idv/profile_maker.rb index 2181f15ec35..75d48aa760a 100644 --- a/app/services/idv/profile_maker.rb +++ b/app/services/idv/profile_maker.rb @@ -18,6 +18,7 @@ def save_profile( fraud_pending_reason:, gpo_verification_needed:, in_person_verification_needed:, + selfie_check_performed:, deactivation_reason: nil ) profile = Profile.new(user: user, active: false, deactivation_reason: deactivation_reason) @@ -27,11 +28,10 @@ def save_profile( profile.proofing_components = current_proofing_components profile.fraud_pending_reason = fraud_pending_reason - profile.idv_level = if in_person_verification_needed - :legacy_in_person - else - :legacy_unsupervised - end + profile.idv_level = set_idv_level( + in_person_verification_needed: in_person_verification_needed, + selfie_check_performed: selfie_check_performed, + ) profile.save! profile.deactivate_for_gpo_verification if gpo_verification_needed @@ -43,6 +43,16 @@ def save_profile( private + def set_idv_level(in_person_verification_needed:, selfie_check_performed:) + if in_person_verification_needed + :legacy_in_person + elsif !FeatureManagement.idv_block_biometrics_requests? && selfie_check_performed + :unsupervised_with_selfie + else + :legacy_unsupervised + end + end + def current_proofing_components user.proofing_component&.as_json || {} end diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb index 8d5ef75fdda..106c3d49df7 100644 --- a/app/services/idv/session.rb +++ b/app/services/idv/session.rb @@ -22,6 +22,7 @@ class Session profile_id redo_document_capture resolution_successful + selfie_check_performed skip_doc_auth skip_hybrid_handoff ssn @@ -63,6 +64,7 @@ def create_profile_from_applicant_with_password(user_password) fraud_pending_reason: threatmetrix_fraud_pending_reason, gpo_verification_needed: !phone_confirmed? || verify_by_mail?, in_person_verification_needed: current_user.has_in_person_enrollment?, + selfie_check_performed: session[:selfie_check_performed], ) profile.activate unless profile.reason_not_to_activate diff --git a/app/services/proofing/resolution/progressive_proofer.rb b/app/services/proofing/resolution/progressive_proofer.rb index 6aed174e67c..43216ae1c42 100644 --- a/app/services/proofing/resolution/progressive_proofer.rb +++ b/app/services/proofing/resolution/progressive_proofer.rb @@ -13,10 +13,6 @@ def initialize(instant_verify_ab_test_discriminator = nil) end # @param [Hash] applicant_pii keys are symbols and values are strings, confidential user info - # @param [Boolean] double_address_verification flag that indicates if user will have - # both state id address and current residential address verified. Note this value is here as - # a placeholder until it can be replaced with ipp_enrollment_in_progress in ticket LG-353: - # https://cm-jira.usa.gov/browse/LG-11353 # @param [Boolean] ipp_enrollment_in_progress flag that indicates if user will have # both state id address and current residential address verified # @param [String] request_ip IP address for request @@ -28,13 +24,13 @@ def initialize(instant_verify_ab_test_discriminator = nil) # @return [ResultAdjudicator] object which contains the logic to determine proofing's result def proof( applicant_pii:, - ipp_enrollment_in_progress:, request_ip:, should_proof_state_id:, threatmetrix_session_id:, timer:, user_email:, - double_address_verification: false + double_address_verification: nil, + ipp_enrollment_in_progress: true ) device_profiling_result = proof_with_threatmetrix_if_needed( applicant_pii: applicant_pii, @@ -52,7 +48,7 @@ def proof( ) applicant_pii_transformed = applicant_pii.clone - if ipp_enrollment_in_progress || double_address_verification + if ipp_enrollment_in_progress applicant_pii_transformed = with_state_id_address(applicant_pii_transformed) end @@ -115,19 +111,20 @@ def proof_with_threatmetrix_if_needed( end end + # rubocop:disable Lint/UnusedMethodArgument def proof_residential_address_if_needed( applicant_pii:, timer:, double_address_verification: false, ipp_enrollment_in_progress: false ) - return residential_address_unnecessary_result unless - ipp_enrollment_in_progress || double_address_verification + return residential_address_unnecessary_result unless ipp_enrollment_in_progress timer.time('residential address') do resolution_proofer.proof(applicant_pii) end end + # rubocop:enable Lint/UnusedMethodArgument def residential_address_unnecessary_result Proofing::Resolution::Result.new( @@ -141,12 +138,12 @@ def resolution_cannot_pass ) end + # rubocop:disable Lint/UnusedMethodArgument def proof_id_address_with_lexis_nexis_if_needed(applicant_pii:, timer:, residential_instant_verify_result:, double_address_verification:, ipp_enrollment_in_progress:) - if applicant_pii[:same_address_as_id] == 'true' && - (ipp_enrollment_in_progress || double_address_verification) + if applicant_pii[:same_address_as_id] == 'true' && ipp_enrollment_in_progress return residential_instant_verify_result end return resolution_cannot_pass unless residential_instant_verify_result.success? @@ -163,14 +160,13 @@ def should_proof_state_id_with_aamva?(ipp_enrollment_in_progress:, same_address_ return false unless should_proof_state_id # If the user is in double-address-verification and they have changed their address then # they are not eligible for get-to-yes - # rubocop:disable Layout/LineLength - if !(ipp_enrollment_in_progress || double_address_verification) || same_address_as_id == 'true' - # rubocop:enable Layout/LineLength + if !ipp_enrollment_in_progress || same_address_as_id == 'true' user_can_pass_after_state_id_check?(instant_verify_result) else residential_instant_verify_result.success? end end + # rubocop:enable Lint/UnusedMethodArgument def proof_id_with_aamva_if_needed( applicant_pii:, timer:, diff --git a/app/services/proofing/resolution/result_adjudicator.rb b/app/services/proofing/resolution/result_adjudicator.rb index 17f37f6f3fb..3d9a05224d4 100644 --- a/app/services/proofing/resolution/result_adjudicator.rb +++ b/app/services/proofing/resolution/result_adjudicator.rb @@ -13,7 +13,7 @@ def initialize( ipp_enrollment_in_progress:, device_profiling_result:, same_address_as_id:, - double_address_verification: false + double_address_verification: true ) @resolution_result = resolution_result @state_id_result = state_id_result @@ -90,7 +90,7 @@ def device_profiling_result_and_reason def resolution_result_and_reason if !residential_resolution_result.success? && same_address_as_id == 'false' && - (ipp_enrollment_in_progress || double_address_verification) + ipp_enrollment_in_progress [false, :fail_resolution_skip_state_id] elsif resolution_result.success? && state_id_result.success? [true, :pass_resolution_and_state_id] diff --git a/app/views/users/two_factor_authentication_setup/index.html.erb b/app/views/users/two_factor_authentication_setup/index.html.erb index eff5c26ec90..eb9cdb8bdc7 100644 --- a/app/views/users/two_factor_authentication_setup/index.html.erb +++ b/app/views/users/two_factor_authentication_setup/index.html.erb @@ -12,7 +12,7 @@ <%= render PageHeadingComponent.new.with_content(@presenter.heading) %> -

<%= @presenter.intro %>

+

<%= @presenter.intro %>

<% if @presenter.two_factor_enabled? %>

diff --git a/bin/oncall/email-deliveries b/bin/oncall/email-deliveries index 432286279c0..486f489bd00 100755 --- a/bin/oncall/email-deliveries +++ b/bin/oncall/email-deliveries @@ -4,7 +4,6 @@ Dir.chdir(__dir__) { require 'bundler/setup' } require 'active_support' -require 'active_support/core_ext/object/blank' require 'active_support/core_ext/enumerable' # index_by require 'active_support/core_ext/integer/time' require 'optparse' diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index 4385cf76121..9c4ac5e881c 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -256,6 +256,7 @@ def headers 'rack.attack', ) do |_name, _start, _finish, _request_id, payload| req = payload[:request] + next if req.env['rack.attack.match_type'] == :safelist user = req.env['warden'].user || AnonymousUser.new sp = req.env.fetch('rack.session', {}).dig('sp', 'issuer') analytics = Analytics.new(user: user, request: req, session: {}, sp: sp) diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 00000000000..c988a2437ed --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,44 @@ +# This configuration file will be evaluated by Puma. The top-level methods that +# are invoked here are part of Puma's configuration DSL. For more information +# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html. + +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 1 threads for minimum +# and maximum; +max_threads_count = ENV.fetch('RAILS_MAX_THREADS', 1) +min_threads_count = ENV.fetch('RAILS_MIN_THREADS') { max_threads_count } +threads min_threads_count, max_threads_count + +# Specifies that the worker count should equal the number of processors in production. +if ENV['RAILS_ENV'] == 'production' + require 'concurrent-ruby' + worker_count = Integer( + ENV.fetch('PUMA_WORKER_CONCURRENCY') { Concurrent.physical_processor_count }, + ) + workers worker_count if worker_count > 1 + + if ENV['REMOTE_ADDRESS_HEADER'] + set_remote_address header: ENV['REMOTE_ADDRESS_HEADER'] + end +end + +app_dir = File.expand_path('../..', __FILE__) +shared_dir = "#{app_dir}/shared" +bind "unix://#{shared_dir}/sockets/puma.sock" +# Specifies the `worker_timeout` threshold that Puma will use to wait before +# terminating a worker in development environments. +worker_timeout 3600 if ENV.fetch('RAILS_ENV', 'development') == 'development' + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +port ENV.fetch('PORT', 3000) + +# Specifies the `environment` that Puma will run in. +environment ENV.fetch('RAILS_ENV') { 'development' } + +# Specifies the `pidfile` that Puma will use. +pidfile ENV.fetch('PIDFILE') { 'tmp/pids/server.pid' } + +# Allow puma to be restarted by `bin/rails restart` command. +plugin :tmp_restart diff --git a/dockerfiles/idp_review_app.Dockerfile b/dockerfiles/idp_review_app.Dockerfile index df938109947..48da3f9eb10 100644 --- a/dockerfiles/idp_review_app.Dockerfile +++ b/dockerfiles/idp_review_app.Dockerfile @@ -51,6 +51,7 @@ RUN addgroup --gid 1000 app && \ adduser --uid 1000 --gid 1000 --disabled-password --gecos "" app && \ mkdir -p $RAILS_ROOT && \ mkdir -p $BUNDLE_PATH && \ + mkdir -p $RAILS_ROOT/tmp/pids && \ chown -R app:app $RAILS_ROOT && \ chown -R app:app $BUNDLE_PATH diff --git a/lib/custom_devise_failure_app.rb b/lib/custom_devise_failure_app.rb index 53a7c270a3b..4b725d7f175 100644 --- a/lib/custom_devise_failure_app.rb +++ b/lib/custom_devise_failure_app.rb @@ -9,6 +9,10 @@ def i18n_message(default = nil) message.is_a?(Symbol) ? build_message(message) : message.to_s end + def redirect_url + request.env["devise_#{warden_message}_failure_redirect_url"] || super + end + private def build_message(message) diff --git a/lib/feature_management.rb b/lib/feature_management.rb index 664f6466f10..db78c5efbac 100644 --- a/lib/feature_management.rb +++ b/lib/feature_management.rb @@ -162,4 +162,9 @@ def self.idv_by_mail_only? outage_status.any_phone_vendor_outage? || outage_status.phone_finder_outage? end + + def self.idv_block_biometrics_requests? + (Identity::Hostdata.in_datacenter? && Identity::Hostdata.env == 'prod') || + !IdentityConfig.store.doc_auth_selfie_capture_enabled + end end diff --git a/lib/reporting/cloudwatch_client.rb b/lib/reporting/cloudwatch_client.rb index 5ae6e0a6704..338869c0121 100644 --- a/lib/reporting/cloudwatch_client.rb +++ b/lib/reporting/cloudwatch_client.rb @@ -1,6 +1,7 @@ require 'aws-sdk-cloudwatchlogs' require 'ruby-progressbar' require 'identity/hostdata' +require 'active_support/core_ext/object/blank' module Reporting class CloudwatchClient diff --git a/package.json b/package.json index 1277c05089e..c5c38767672 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "^7.31.8", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-testing-library": "^6.2.0", "jsdom": "^22.1.0", "mocha": "^10.0.0", "mq-polyfill": "^1.1.8", diff --git a/public/acuant/11.9.2/AcuantCamera.min.js b/public/acuant/11.9.2/AcuantCamera.min.js new file mode 100644 index 00000000000..ab037366c8e --- /dev/null +++ b/public/acuant/11.9.2/AcuantCamera.min.js @@ -0,0 +1 @@ +var AcuantCameraUI=function(){"use strict";let e=null,t=null,i=null,a=null,n={start:function(e,i){s=e.onError,i&&(g=i,g.text.hasOwnProperty("BIG_DOCUMENT")||(g.text.BIG_DOCUMENT="TOO CLOSE"));AcuantCamera.isCameraSupported?r||(r=!0,v(),function(e){let i=0,n=(new Date).getTime();a=document.getElementById("acuant-camera"),a&&a.addEventListener("acuantcameracreated",E);AcuantCamera.start((a=>{!function(e,t){if(t>=3)return!0;{let t=(new Date).getTime()-e;return t{y(),e.onCaptured(i),AcuantCamera.evaluateImage(i.data,i.width,i.height,i.isPortraitOrientation,t,(t=>{e.onCropped(t)}))}))}function A(e,t){y(),s&&s(e,t),s=null}function x(){!function a(){e&&!e.paused&&!e.ended&&r&&(!function(){if(i.clearRect(0,0,t.width,t.height),o)if(o.state===h)I("#00ff00"),D("rgba(0, 255, 0, 0.2)"),O(g.text.CAPTURING,.05,"#00ff00",!1);else if(o.state===m)I("#000000"),O(g.text.TAP_TO_CAPTURE);else if(o.state===AcuantCamera.DOCUMENT_STATE.GOOD_DOCUMENT)if(I("#ffff00"),D("rgba(255, 255, 0, 0.2)"),g.text.GOOD_DOCUMENT)O(g.text.GOOD_DOCUMENT,.09,"#ff0000",!1);else{let e=Math.ceil((f-((new Date).getTime()-c))/1e3);e<=0&&(e=1),O(e+"...",.09,"#ff0000",!1)}else o.state===AcuantCamera.DOCUMENT_STATE.SMALL_DOCUMENT?(I("#ff0000"),O(g.text.SMALL_DOCUMENT)):o.state===AcuantCamera.DOCUMENT_STATE.BIG_DOCUMENT?(I("#ff0000"),O(g.text.BIG_DOCUMENT)):(I("#000000"),O(g.text.NONE));else I("#000000"),O(g.text.NONE)}(),u=setTimeout(a,100))}()}function O(e,t=.04,a="#ffffff",n=!0){let r=k(),o=window.orientation,c=i.measureText(e),d=.01*Math.max(r.width,r.height),s=.02*Math.max(r.width,r.height),l=(r.height-s-c.width)/2,u=-(r.width/2-d),h=90;0!==o&&(h=0,l=(r.width-d-c.width)/2,u=r.height/2-s+.04*Math.max(r.width,r.height)),i.rotate(h*Math.PI/180),n&&(i.fillStyle="rgba(0, 0, 0, 0.5)",i.fillRect(Math.round(l-d),Math.round(u+d),Math.round(c.width+s),-Math.round(.05*Math.max(r.width,r.height)))),i.font=(Math.ceil(Math.max(r.width,r.height)*t)||0)+"px Sans-serif",i.fillStyle=a,i.fillText(e,l,u),S(e),i.rotate(-h*Math.PI/180)}const S=e=>{d||(d=document.createElement("p"),d.id="doc-state-text",d.style.height="1px",d.style.width="1px",d.style.margin="-1px",d.style.overflow="hidden",d.style.position="absolute",d.style.whiteSpace="nowrap",d.setAttribute("role","alert"),d.setAttribute("aria-live","assertive"),t.parentNode.insertBefore(d,t)),d.innerHTML!=e&&(d.innerHTML=e)};function k(){return{height:t.height,width:t.width}}function M(e,t){let a=window.orientation,n=k(),r=.08*n.width,o=.07*n.height;switch(0!==a&&(r=.07*n.width,o=.08*n.height),t.toString()){case"1":r=-r;break;case"2":r=-r,o=-o;break;case"3":o=-o}!function(e,t,a){i.beginPath();const n=Math.round(e.x),r=Math.round(e.y);i.moveTo(n,r),i.lineTo(Math.round(n+t),r),i.moveTo(n,r),i.lineTo(n,Math.round(r+a)),i.stroke()}(e,r,o)}function D(e){if(o&&o.points&&4===o.points.length){i.beginPath(),i.moveTo(Math.round(o.points[0].x),Math.round(o.points[0].y));for(let e=1;et.height?(a=.85*t.width,n=.85*t.width/1.5887,n>.85*t.height&&(a=a/n*.85*t.height,n=.85*t.height)):(a=.85*t.height/1.5887,n=.85*t.height,a>.85*t.width&&(n=n/a*.85*t.width,a=.85*t.width)),e=a/2,i=n/2,[{x:r.x-e,y:r.y-i},{x:r.x+e,y:r.y-i},{x:r.x+e,y:r.y+i},{x:r.x-e,y:r.y+i}].forEach(((e,t)=>{M(e,t)}))}}return n}(),AcuantCamera=(()=>{"use strict";let e=null,t=null,i=null,a=null,n=null,r=null;const o={NO_DOCUMENT:0,SMALL_DOCUMENT:1,BIG_DOCUMENT:2,GOOD_DOCUMENT:3},c={NONE:0,ID:1,PASSPORT:2},d=700,s=1920;let l,u,h=null,m=null,g=null,f=!1,p=!1,w=null,v={start:S,startManualCapture:k,triggerCapture:function(t){let i,a;try{if(0==e.videoWidth)throw"width 0";n.width=e.videoWidth,n.height=e.videoHeight,r.drawImage(e,0,0,n.width,n.height),i=r.getImageData(0,0,n.width,n.height),r.clearRect(0,0,n.width,n.height),a=window.matchMedia("(orientation: portrait)").matches}catch(e){return void ie()}t({data:i,width:n.width,height:n.height,isPortraitOrientation:a})},end:W,DOCUMENT_STATE:o,ACUANT_DOCUMENT_TYPE:c,isCameraSupported:"mediaDevices"in navigator&&function(){let e=!1;return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=!0)}(navigator.userAgent||navigator.vendor||window.opera),(e||C())&&!y()}(),isIOSWebview:function(){const e=window.navigator.standalone,t=window.navigator.userAgent.toLowerCase(),i=/safari/.test(t);return/iphone|ipod|ipad/.test(t)&&!i&&!e}(),isIOS:C,setRepeatFrameProcessor:Z,evaluateImage:G};function y(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function C(){return/iPad|iPhone|iPod/.test(navigator.platform)&&_()[0]>=13||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1}function b(){let e;e=u||navigator.userAgent;const t=e.match(/SM-[N|G|S]\d{3}/);if(!t)return!1;const i=parseInt(t[0].match(/\d{3}/)[0],10),a=e.match(/SM-S\d{3}/)?900:970;return!isNaN(i)&&i>=a}const E=function(){let e={frameScale:1,primaryConstraints:{video:{facingMode:{exact:"environment"},aspectRatio:4/3,resizeMode:"none"}},fixedHeight:null,fixedWidth:null};C()?L()?(e.primaryConstraints.video.aspectRatio=1*Math.max(window.innerWidth,window.innerHeight)/Math.min(window.innerWidth,window.innerHeight),e.primaryConstraints.video.height={min:1440,ideal:2880}):N()?e.primaryConstraints.video.width={min:s,ideal:s}:e.primaryConstraints.video.height={min:1440,ideal:1440}:e.primaryConstraints.video.height={min:1440,ideal:1440};return e}();function T(t){j().then((()=>{f=!0,e.srcObject=t,function(){b()&&document.addEventListener("visibilitychange",z);window.addEventListener("resize",R),e&&(e.addEventListener("play",J),e.addEventListener("loadedmetadata",F))}(),e.play()}))}function A(e,t){document.cookie="AcuantCameraHasFailed="+t,W(),m&&"function"==typeof m?m(e,t):(console.error("No error callback set. Review implementation."),console.error(e,t))}function x(){return new Promise((e=>{navigator.mediaDevices.enumerateDevices().then((t=>{const i={suffix:void 0,device:void 0},a=t.find((e=>"Back Dual Wide Camera"===e.label));(function(){let e=_();return e&&-1!=e&&e.length>=1&&e[0]>=16&&e[1]>=4})()&&a?i.device=a:t.filter((e=>"videoinput"===e.kind)).forEach((e=>{if(t=e.label,["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"].some((e=>t.includes(e)))){let t=e.label.split(","),a=parseInt(t[0][t[0].length-1]);(a||0===a)&&(void 0===i.suffix||i.suffix>a)&&(i.suffix=a,i.device=e)}var t})),e(i.device)})).catch((()=>{e()}))}))}function O(e,t=0){0===t&&l.dispatchEvent(new Event("acuantcameracreated"));const i=Boolean(e.video.deviceId);navigator.mediaDevices.getUserMedia(e).then((e=>{!i&&t<2?x().then((i=>{i&&i.deviceId!==e.getVideoTracks()[0].getSettings().deviceId?(E.primaryConstraints.video.deviceId=i.deviceId,U(e),O(E.primaryConstraints,t++)):T(e)})):T(e)})).catch((e=>{A(e,AcuantJavascriptWebSdk.START_FAIL_CODE)}))}function S(a,o,c){if(c&&(m=c),function(){let e="AcuantCameraHasFailed=";return decodeURIComponent(document.cookie).includes(e)}())return c("Live capture has previously failed and was called again. User was sent to manual capture.",AcuantJavascriptWebSdk.REPEAT_FAIL_CODE),void k(o);l=document.getElementById("acuant-camera"),l?(l.style.position="relative",l.innerHTML='',e=document.getElementById("acuant-player"),n=document.createElement("canvas"),r=n.getContext("2d",{willReadFrequently:!C()}),t=document.getElementById("acuant-ui-canvas"),f?A("already started.",AcuantJavascriptWebSdk.START_FAIL_CODE):e&&t?(i=t.getContext("2d"),a&&(h=a),navigator.userAgentData&&navigator.userAgentData.getHighEntropyValues?navigator.userAgentData.getHighEntropyValues(["model"]).then((e=>{"string"==typeof e?u=e:"string"==typeof e.model&&(u=e.model)})).finally((()=>{b()?E.primaryConstraints.video.zoom=2:P()&&(E.primaryConstraints.video.zoom=1.6),O(E.primaryConstraints)})):(b()?E.primaryConstraints.video.zoom=2:P()&&(E.primaryConstraints.video.zoom=1.6),O(E.primaryConstraints))):A("Missing HTML elements.",AcuantJavascriptWebSdk.START_FAIL_CODE)):A("Expected div with 'acuant-camera' id",AcuantJavascriptWebSdk.START_FAIL_CODE)}function k(e){g=e,a||(a=document.createElement("input"),a.type="file",a.capture="environment",a.accept="image/*",a.onclick=function(e){e&&e.target&&(e.target.value="")}),a.onchange=D,a.click()}let M=-1;function D(e){n=document.createElement("canvas"),r=n.getContext("2d"),r.mozImageSmoothingEnabled=!1,r.webkitImageSmoothingEnabled=!1,r.msImageSmoothingEnabled=!1,r.imageSmoothingEnabled=!1;let t=e.target,i=new FileReader;const a=e.target.files[0]&&e.target.files[0].name&&e.target.files[0].name.toLowerCase().endsWith(".heic");i.onload=a?e=>{var t;(t=e.target.result,new Promise(((e,i)=>{const a=window["magick-wasm"];a?a.initializeImageMagick().then((()=>{a.ImageMagick.read(new Uint8Array(t),(t=>{const{width:i,height:a}=I(t.width,t.height);n.width=i,n.height=a,t.resize(i,a),t.writeToCanvas(n);const o=r.getImageData(0,0,i,a);e({data:o,width:i,height:a})}))})):i({error:"HEIC image processing failed. Please make sure Image Magick scripts were integrated as expected.",code:AcuantJavascriptWebSdk.HEIC_NOT_SUPPORTED_CODE})}))).then((e=>{M=6,g.onCaptured(e),G(e.data,e.width,e.height,!1,"MANUAL",g.onCropped)})).catch((e=>g.onError(e.error,e.code)))}:e=>{M=function(e){const t=new DataView(e.target.result);if(65496!=t.getUint16(0,!1))return-2;const i=t.byteLength;let a=2;for(;a{const{width:e,height:i}=I(t.width,t.height);n.width=e,n.height=i,r.drawImage(t,0,0,e,i);const a=r.getImageData(0,0,e,i);r.clearRect(0,0,e,i),t.remove(),g.onCaptured({data:a,width:e,height:i}),G(a,e,i,!1,"MANUAL",g.onCropped)},t.src="data:image/jpeg;base64,"+ae(e.target.result)},t&&t.files[0]&&i.readAsArrayBuffer(t.files[0])}function I(e,t){let i=2560,a=1920;N()&&(i=s,a=Math.floor(1440));if((e>t?e:t)>i)if(e{e.stop()}))}function W(){f=!1,p=!1,M=-1,w&&(clearTimeout(w),w=null),function(){b()&&document.removeEventListener("visibilitychange",z);window.removeEventListener("resize",R),e&&(e.removeEventListener("play",J),e.removeEventListener("loadedmetadata",F))}(),e&&(e.pause(),e.srcObject&&U(e.srcObject),e=null),l&&(l.innerHTML=""),a&&(a.remove(),a=null)}function _(){if(/iP(hone|od|ad)/.test(navigator.platform))try{const e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||0,10)]}catch(e){return-1}return-1}function N(){let e=_();return e&&-1!=e&&e.length>=1&&15==e[0]}function P(){if(function(){let e=_();return e&&-1!=e&&e.length>=1&&e[0]>=17}()){let e=[screen.width,screen.height],t=Math.max(...e),i=Math.min(...e);if(852==t&&393==i)return!0;if(844==t&&390==i)return!0}return!1}function L(){let e=decodeURIComponent(document.cookie);if(e.includes("AcuantForceRegularCapture=true"))return!1;if(e.includes("AcuantForceDistantCapture=true"))return!0;if(function(){let e=_();return e&&-1!=e&&e.length>=1&&16==e[0]&&e[1]<4}()){let e=[screen.width,screen.height],t=Math.max(...e),i=Math.min(...e);if(852==t&&393==i)return!0;if(932==t&&430==i)return!0;if(844==t&&390==i)return!0;if(926==t&&428==i)return!0}return!1}function R(){i.clearRect(0,0,t.width,t.height),e&&(C()&&(function(){const e=window.navigator.userAgent,t=e.indexOf("WebKit")>-1,i=e.indexOf("CriOS")>-1;return t&&i&&C()}()||function(){let e=_();return e&&-1!=e&&e.length>=2&&14==e[0]&&e[1]>=4}())?(W(),S()):H())}function H(){let i,a;if(e.videoWidthE.fixedHeight&&(E.fixedHeight=l.clientWidth,E.fixedWidth=l.clientHeight),window.matchMedia("(orientation: portrait)").matches){if(E.fixedWidth)E.fixedWidth{AcuantJavascriptWebSdk.startMetricsWorker(e)}));const c=await Q(e,t,i),d=await K(r.image);r={...r,...c,...d},AcuantJavascriptWebSdk.endMetricsWorker();const{imageBase64:s,imageBytes:l}=$(r,a);r.image.bytes=l;const u=await Y(s);r.image.barcodeText=u;const h=await ee(r,a,s);await j();const m=await X(h);return r.image.data=m,V(),r}(e,t,i,n,a).then(r):async function(e,t,i,a,n){let r={isPortraitOrientation:n};const[o,c]=await Promise.all([q(e,t,i),Q(e,t,i)]);if(!o)return null;r={...r,...o};const d=await K(r.image);r={...r,...c,...d};const{imageBase64:s,imageBytes:l}=$(r,a);r.image.bytes=l;const u=await Y(s);r.image.barcodeText=u;const h=await ee(r,a,s),m=await X(h);return r.image.data=m,r}(e,t,i,n,a).then(r)}function j(){return new Promise((e=>{AcuantJavascriptWebSdk.startImageWorker(e)}))}function V(){AcuantJavascriptWebSdk.endImageWorker()}function q(e,t,i){return new Promise((a=>{AcuantJavascriptWebSdk.crop(e,t,i,{onSuccess:({image:e,dpi:t,cardType:i})=>a({image:e,dpi:t,cardType:i}),onFail:a})}))}function Q(e,t,i){return new Promise((a=>{AcuantJavascriptWebSdk.moire(e,t,i,{onSuccess:(e,t)=>a({moire:e,moireraw:t}),onFail:()=>a({moire:-1,moireraw:-1})})}))}function K(e){return new Promise((t=>{AcuantJavascriptWebSdk.metrics(e,e.width,e.height,{onSuccess:(e,i)=>t({sharpness:e,glare:i}),onFail:()=>t({sharpness:-1,glare:-1})})}))}function X(e){return new Promise((t=>{const i=function(e){const t=window.atob(e.split("base64,")[1]),i=t.length,a=new Uint8Array(new ArrayBuffer(i));for(let e=0;et("data:image/jpeg;base64,"+ae(e)),onFail:t})}))}async function Y(e){if(!document.getElementById(AcuantJavascriptWebSdk.BARCODE_READER_ID))return null;try{return await function(e){let t=e.split(","),i=t[0].match(/:(.*?);/)[1],a=atob(t[1]),n=a.length,r=new Uint8Array(n);for(;n--;)r[n]=a.charCodeAt(n);const o=new File([r],"imageFile",{type:i});return new Html5Qrcode(AcuantJavascriptWebSdk.BARCODE_READER_ID,{formatsToSupport:[Html5QrcodeSupportedFormats.PDF_417]}).scanFile(o,!1)}(e)}catch{return null}}function Z(){if(!f||p)return;if(0==e.videoWidth)return void ie();p=!0;let t=Math.max(e.videoWidth,e.videoHeight),i=Math.min(e.videoWidth,e.videoHeight),a=0,s=0;if(t>d&&i>500?e.videoWidth>=e.videoHeight?(E.frameScale=d/e.videoWidth,s=d,a=e.videoHeight*E.frameScale):(E.frameScale=d/e.videoHeight,s=e.videoWidth*E.frameScale,a=d):(E.frameScale=1,s=e.videoWidth,a=e.videoHeight),s==n.width&&a==n.height||(n.width=s,n.height=a),f){let t;try{r.drawImage(e,0,0,e.videoWidth,e.videoHeight,0,0,n.width,n.height),t=r.getImageData(0,0,n.width,n.height),r.clearRect(0,0,n.width,n.height)}catch(e){return void ie()}!function(t,i,a){AcuantJavascriptWebSdk.detect(t,i,a,{onSuccess:function(t){if(!n||!e||e.paused||e.ended)return;t.points.forEach((t=>{void 0!==t.x&&void 0!==t.y&&(t.x=t.x/E.frameScale*e.width/e.videoWidth,t.y=t.y/E.frameScale*e.height/e.videoHeight)}));const i=Math.min(t.dimensions.width,t.dimensions.height)/Math.min(n.width,n.height),a=Math.max(t.dimensions.width,t.dimensions.height)/Math.max(n.width,n.height),r=2==t.type;let d=.8,s=.85,l=.6,u=.65;r&&(d=.9,s=.95),C()&&(l=.65,u=.7,L()?r?(d=.72,s=.77,l=.22,u=.28):(d=.41,s=.45,l=.22,u=.28):r&&(d=.95,s=1,l=.7,u=.75));const m=!t.isCorrectAspectRatio||i=d||a>=s;t.type===c.NONE?t.state=o.NO_DOCUMENT:t.state=g?o.BIG_DOCUMENT:m?o.SMALL_DOCUMENT:o.GOOD_DOCUMENT,h(t),p=!1},onFail:function(){if(!n||!e||e.paused||e.ended)return;let t={};t.state=o.NO_DOCUMENT,h(t),p=!1}})}(t,n.width,n.height)}}function $({image:e,cardType:t,isPortraitOrientation:i},a){n&&r||(n=document.createElement("canvas"),r=n.getContext("2d")),n.width=e.width,n.height=e.height;let o=r.createImageData(e.width,e.height);!function(e,t){for(let i=0;i{AcuantJavascriptWebSdk.getCvmlVersion({onSuccess:t=>{e(t)},onFail:()=>{e("unknown")}})})),s=JSON.stringify({cvml:{cropping:{iscropped:!0,dpi:e,idsize:2===t?"ID3":"ID1",elapsed:-1},sharpness:{normalized:i,elapsed:-1},moire:{normalized:n,raw:r,elapsed:-1},glare:{normalized:a,elapsed:-1},version:d},device:{version:te(),capturetype:o}});return AcuantJavascriptWebSdk.addMetadata(c,{imageDescription:s,dateTimeOriginal:(new Date).toUTCString()})}function te(){const e=navigator.userAgent;let t,i=e.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(i[1])?(t=/\brv[ :]+(\d+)/g.exec(e)||[],"IE "+(t[1]||"")):"Chrome"===i[1]&&(t=e.match(/\b(OPR|Edge)\/(\d+)/),null!=t)?t.slice(1).join(" ").replace("OPR","Opera"):(i=i[2]?[i[1],i[2]]:[navigator.appName,navigator.appVersion,"-?"],null!=(t=e.match(/version\/(\d+)/i))&&i.splice(1,1,t[1]),i.join(" "))}function ie(){N()||navigator.maxTouchPoints&&navigator.maxTouchPoints>=2&&/MacIntel/.test(navigator.platform)?A("Camera capture failed due to unexpected sequence break. This usually indicates the camera closed or froze unexpectedly. In iOS 15+ this is intermittently occurs due to a GPU Highwater failure. Swap to manual capture until the user fully reloads the browser. Attempting to continue to use live capture can lead to further Highwater errors and can cause to OS to cut off the webpage.",AcuantJavascriptWebSdk.SEQUENCE_BREAK_CODE):A("Camera capture failed due to unexpected sequence break. This usually indicates the camera closed or froze unexpectedly. Swap to manual capture until the user fully reloads the browser.",AcuantJavascriptWebSdk.SEQUENCE_BREAK_CODE)}function ae(e){let t="";const i=new Uint8Array(e),a=i.byteLength;for(let e=0;e=e);)++r;if(16(a=224==(240&a)?(15&a)<<12|o<<6|i:(7&a)<<18|o<<12|i<<6|63&t[n++])?e+=String.fromCharCode(a):(a-=65536,e+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else e+=String.fromCharCode(a)}return e}function T(t,n){return t?k(U,t,n):""}function S(t,n,r,e){if(!(0=i)i=65536+((1023&i)<<10)|1023&t.charCodeAt(++o);if(127>=i){if(r>=e)break;n[r++]=i}else{if(2047>=i){if(r+1>=e)break;n[r++]=192|i>>6}else{if(65535>=i){if(r+2>=e)break;n[r++]=224|i>>12}else{if(r+3>=e)break;n[r++]=240|i>>18,n[r++]=128|i>>12&63}n[r++]=128|i>>6&63}n[r++]=128|63&i}}return n[r]=0,r-a}function j(t){for(var n=0,r=0;r=e&&(e=65536+((1023&e)<<10)|1023&t.charCodeAt(++r)),127>=e?++n:n=2047>=e?n+2:65535>=e?n+3:n+4}return n}var R,C,U,W,E,P,Q,I,x,V="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function M(t,n){for(var r=t>>1,e=r+n/2;!(r>=e)&&E[r];)++r;if(32<(r<<=1)-t&&V)return V.decode(U.subarray(t,r));for(r="",e=0;!(e>=n/2);++e){var a=W[t+2*e>>1];if(0==a)break;r+=String.fromCharCode(a)}return r}function D(t,n,r){if(void 0===r&&(r=2147483647),2>r)return 0;var e=n;r=(r-=2)<2*t.length?r/2:t.length;for(var a=0;a>1]=t.charCodeAt(a),n+=2;return W[n>>1]=0,n-e}function F(t){return 2*t.length}function z(t,n){for(var r=0,e="";!(r>=n/4);){var a=P[t+4*r>>2];if(0==a)break;++r,65536<=a?(a-=65536,e+=String.fromCharCode(55296|a>>10,56320|1023&a)):e+=String.fromCharCode(a)}return e}function O(t,n,r){if(void 0===r&&(r=2147483647),4>r)return 0;var e=n;r=e+r-4;for(var a=0;a=o)o=65536+((1023&o)<<10)|1023&t.charCodeAt(++a);if(P[n>>2]=o,(n+=4)+4>r)break}return P[n>>2]=0,n-e}function q(t){for(var n=0,r=0;r=e&&++r,n+=4}return n}function B(){var t=g.buffer;R=t,r.HEAP8=C=new Int8Array(t),r.HEAP16=W=new Int16Array(t),r.HEAP32=P=new Int32Array(t),r.HEAPU8=U=new Uint8Array(t),r.HEAPU16=E=new Uint16Array(t),r.HEAPU32=Q=new Uint32Array(t),r.HEAPF32=I=new Float32Array(t),r.HEAPF64=x=new Float64Array(t)}var H,X=[],$=[],N=[];function Y(){var t=r.preRun.shift();X.unshift(t)}var Z,L,G,J=0,K=null,tt=null;function nt(t){throw r.onAbort&&r.onAbort(t),w(t),A=!0,t=new WebAssembly.RuntimeError("abort("+t+"). Build with -s ASSERTIONS=1 for more info."),a(t),t}function rt(){return Z.startsWith("data:application/octet-stream;base64,")}if(r.preloadedImages={},r.preloadedAudios={},Z="AcuantImageService.wasm",!rt()){var et=Z;Z=r.locateFile?r.locateFile(et,v):v+et}function at(){var t=Z;try{if(t==Z&&y)return new Uint8Array(y);if(c)return c(t);throw"both async and sync fetching of the wasm failed"}catch(t){nt(t)}}function ot(t){for(;0>2]=t},this.eb=function(){return P[this.Sa+4>>2]},this.Sb=function(t){P[this.Sa+8>>2]=t},this.Gb=function(){return P[this.Sa+8>>2]},this.Tb=function(){P[this.Sa>>2]=0},this.Ab=function(t){C[this.Sa+12>>0]=t?1:0},this.Fb=function(){return 0!=C[this.Sa+12>>0]},this.Bb=function(){C[this.Sa+13>>0]=0},this.Ib=function(){return 0!=C[this.Sa+13>>0]},this.Kb=function(t,n){this.Ub(t),this.Sb(n),this.Tb(),this.Ab(!1),this.Bb()},this.Cb=function(){P[this.Sa>>2]=P[this.Sa>>2]+1},this.Pb=function(){var t=P[this.Sa>>2];return P[this.Sa>>2]=t-1,1===t}}function ut(t){this.vb=function(){Cn(this.Sa),this.Sa=0},this.ob=function(t){P[this.Sa>>2]=t},this.cb=function(){return P[this.Sa>>2]},this.hb=function(t){P[this.Sa+4>>2]=t},this.jb=function(){return this.Sa+4},this.Eb=function(){return P[this.Sa+4>>2]},this.Hb=function(){if(Vn(this.kb().eb()))return P[this.cb()>>2];var t=this.Eb();return 0!==t?t:this.cb()},this.kb=function(){return new it(this.cb())},void 0===t?(this.Sa=Rn(8),this.hb(0)):this.Sa=t}var ft=[],ct=0;function st(t){return Cn(new it(t).Sa)}function lt(t,n){for(var r=0,e=t.length-1;0<=e;e--){var a=t[e];"."===a?t.splice(e,1):".."===a?(t.splice(e,1),r++):r&&(t.splice(e,1),r--)}if(n)for(;r;r--)t.unshift("..");return t}function ht(t){var n="/"===t.charAt(0),r="/"===t.substr(-1);return(t=lt(t.split("/").filter((function(t){return!!t})),!n).join("/"))||n||(t="."),t&&r&&(t+="/"),(n?"/":"")+t}function pt(t){var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1);return t=n[0],n=n[1],t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."}function dt(t){if("/"===t)return"/";var n=(t=(t=ht(t)).replace(/\/$/,"")).lastIndexOf("/");return-1===n?t:t.substr(n+1)}function vt(){for(var t="",n=!1,r=arguments.length-1;-1<=r&&!n;r--){if("string"!=typeof(n=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";t=n+"/"+t,n="/"===n.charAt(0)}return(n?"/":"")+(t=lt(t.split("/").filter((function(t){return!!t})),!n).join("/"))||"."}var mt=[];function wt(t,n){mt[t]={input:[],output:[],ab:n},qt(t,yt)}var yt={open:function(t){var n=mt[t.node.rdev];if(!n)throw new Ct(43);t.tty=n,t.seekable=!1},close:function(t){t.tty.ab.flush(t.tty)},flush:function(t){t.tty.ab.flush(t.tty)},read:function(t,n,r,e){if(!t.tty||!t.tty.ab.wb)throw new Ct(60);for(var a=0,o=0;o=n||(n=Math.max(n,r*(1048576>r?2:1.125)>>>0),0!=r&&(n=Math.max(n,256)),r=t.Qa,t.Qa=new Uint8Array(n),0=t.node.Ua)return 0;if(8<(t=Math.min(t.node.Ua-a,e))&&o.subarray)n.set(o.subarray(a,a+t),r);else for(e=0;en)throw new Ct(28);return n},pb:function(t,n,r){At.sb(t.node,n+r),t.node.Ua=Math.max(t.node.Ua,n+r)},xb:function(t,n,r,e,a,o){if(0!==n)throw new Ct(28);if(32768!=(61440&t.node.mode))throw new Ct(43);if(t=t.node.Qa,2&o||t.buffer!==R){if((0>>0)%jt.length}function Qt(t,n){var r;if(r=(r=Mt(t,"x"))?r:t.Ra.lookup?0:2)throw new Ct(r,t);for(r=jt[Pt(t.id,n)];r;r=r.Nb){var e=r.name;if(r.parent.id===t.id&&e===n)return r}return t.Ra.lookup(t,n)}function It(t,n,r,e){return n=Pt((t=new kn(t,n,r,e)).parent.id,t.name),t.Nb=jt[n],jt[n]=t}var xt={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090};function Vt(t){var n=["r","w","rw"][3&t];return 512&t&&(n+="w"),n}function Mt(t,n){return Rt?0:!n.includes("r")||292&t.mode?n.includes("w")&&!(146&t.mode)||n.includes("x")&&!(73&t.mode)?2:0:2}function Dt(t,n){try{return Qt(t,n),20}catch(t){}return Mt(t,"wx")}function Ft(t,n){tn||((tn=function(){}).prototype={});var r,e=new tn;for(r in t)e[r]=t[r];return t=e,n=function(t){for(t=t||0;t<=4096;t++)if(!Tt[t])return t;throw new Ct(33)}(n),t.fd=n,Tt[n]=t}var zt,Ot={open:function(t){t.Ta=kt[t.node.rdev].Ta,t.Ta.open&&t.Ta.open(t)},$a:function(){throw new Ct(70)}};function qt(t,n){kt[t]={Ta:n}}function Bt(t,n){var r="/"===n,e=!n;if(r&&_t)throw new Ct(10);if(!r&&!e){var a=Wt(n,{ub:!1});if(n=a.path,(a=a.node).gb)throw new Ct(10);if(16384!=(61440&a.mode))throw new Ct(54)}n={type:t,$b:{},yb:n,Mb:[]},(t=t.Xa(n)).Xa=n,n.root=t,r?_t=t:a&&(a.gb=n,a.Xa&&a.Xa.Mb.push(n))}function Ht(t,n,r){var e=Wt(t,{parent:!0}).node;if(!(t=dt(t))||"."===t||".."===t)throw new Ct(28);var a=Dt(e,t);if(a)throw new Ct(a);if(!e.Ra.fb)throw new Ct(63);return e.Ra.fb(e,t,n,r)}function Xt(t){return Ht(t,16895,0)}function $t(t,n,r){void 0===r&&(r=n,n=438),Ht(t,8192|n,r)}function Nt(t,n){if(!vt(t))throw new Ct(44);var r=Wt(n,{parent:!0}).node;if(!r)throw new Ct(44);var e=Dt(r,n=dt(n));if(e)throw new Ct(e);if(!r.Ra.symlink)throw new Ct(63);r.Ra.symlink(r,n,t)}function Yt(t){if(!(t=Wt(t).node))throw new Ct(44);if(!t.Ra.readlink)throw new Ct(28);return vt(Et(t.parent),t.Ra.readlink(t))}function Zt(t,n,e,a){if(""===t)throw new Ct(44);if("string"==typeof n){var o=xt[n];if(void 0===o)throw Error("Unknown file open mode: "+n);n=o}if(e=64&n?4095&(void 0===e?438:e)|32768:0,"object"==typeof t)var i=t;else{t=ht(t);try{i=Wt(t,{tb:!(131072&n)}).node}catch(t){}}if(o=!1,64&n)if(i){if(128&n)throw new Ct(20)}else i=Ht(t,e,0),o=!0;if(!i)throw new Ct(44);if(8192==(61440&i.mode)&&(n&=-513),65536&n&&16384!=(61440&i.mode))throw new Ct(54);if(!o&&(e=i?40960==(61440&i.mode)?32:16384==(61440&i.mode)&&("r"!==Vt(n)||512&n)?31:Mt(i,Vt(n)):44))throw new Ct(e);if(512&n){if(!(e="string"==typeof(e=i)?Wt(e,{tb:!0}).node:e).Ra.Wa)throw new Ct(63);if(16384==(61440&e.mode))throw new Ct(31);if(32768!=(61440&e.mode))throw new Ct(28);if(o=Mt(e,"w"))throw new Ct(o);e.Ra.Wa(e,{size:0,timestamp:Date.now()})}return n&=-131713,(a=Ft({node:i,path:Et(i),flags:n,seekable:!0,position:0,Ta:i.Ta,Vb:[],error:!1},a)).Ta.open&&a.Ta.open(a),!r.logReadFiles||1&n||(nn||(nn={}),t in nn||(nn[t]=1)),a}function Lt(t,n,r){if(null===t.fd)throw new Ct(8);if(!t.seekable||!t.Ta.$a)throw new Ct(70);if(0!=r&&1!=r&&2!=r)throw new Ct(28);t.position=t.Ta.$a(t,n,r),t.Vb=[]}function Gt(){Ct||((Ct=function(t,n){this.node=n,this.Rb=function(t){this.Za=t},this.Rb(t),this.message="FS error"}).prototype=Error(),Ct.prototype.constructor=Ct,[44].forEach((function(t){Ut[t]=new Ct(t),Ut[t].stack=""})))}function Jt(t,n,r){t=ht("/dev/"+t);var e=function(t,n){var r=0;return t&&(r|=365),n&&(r|=146),r}(!!n,!!r);Kt||(Kt=64);var a=Kt++<<8|0;qt(a,{open:function(t){t.seekable=!1},close:function(){r&&r.buffer&&r.buffer.length&&r(10)},read:function(t,r,e,a){for(var o=0,i=0;i>2]}function on(t){if(!(t=Tt[t]))throw new Ct(8);return t}function un(t){switch(t){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+t)}}var fn=void 0;function cn(t){for(var n="";U[t];)n+=fn[U[t++]];return n}var sn={},ln={},hn={};function pn(t){var n=Error,r=function(t,n){if(void 0===t)t="_unknown";else{var r=(t=t.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);t=48<=r&&57>=r?"_"+t:t}return new Function("body","return function "+t+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(n)}(t,(function(n){this.name=t,this.message=n,void 0!==(n=Error(n).stack)&&(this.stack=this.toString()+"\n"+n.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var dn=void 0;function vn(t){throw new dn(t)}function mn(t,n,r){if(r=r||{},!("argPackAdvance"in n))throw new TypeError("registerType registeredInstance requires argPackAdvance");var e=n.name;if(t||vn('type "'+e+'" must have a positive integer typeid pointer'),ln.hasOwnProperty(t)){if(r.Jb)return;vn("Cannot register type '"+e+"' twice")}ln[t]=n,delete hn[t],sn.hasOwnProperty(t)&&(n=sn[t],delete sn[t],n.forEach((function(t){t()})))}var wn=[],yn=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function bn(t){return this.fromWireType(Q[t>>2])}function gn(t){if(null===t)return"null";var n=typeof t;return"object"===n||"array"===n||"function"===n?t.toString():""+t}function An(t,n){switch(n){case 2:return function(t){return this.fromWireType(I[t>>2])};case 3:return function(t){return this.fromWireType(x[t>>3])};default:throw new TypeError("Unknown float type: "+t)}}function _n(t,n,r){switch(n){case 0:return r?function(t){return C[t]}:function(t){return U[t]};case 1:return r?function(t){return W[t>>1]}:function(t){return E[t>>1]};case 2:return r?function(t){return P[t>>2]}:function(t){return Q[t>>2]};default:throw new TypeError("Unknown integer type: "+t)}}function kn(t,n,r,e){t||(t=this),this.parent=t,this.Xa=t.Xa,this.gb=null,this.id=St++,this.name=n,this.mode=r,this.Ra={},this.Ta={},this.rdev=e}Object.defineProperties(kn.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(t){t?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(t){t?this.mode|=146:this.mode&=-147}}}),Gt(),jt=Array(4096),Bt(At,"/"),Xt("/tmp"),Xt("/home"),Xt("/home/web_user"),function(){Xt("/dev"),qt(259,{read:function(){return 0},write:function(t,n,r,e){return e}}),$t("/dev/null",259),wt(1280,bt),wt(1536,gt),$t("/dev/tty",1280),$t("/dev/tty1",1536);var t=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}if(d)try{var n=require("crypto");return function(){return n.randomBytes(1)[0]}}catch(t){}return function(){nt("randomDevice")}}();Jt("random",t),Jt("urandom",t),Xt("/dev/shm"),Xt("/dev/shm/tmp")}(),function(){Xt("/proc");var t=Xt("/proc/self");Xt("/proc/self/fd"),Bt({Xa:function(){var n=It(t,"fd",16895,73);return n.Ra={lookup:function(t,n){var r=Tt[+n];if(!r)throw new Ct(8);return(t={parent:null,Xa:{yb:"fake"},Ra:{readlink:function(){return r.path}}}).parent=t}},n}},"/proc/self/fd")}();for(var Tn=Array(256),Sn=0;256>Sn;++Sn)Tn[Sn]=String.fromCharCode(Sn);fn=Tn,dn=r.BindingError=pn("BindingError"),r.InternalError=pn("InternalError"),r.count_emval_handles=function(){for(var t=0,n=5;na?-28:Zt(e.path,e.flags,0,a).fd;case 1:case 2:return 0;case 3:return e.flags;case 4:return a=an(),e.flags|=a,0;case 12:return a=an(),W[a+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return P[Wn()>>2]=28,-1;default:return-28}}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),-t.Za}},ma:function(t,n,r){en=r;try{var e=on(t);switch(n){case 21509:case 21505:return e.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return e.tty?0:-59;case 21519:if(!e.tty)return-59;var a=an();return P[a>>2]=0;case 21520:return e.tty?-28:-59;case 21531:if(t=a=an(),!e.Ta.Lb)throw new Ct(59);return e.Ta.Lb(e,n,t);case 21523:case 21524:return e.tty?0:-59;default:nt("bad ioctl syscall "+n)}}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),-t.Za}},na:function(t,n,r){en=r;try{return Zt(T(t),n,r?an():0).fd}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),-t.Za}},ha:function(){},pa:function(t,n,r,e,a){var o=un(r);mn(t,{name:n=cn(n),fromWireType:function(t){return!!t},toWireType:function(t,n){return n?e:a},argPackAdvance:8,readValueFromPointer:function(t){if(1===r)var e=C;else if(2===r)e=W;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+n);e=P}return this.fromWireType(e[t>>o])},bb:null})},oa:function(t,n){mn(t,{name:n=cn(n),fromWireType:function(t){var n=yn[t].value;return 4>>u}}var f=n.includes("unsigned");mn(t,{name:n,fromWireType:o,toWireType:function(t,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+gn(r)+'" to '+this.name);if(ra)throw new TypeError('Passing a number "'+gn(r)+'" from JS side to C/C++ side to an argument of type "'+n+'", which is outside the valid range ['+e+", "+a+"]!");return f?r>>>0:0|r},argPackAdvance:8,readValueFromPointer:_n(n,i,0!==e),bb:null})},r:function(t,n,r){function e(t){var n=Q;return new a(R,n[(t>>=2)+1],n[t])}var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][n];mn(t,{name:r=cn(r),fromWireType:e,argPackAdvance:8,readValueFromPointer:e},{Jb:!0})},T:function(t,n){var r="std::string"===(n=cn(n));mn(t,{name:n,fromWireType:function(t){var n=Q[t>>2];if(r)for(var e=t+4,a=0;a<=n;++a){var o=t+4+a;if(a==n||0==U[o]){if(e=T(e,o-e),void 0===i)var i=e;else i+=String.fromCharCode(0),i+=e;e=o+1}}else{for(i=Array(n),a=0;a>2]=a,r&&e)S(n,U,o+4,a+1);else if(e)for(e=0;e>2],o=i(),f=t+4,c=0;c<=a;++c){var s=t+4+c*n;c!=a&&0!=o[s>>u]||(f=e(f,s-f),void 0===r?r=f:(r+=String.fromCharCode(0),r+=f),f=s+n)}return Cn(t),r},toWireType:function(t,e){"string"!=typeof e&&vn("Cannot pass non-string to C++ string type "+r);var i=o(e),f=Rn(4+i+n);return Q[f>>2]=i>>u,a(e,f+4,i+n),null!==t&&t.push(Cn,f),f},argPackAdvance:8,readValueFromPointer:bn,bb:function(t){Cn(t)}})},qa:function(t,n){mn(t,{Zb:!0,name:n=cn(n),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},ka:function(){nt()},ia:function(t,n,r){U.copyWithin(t,n,n+r)},ja:function(t){var n=U.length;if(2147483648<(t>>>=0))return!1;for(var r=1;4>=r;r*=2){var e=n*(1+.2/r);e=Math.min(e,t+100663296),0<(e=Math.max(t,e))%65536&&(e+=65536-e%65536);t:{try{g.grow(Math.min(2147483648,e)-R.byteLength+65535>>>16),B();var a=1;break t}catch(t){}a=void 0}if(a)return!0}return!1},R:function(t){try{var n=on(t);if(null===n.fd)throw new Ct(8);n.lb&&(n.lb=null);try{n.Ta.close&&n.Ta.close(n)}catch(t){throw t}finally{Tt[n.fd]=null}return n.fd=null,0}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},la:function(t,n,r,e){try{t:{for(var a=on(t),o=t=0;o>2],u=a,f=P[n+8*o>>2],c=i,s=void 0,l=C;if(0>c||0>s)throw new Ct(28);if(null===u.fd)throw new Ct(8);if(1==(2097155&u.flags))throw new Ct(8);if(16384==(61440&u.node.mode))throw new Ct(31);if(!u.Ta.read)throw new Ct(28);var h=void 0!==s;if(h){if(!u.seekable)throw new Ct(70)}else s=u.position;var p=u.Ta.read(u,l,f,c,s);h||(u.position+=p);var d=p;if(0>d){var v=-1;break t}if(t+=d,d>2]=v,0}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},ga:function(t,n,r,e,a){try{var o=on(t);return-9007199254740992>=(t=4294967296*r+(n>>>0))||9007199254740992<=t?-61:(Lt(o,t,e),G=[o.position>>>0,(L=o.position,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)],P[a>>2]=G[0],P[a+4>>2]=G[1],o.lb&&0===t&&0===e&&(o.lb=null),0)}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},P:function(t,n,r,e){try{t:{for(var a=on(t),o=t=0;o>2],f=P[n+(8*o+4)>>2],c=void 0,s=C;if(0>f||0>c)throw new Ct(28);if(null===i.fd)throw new Ct(8);if(0==(2097155&i.flags))throw new Ct(8);if(16384==(61440&i.node.mode))throw new Ct(31);if(!i.Ta.write)throw new Ct(28);i.seekable&&1024&i.flags&&Lt(i,0,2);var l=void 0!==c;if(l){if(!i.seekable)throw new Ct(70)}else c=i.position;var h=i.Ta.write(i,s,u,f,c,void 0);l||(i.position+=h);var p=h;if(0>p){var d=-1;break t}t+=p}d=t}return P[e>>2]=d,0}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},b:function(){return b},N:function(t,n){var r=En();try{return H.get(t)(n)}catch(t){if(Pn(r),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},L:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ta:function(t,n,r,e){var a=En();try{return H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},Z:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},sa:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},$:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},F:function(t,n,r,e,a,o,i,u){var f=En();try{return H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},m:function(t,n){var r=En();try{return H.get(t)(n)}catch(t){if(Pn(r),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},H:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},O:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ba:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},a:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},C:function(t,n,r,e){var a=En();try{return H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ua:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},X:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ca:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},j:function(t,n,r,e){var a=En();try{return H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},U:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},i:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},aa:function(t,n,r,e,a,o,i){var u=En();try{return H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},A:function(t,n,r,e,a,o,i){var u=En();try{return H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},u:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},_:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{return H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},v:function(t,n,r,e,a,o,i){var u=En();try{return H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},fa:function(t,n,r,e,a,o,i,u){var f=En();try{return H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},w:function(t,n,r,e,a,o,i,u){var f=En();try{return H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},y:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{return H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},D:function(t,n,r,e,a,o,i,u,f,c,s,l,h){var p=En();try{return H.get(t)(n,r,e,a,o,i,u,f,c,s,l,h)}catch(t){if(Pn(p),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},I:function(t){var n=En();try{H.get(t)()}catch(t){if(Pn(n),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},g:function(t,n){var r=En();try{H.get(t)(n)}catch(t){if(Pn(r),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},da:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},V:function(t,n,r){var e=En();try{H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},wa:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},k:function(t,n,r){var e=En();try{H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},l:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ra:function(t,n,r,e,a,o,i,u){var f=En();try{H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},B:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},Y:function(t,n,r,e,a,o){var i=En();try{H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},f:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},va:function(t,n,r,e,a,o){var i=En();try{H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},h:function(t,n,r,e,a){var o=En();try{H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},q:function(t,n,r,e,a,o){var i=En();try{H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},W:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},s:function(t,n,r,e,a,o,i){var u=En();try{H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},p:function(t,n,r,e,a,o,i,u){var f=En();try{H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},G:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},E:function(t){return t}};!function(){function t(t){r.asm=t.exports,g=r.asm.xa,B(),H=r.asm.Ea,$.unshift(r.asm.ya),J--,r.monitorRunDependencies&&r.monitorRunDependencies(J),0==J&&(null!==K&&(clearInterval(K),K=null),tt&&(t=tt,tt=null,t()))}function n(n){t(n.instance)}function e(t){return function(){if(!y&&(h||p)){if("function"==typeof fetch&&!Z.startsWith("file://"))return fetch(Z,{credentials:"same-origin"}).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+Z+"'";return t.arrayBuffer()})).catch((function(){return at()}));if(f)return new Promise((function(t,n){f(Z,(function(n){t(new Uint8Array(n))}),n)}))}return Promise.resolve().then((function(){return at()}))}().then((function(t){return WebAssembly.instantiate(t,o)})).then((function(t){return t})).then(t,(function(t){w("failed to asynchronously prepare wasm: "+t),nt(t)}))}var o={a:jn};if(J++,r.monitorRunDependencies&&r.monitorRunDependencies(J),r.instantiateWasm)try{return r.instantiateWasm(o,t)}catch(t){return w("Module.instantiateWasm callback failed with error: "+t),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||rt()||Z.startsWith("file://")||"function"!=typeof fetch?e(n):fetch(Z,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,o).then(n,(function(t){return w("wasm streaming compile failed: "+t),w("falling back to ArrayBuffer instantiation"),e(n)}))}))).catch(a)}(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.ya).apply(null,arguments)},r._acuantDetect=function(){return(r._acuantDetect=r.asm.za).apply(null,arguments)},r._acuantCrop=function(){return(r._acuantCrop=r.asm.Aa).apply(null,arguments)},r._acuantSign=function(){return(r._acuantSign=r.asm.Ba).apply(null,arguments)},r._acuantVerify=function(){return(r._acuantVerify=r.asm.Ca).apply(null,arguments)},r._getAcuantCVMLVersion=function(){return(r._getAcuantCVMLVersion=r.asm.Da).apply(null,arguments)};var Rn=r._malloc=function(){return(Rn=r._malloc=r.asm.Fa).apply(null,arguments)},Cn=r._free=function(){return(Cn=r._free=r.asm.Ga).apply(null,arguments)};r.___getTypeName=function(){return(r.___getTypeName=r.asm.Ha).apply(null,arguments)},r.___embind_register_native_and_builtin_types=function(){return(r.___embind_register_native_and_builtin_types=r.asm.Ia).apply(null,arguments)};var Un,Wn=r.___errno_location=function(){return(Wn=r.___errno_location=r.asm.Ja).apply(null,arguments)},En=r.stackSave=function(){return(En=r.stackSave=r.asm.Ka).apply(null,arguments)},Pn=r.stackRestore=function(){return(Pn=r.stackRestore=r.asm.La).apply(null,arguments)},Qn=r.stackAlloc=function(){return(Qn=r.stackAlloc=r.asm.Ma).apply(null,arguments)},In=r._setThrew=function(){return(In=r._setThrew=r.asm.Na).apply(null,arguments)},xn=r.___cxa_can_catch=function(){return(xn=r.___cxa_can_catch=r.asm.Oa).apply(null,arguments)},Vn=r.___cxa_is_pointer_type=function(){return(Vn=r.___cxa_is_pointer_type=r.asm.Pa).apply(null,arguments)};function Mn(){function t(){if(!Un&&(Un=!0,r.calledRun=!0,!A)){if(r.noFSInit||zt||(zt=!0,Gt(),r.stdin=r.stdin,r.stdout=r.stdout,r.stderr=r.stderr,r.stdin?Jt("stdin",r.stdin):Nt("/dev/tty","/dev/stdin"),r.stdout?Jt("stdout",null,r.stdout):Nt("/dev/tty","/dev/stdout"),r.stderr?Jt("stderr",null,r.stderr):Nt("/dev/tty1","/dev/stderr"),Zt("/dev/stdin",0),Zt("/dev/stdout",1),Zt("/dev/stderr",1)),Rt=!1,ot($),e(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var t=r.postRun.shift();N.unshift(t)}ot(N)}}if(!(0>0];case"i16":return W[t>>1];case"i32":case"i64":return P[t>>2];case"float":return I[t>>2];case"double":return x[t>>3];default:nt("invalid type for getValue: "+n)}return null},tt=function t(){Un||Mn(),Un||(tt=t)},r.run=Mn,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);0{function t(t,a,r,n,i){let s={func:"crop"};if(r>=0){const o=new ArrayBuffer(a);let l=new Uint8Array(o);l.set(e.HEAPU8.subarray(t,t+a),0),s.imgData=l,s.width=r,s.height=n,s.type=i}else switch(r){case-1:s.error="Runtime error.";break;case-2:s.error="Detect (for cropping) did not return OK";break;case-3:s.error="Crop did not return OK";break;default:s.error="Unknown Error Occured"}s&&s.imgData&&s.imgData.buffer?postMessage(s,[s.imgData.buffer]):postMessage(s)}function a(e,t,a,r,n,i,s,o,l){let c={func:"detect"};if(t>=0)c.type=e,c.x1=t,c.y1=a,c.x2=r,c.y2=n,c.x3=i,c.y3=s,c.x4=o,c.y4=l;else switch(t){case-1:c.error="Runtime error.";break;case-2:c.error="Detect did not return OK";break;default:c.error="Unknown Error Occured"}postMessage(c)}function r(t,a){let r={func:"sign"};if(t){const n=new ArrayBuffer(a);let i=new Uint8Array(n);i.set(e.HEAPU8.subarray(t,t+a),0),r.imgData=i}else switch(a){case-1:r.error="Failed to sign image: SIGN_PARSE_ERROR";break;case-2:r.error="Failed to sign image: SIGN_CANNOT_SIGN";break;case-3:r.error="Failed to sign image: SIGN_HASH_ERROR";break;default:r.error="Failed to sign image: UNEXPECTED"}r&&r.imgData&&r.imgData.buffer?postMessage(r,[r.imgData.buffer]):postMessage(r)}function n(e){postMessage({func:"verify",result:e})}function i(t){null!=t&&(e._free(t),t=null)}function s(t){let a=e._malloc(t.length*t.BYTES_PER_ELEMENT);return e.HEAPU8.set(t,a),a}onmessage=o=>{if(o&&o.data)if("crop"===o.data.func){let a=o.data.data;if(a.imgData&&a.width&&a.height){let r=s(a.imgData);const n=e.ccall("acuantCrop","number",["number","number","number"],[r,a.width,a.height]);let o=[];for(let t=0;t<5;t++)o[t]=e.getValue(n+4*t,"i32");t(o[0],o[1],o[2],o[3],o[4]),i(r)}else console.error("missing params"),t(-1,-1,-1,-1)}else if("detect"===o.data.func){let t=o.data.data;if(t.imgData&&t.width&&t.height){let r=s(t.imgData);const n=e.ccall("acuantDetect","number",["number","number","number"],[r,t.width,t.height]);let o=[];for(let t=0;t<9;t++)o[t]=e.getValue(n+4*t,"i32");a(o[0],o[1],o[2],o[3],o[4],o[5],o[6],o[7],o[8]),i(r)}else console.error("missing params"),a(-1,-1,-1,-1,-1,-1,-1,-1,-1)}else if("sign"===o.data.func){let t=o.data.data;if(t.imgData){let a=s(t.imgData);const n=e.ccall("acuantSign","number",["number","number"],[a,t.imgData.byteLength]);let o=[];for(let t=0;t<2;t++)o[t]=e.getValue(n+4*t,"i32");i(a),r(o[0],o[1])}else console.error("missing params"),r(null,-1)}else if("verify"==o.data.func){let t=o.data.data;if(t.imgData){let a=s(t.imgData);const r=e.ccall("acuantVerify","boolean",["number","number"],[a,t.imgData.byteLength]);i(a),n(r)}else console.log("missing params"),n(null)}else if("getCvmlVersion"===o.data.func){!function(e){postMessage({func:"getCvmlVersion",cvmlVersion:e})}(e.ccall("getAcuantCVMLVersion","string",[],[])||"")}else console.error("called with no func specified")},postMessage({imageWorker:"started"})})); \ No newline at end of file diff --git a/public/acuant/11.9.2/AcuantInitializerService.min.js b/public/acuant/11.9.2/AcuantInitializerService.min.js new file mode 100644 index 00000000000..70d1f50c0f8 --- /dev/null +++ b/public/acuant/11.9.2/AcuantInitializerService.min.js @@ -0,0 +1 @@ +var AcuantInitializerModule=function(){var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(e=e||__filename),function(t){var r,n,o=void 0!==(t=t||{})?t:{};o.ready=new Promise((function(e,t){r=e,n=t})),Object.getOwnPropertyDescriptor(o.ready,"_initialize")||(Object.defineProperty(o.ready,"_initialize",{configurable:!0,get:function(){je("You are getting _initialize on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_initialize",{configurable:!0,set:function(){je("You are setting _initialize on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_initializeWithToken")||(Object.defineProperty(o.ready,"_initializeWithToken",{configurable:!0,get:function(){je("You are getting _initializeWithToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_initializeWithToken",{configurable:!0,set:function(){je("You are setting _initializeWithToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_emscripten_stack_get_end")||(Object.defineProperty(o.ready,"_emscripten_stack_get_end",{configurable:!0,get:function(){je("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_emscripten_stack_get_end",{configurable:!0,set:function(){je("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_emscripten_stack_get_free")||(Object.defineProperty(o.ready,"_emscripten_stack_get_free",{configurable:!0,get:function(){je("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_emscripten_stack_get_free",{configurable:!0,set:function(){je("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_emscripten_stack_init")||(Object.defineProperty(o.ready,"_emscripten_stack_init",{configurable:!0,get:function(){je("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_emscripten_stack_init",{configurable:!0,set:function(){je("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_stackSave")||(Object.defineProperty(o.ready,"_stackSave",{configurable:!0,get:function(){je("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_stackSave",{configurable:!0,set:function(){je("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_stackRestore")||(Object.defineProperty(o.ready,"_stackRestore",{configurable:!0,get:function(){je("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_stackRestore",{configurable:!0,set:function(){je("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_stackAlloc")||(Object.defineProperty(o.ready,"_stackAlloc",{configurable:!0,get:function(){je("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_stackAlloc",{configurable:!0,set:function(){je("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___wasm_call_ctors")||(Object.defineProperty(o.ready,"___wasm_call_ctors",{configurable:!0,get:function(){je("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___wasm_call_ctors",{configurable:!0,set:function(){je("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_fflush")||(Object.defineProperty(o.ready,"_fflush",{configurable:!0,get:function(){je("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_fflush",{configurable:!0,set:function(){je("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___errno_location")||(Object.defineProperty(o.ready,"___errno_location",{configurable:!0,get:function(){je("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___errno_location",{configurable:!0,set:function(){je("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_malloc")||(Object.defineProperty(o.ready,"_malloc",{configurable:!0,get:function(){je("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_malloc",{configurable:!0,set:function(){je("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_free")||(Object.defineProperty(o.ready,"_free",{configurable:!0,get:function(){je("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_free",{configurable:!0,set:function(){je("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___cxa_is_pointer_type")||(Object.defineProperty(o.ready,"___cxa_is_pointer_type",{configurable:!0,get:function(){je("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___cxa_is_pointer_type",{configurable:!0,set:function(){je("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___cxa_can_catch")||(Object.defineProperty(o.ready,"___cxa_can_catch",{configurable:!0,get:function(){je("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___cxa_can_catch",{configurable:!0,set:function(){je("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_setThrew")||(Object.defineProperty(o.ready,"_setThrew",{configurable:!0,get:function(){je("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_setThrew",{configurable:!0,set:function(){je("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_getCreds")||(Object.defineProperty(o.ready,"_getCreds",{configurable:!0,get:function(){je("You are getting _getCreds on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_getCreds",{configurable:!0,set:function(){je("You are setting _getCreds on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_getOauthToken")||(Object.defineProperty(o.ready,"_getOauthToken",{configurable:!0,get:function(){je("You are getting _getOauthToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_getOauthToken",{configurable:!0,set:function(){je("You are setting _getOauthToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_getEndpoint")||(Object.defineProperty(o.ready,"_getEndpoint",{configurable:!0,get:function(){je("You are getting _getEndpoint on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_getEndpoint",{configurable:!0,set:function(){je("You are setting _getEndpoint on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_callback")||(Object.defineProperty(o.ready,"_callback",{configurable:!0,get:function(){je("You are getting _callback on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_callback",{configurable:!0,set:function(){je("You are setting _callback on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_initialize_internal")||(Object.defineProperty(o.ready,"_initialize_internal",{configurable:!0,get:function(){je("You are getting _initialize_internal on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_initialize_internal",{configurable:!0,set:function(){je("You are setting _initialize_internal on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___getTypeName")||(Object.defineProperty(o.ready,"___getTypeName",{configurable:!0,get:function(){je("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___getTypeName",{configurable:!0,set:function(){je("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(o.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get:function(){je("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set:function(){je("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"onRuntimeInitialized")||(Object.defineProperty(o.ready,"onRuntimeInitialized",{configurable:!0,get:function(){je("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"onRuntimeInitialized",{configurable:!0,set:function(){je("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var i,a={};for(i in o)o.hasOwnProperty(i)&&(a[i]=o[i]);var s=[],c="object"==typeof window,d="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,u=!c&&!p&&!d;if(o.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var l,E,O,f,_,g="";function T(e){return o.locateFile?o.locateFile(e,g):g+e}if(p){if("object"!=typeof process||"function"!=typeof require)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=d?require("path").dirname(g)+"/":__dirname+"/",l=function(e,t){return f||(f=require("fs")),_||(_=require("path")),e=_.normalize(e),f.readFileSync(e,t?null:"utf8")},O=function(e){var t=l(e,!0);return t.buffer||(t=new Uint8Array(t)),x(t.buffer),t},E=function(e,t,r){f||(f=require("fs")),_||(_=require("path")),e=_.normalize(e),f.readFile(e,(function(e,n){e?r(e):t(n.buffer)}))},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),s=process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof Ur))throw e})),process.on("unhandledRejection",je),function(e,t){if(De())throw process.exitCode=e,t;process.exit(e)},o.inspect=function(){return"[Emscripten Module object]"}}else if(u){if("object"==typeof process&&"function"==typeof require||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(l=function(e){return read(e)}),O=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(x("object"==typeof(t=read(e,"binary"))),t)},E=function(e,t,r){setTimeout((function(){t(O(e))}),0)},"undefined"!=typeof scriptArgs?s=scriptArgs:void 0!==arguments&&(s=arguments),"function"==typeof quit&&function(e){quit(e)},"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!c&&!d)throw new Error("environment detection error");if(d?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),e&&(g=e),g=0!==g.indexOf("blob:")?g.substr(0,g.lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");l=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(O=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),E=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)},function(e){document.title=e}}o.print||console.log.bind(console);var h=o.printErr||console.warn.bind(console);for(i in a)a.hasOwnProperty(i)&&(o[i]=a[i]);a=null,o.arguments&&(s=o.arguments),Object.getOwnPropertyDescriptor(o,"arguments")||Object.defineProperty(o,"arguments",{configurable:!0,get:function(){je("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),o.thisProgram&&o.thisProgram,Object.getOwnPropertyDescriptor(o,"thisProgram")||Object.defineProperty(o,"thisProgram",{configurable:!0,get:function(){je("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),o.quit&&o.quit,Object.getOwnPropertyDescriptor(o,"quit")||Object.defineProperty(o,"quit",{configurable:!0,get:function(){je("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),x(void 0===o.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.read,"Module.read option was removed (modify read_ in JS)"),x(void 0===o.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),x(void 0===o.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),x(void 0===o.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),x(void 0===o.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(o,"read")||Object.defineProperty(o,"read",{configurable:!0,get:function(){je("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(o,"readAsync")||Object.defineProperty(o,"readAsync",{configurable:!0,get:function(){je("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(o,"readBinary")||Object.defineProperty(o,"readBinary",{configurable:!0,get:function(){je("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(o,"setWindowTitle")||Object.defineProperty(o,"setWindowTitle",{configurable:!0,get:function(){je("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}});x(!u,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable.");function D(e){D.shown||(D.shown={}),D.shown[e]||(D.shown[e]=1,h(e))}function w(e,t){if("function"==typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},n={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},o=1;o=n);)++o;if(o-t>16&&e.subarray&&k)return k.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&d)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function Q(e,t){return e?X(Y,e,t):""}function C(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;s>1114111&&D("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o}function L(e,t,r){return x("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),C(e,Y,t,r)}function W(e){for(var t=0,r=0;r=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}var G,z,Y,B,V,Z,q,K,J,$="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function ee(e,t){x(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var r=e,n=r>>1,o=n+t/2;!(n>=o)&&V[n];)++n;if((r=n<<1)-e>32&&$)return $.decode(Y.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=B[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function te(e,t,r){if(x(t%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),x("number"==typeof r,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return B[t>>1]=0,t-n}function re(e){return 2*e.length}function ne(e,t){x(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var r=0,n="";!(r>=t/4);){var o=Z[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function oe(e,t,r){if(x(t%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),x("number"==typeof r,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(Z[t>>2]=a,(t+=4)+4>o)break}return Z[t>>2]=0,t-n}function ie(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t}function ae(e,t){x(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),z.set(e,t)}function se(e,t){return e%t>0&&(e+=t-e%t),e}function ce(e){G=e,o.HEAP8=z=new Int8Array(e),o.HEAP16=B=new Int16Array(e),o.HEAP32=Z=new Int32Array(e),o.HEAPU8=Y=new Uint8Array(e),o.HEAPU16=V=new Uint16Array(e),o.HEAPU32=q=new Uint32Array(e),o.HEAPF32=K=new Float32Array(e),o.HEAPF64=J=new Float64Array(e)}var de=5242880;o.TOTAL_STACK&&x(de===o.TOTAL_STACK,"the stack size can no longer be determined at runtime");var pe,ue=o.INITIAL_MEMORY||16777216;function le(){var e=Pr();x(0==(3&e)),q[1+(e>>2)]=34821223,q[2+(e>>2)]=2310721022,Z[0]=1668509029}function Ee(){if(!U){var e=Pr(),t=q[1+(e>>2)],r=q[2+(e>>2)];34821223==t&&2310721022==r||je("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+r.toString(16)+" "+t.toString(16)),1668509029!==Z[0]&&je("Runtime error: The application has corrupted its heap memory area (address zero)!")}}Object.getOwnPropertyDescriptor(o,"INITIAL_MEMORY")||Object.defineProperty(o,"INITIAL_MEMORY",{configurable:!0,get:function(){je("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),x(ue>=de,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+ue+"! (TOTAL_STACK="+de+")"),x("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),x(!o.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),x(16777216==ue,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"}();var Oe=[],fe=[],_e=[],ge=!1,Te=!1,he=0;function De(){return j||he>0}function we(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)Pe(o.preRun.shift());Ge(Oe)}function ye(){Ee(),x(!ge),ge=!0,Ge(fe)}function be(){if(Ee(),o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)Me(o.postRun.shift());Ge(_e)}function Pe(e){Oe.unshift(e)}function Re(e){fe.unshift(e)}function Me(e){_e.unshift(e)}x(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),x(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),x(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),x(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var me=0,Se=null,Ae=null,Fe={};function Ie(e){me++,o.monitorRunDependencies&&o.monitorRunDependencies(me),e?(x(!Fe[e]),Fe[e]=1,null===Se&&"undefined"!=typeof setInterval&&(Se=setInterval((function(){if(U)return clearInterval(Se),void(Se=null);var e=!1;for(var t in Fe)e||(e=!0,h("still waiting on run dependencies:")),h("dependency: "+t);e&&h("(end of list)")}),1e4))):h("warning: run dependency added without ID")}function ve(e){if(me--,o.monitorRunDependencies&&o.monitorRunDependencies(me),e?(x(Fe[e]),delete Fe[e]):h("warning: run dependency removed without ID"),0==me&&(null!==Se&&(clearInterval(Se),Se=null),Ae)){var t=Ae;Ae=null,t()}}function je(e){o.onAbort&&o.onAbort(e),h(e+=""),U=!0,1,e="abort("+e+") at "+Ve();var t=new WebAssembly.RuntimeError(e);throw n(t),t}o.preloadedImages={},o.preloadedAudios={};var Ue={error:function(){je("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1")},init:function(){Ue.error()},createDataFile:function(){Ue.error()},createPreloadedFile:function(){Ue.error()},createLazyFile:function(){Ue.error()},open:function(){Ue.error()},mkdev:function(){Ue.error()},registerDevice:function(){Ue.error()},analyzePath:function(){Ue.error()},loadFilesFromDB:function(){Ue.error()},ErrnoError:function(){Ue.error()}};o.FS_createDataFile=Ue.createDataFile,o.FS_createPreloadedFile=Ue.createPreloadedFile;var xe,Ne="data:application/octet-stream;base64,";function He(e){return e.startsWith(Ne)}function ke(e){return e.startsWith("file://")}function Xe(e,t){return function(){var r=e,n=t;return t||(n=o.asm),x(ge,"native function `"+r+"` called before runtime initialization"),x(!Te,"native function `"+r+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n[e]||x(n[e],"exported native function `"+r+"` not found"),n[e].apply(null,arguments)}}function Qe(e){try{if(e==xe&&S)return new Uint8Array(S);if(O)return O(e);throw"both async and sync fetching of the wasm failed"}catch(e){je(e)}}function Ce(){if(!S&&(c||d)){if("function"==typeof fetch&&!ke(xe))return fetch(xe,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+xe+"'";return e.arrayBuffer()})).catch((function(){return Qe(xe)}));if(E)return new Promise((function(e,t){E(xe,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Qe(xe)}))}function Le(){var e={env:gr,wasi_snapshot_preview1:gr};function t(e,t){var r=e.exports;o.asm=r,x(v=o.asm.memory,"memory not found in wasm exports"),ce(v.buffer),x(pe=o.asm.__indirect_function_table,"table not found in wasm exports"),Re(o.asm.__wasm_call_ctors),ve("wasm-instantiate")}Ie("wasm-instantiate");var r=o;function i(e){x(o===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(e.instance)}function a(t){return Ce().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){h("failed to asynchronously prepare wasm: "+e),ke(xe)&&h("warning: Loading from a file URI ("+xe+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),je(e)}))}if(o.instantiateWasm)try{return o.instantiateWasm(e,t)}catch(e){return h("Module.instantiateWasm callback failed with error: "+e),!1}return(S||"function"!=typeof WebAssembly.instantiateStreaming||He(xe)||ke(xe)||"function"!=typeof fetch?a(i):fetch(xe,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(i,(function(e){return h("wasm streaming compile failed: "+e),h("falling back to ArrayBuffer instantiation"),a(i)}))}))).catch(n),{}}He(xe="AcuantInitializerService.wasm")||(xe=T(xe));var We={3924:function(){let e=function(e){try{return JSON.parse(e)}catch(e){return}},r=function(r){let n=(""+r).split(".");if(3==n.length){let r=e(atob(n[0])),o=e(atob(n[1])),i=n[2];if(r&&o&&i&&r.kid&&r.alg&&o.sub&&o.iss&&o.exp&&o.iat){let e=Math.floor((new Date).getTime()/1e3);"string"==typeof r.kid&&"string"==typeof r.alg&&"string"==typeof o.sub&&o.sub.length>0&&"string"==typeof o.iss&&"number"==typeof o.exp&&o.exp>e&&"number"==typeof o.iat?t.callback(1):t.callback(5)}else t.callback(4)}else t.callback(3)};const n=t.getCreds(),o=t.getOauthToken(),i=t.getEndpoint();if(o)r(o);else{let o=new XMLHttpRequest;o.open("POST",i+"/oauth/token",!0),o.setRequestHeader("Authorization","Basic "+n),o.setRequestHeader("Content-type","application/json");let a={grant_type:"client_credentials"};o.responseType="text",o.send(JSON.stringify(a)),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||204===o.status){let n=e(o.responseText);n&&n.hasOwnProperty("access_token")?r(n.access_token):t.callback(2)}else t.callback(o.status)}}}};function Ge(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?pe.get(r)():pe.get(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(o)}}function ze(e){return D("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function Ye(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=ze(e);return e===t?e:t+" ["+e+"]"}))}function Be(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function Ve(){var e=Be();return o.extraStackTrace&&(e+="\n"+o.extraStackTrace()),Ye(e)}function Ze(e){return Tr(e+16)+16}function qe(e){this.excPtr=e,this.ptr=e-16,this.set_type=function(e){Z[this.ptr+4>>2]=e},this.get_type=function(){return Z[this.ptr+4>>2]},this.set_destructor=function(e){Z[this.ptr+8>>2]=e},this.get_destructor=function(){return Z[this.ptr+8>>2]},this.set_refcount=function(e){Z[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,z[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=z[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,z[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=z[this.ptr+13>>0]},this.init=function(e,t){this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=Z[this.ptr>>2];Z[this.ptr>>2]=e+1},this.release_ref=function(){var e=Z[this.ptr>>2];return Z[this.ptr>>2]=e-1,x(e>0),1===e}}function Ke(e){this.free=function(){Mr(this.ptr),this.ptr=0},this.set_base_ptr=function(e){Z[this.ptr>>2]=e},this.get_base_ptr=function(){return Z[this.ptr>>2]},this.set_adjusted_ptr=function(e){Z[this.ptr+4>>2]=e},this.get_adjusted_ptr_addr=function(){return this.ptr+4},this.get_adjusted_ptr=function(){return Z[this.ptr+4>>2]},this.get_exception_ptr=function(){if(Sr(this.get_exception_info().get_type()))return Z[this.get_base_ptr()>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.get_base_ptr()},this.get_exception_info=function(){return new qe(this.get_base_ptr())},void 0===e?(this.ptr=Tr(8),this.set_adjusted_ptr(0)):this.ptr=e}var Je=[];function $e(e){e.add_ref()}function et(e){var t=new Ke(e),r=t.get_exception_info();return r.get_caught()||(r.set_caught(!0)),r.set_rethrown(!1),Je.push(t),$e(r),t.get_exception_ptr()}var tt=0;function rt(e){try{return Mr(new qe(e).ptr)}catch(e){h("exception during cxa_free_exception: "+e)}}function nt(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&pe.get(t)(e.excPtr),rt(e.excPtr)}}function ot(){Rr(0),x(Je.length>0);var e=Je.pop();nt(e.get_exception_info()),e.free(),tt=0}function it(e){var t=new Ke(e),r=t.get_base_ptr();throw tt||(tt=r),t.free(),r}function at(){var e=tt;if(!e)return F(0),0;var t=new qe(e),r=t.get_type(),n=new Ke;if(n.set_base_ptr(e),n.set_adjusted_ptr(e),!r)return F(0),0|n.ptr;for(var o=Array.prototype.slice.call(arguments),i=0;i=gt&&t<=Tt?"_"+e:e}function Dt(e,t){return e=ht(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function wt(e,t){var r=Dt(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var yt=void 0;function bt(e){throw new yt(e)}var Pt=void 0;function Rt(e){throw new Pt(e)}function Mt(e,t,r){function n(t){var n=r(t);n.length!==e.length&&Rt("Mismatched type converter count");for(var o=0;o>i])},destructorFunction:null})}var At=[],Ft=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function It(e){e>4&&0==--Ft[e].refcount&&(Ft[e]=void 0,At.push(e))}function vt(){for(var e=0,t=5;t>2])}function Ht(e,t){mt(e,{name:t=Et(t),fromWireType:function(e){var t=Ft[e].value;return It(e),t},toWireType:function(e,t){return xt(t)},argPackAdvance:8,readValueFromPointer:Nt,destructorFunction:null})}function kt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Xt(e,t){switch(t){case 2:return function(e){return this.fromWireType(K[e>>2])};case 3:return function(e){return this.fromWireType(J[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Qt(e,t,r){var n=pt(r);mt(e,{name:t=Et(t),fromWireType:function(e){return e},toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+kt(t)+'" to '+this.name);return t},argPackAdvance:8,readValueFromPointer:Xt(t,n),destructorFunction:null})}function Ct(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=Dt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var n=new r,o=e.apply(n,t);return o instanceof Object?o:n}function Lt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Wt(e,t,r,n,o){var i=t.length;i<2&&bt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,s=!1,c=1;c0?", ":"")+u),l+=(d?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",s)l+="runDestructors(destructors);\n";else for(c=a?1:2;c>2)+n]);return r}function Bt(e,t,r){o.hasOwnProperty(e)||Rt("Replacing nonexistant public symbol"),void 0!==o[e].overloadTable&&void 0!==r?o[e].overloadTable[r]=t:(o[e]=t,o[e].argCount=r)}function Vt(e,t,r){x("dynCall_"+e in o,"bad function pointer type - no table for sig '"+e+"'"),r&&r.length?x(r.length===e.substring(1).replace(/j/g,"--").length):x(1==e.length);var n=o["dynCall_"+e];return r&&r.length?n.apply(null,[t].concat(r)):n.call(null,t)}function Zt(e,t,r){return e.includes("j")?Vt(e,t,r):(x(pe.get(t),"missing table entry in dynCall: "+t),pe.get(t).apply(null,r))}function qt(e,t){x(e.includes("j"),"getDynCaller should only be called with i64 sigs");var r=[];return function(){r.length=arguments.length;for(var n=0;n>1]}:function(e){return V[e>>1]};case 2:return r?function(e){return Z[e>>2]}:function(e){return q[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function nr(e,t,r,n,o){t=Et(t),-1===o&&(o=4294967295);var i=pt(r),a=function(e){return e};if(0===n){var s=32-8*r;a=function(e){return e<>>s}}var c=t.includes("unsigned");mt(e,{name:t,fromWireType:a,toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+kt(r)+'" to '+this.name);if(ro)throw new TypeError('Passing a number "'+kt(r)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+n+", "+o+"]!");return c?r>>>0:0|r},argPackAdvance:8,readValueFromPointer:rr(t,i,0!==n),destructorFunction:null})}function or(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=q,r=t[e>>=2],o=t[e+1];return new n(G,o,r)}mt(e,{name:r=Et(r),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})}function ir(e,t){var r="std::string"===(t=Et(t));mt(e,{name:t,fromWireType:function(e){var t,n=q[e>>2];if(r)for(var o=e+4,i=0;i<=n;++i){var a=e+4+i;if(i==n||0==Y[a]){var s=Q(o,a-o);void 0===t?t=s:(t+=String.fromCharCode(0),t+=s),o=a+1}}else{var c=new Array(n);for(i=0;i>2]=o,r&&n)L(t,i+4,o+1);else if(n)for(var a=0;a255&&(Mr(i),bt("String has UTF-16 code units that do not fit in 8 bits")),Y[i+4+a]=s}else for(a=0;a>2],a=i(),c=e+4,d=0;d<=o;++d){var p=e+4+d*t;if(d==o||0==a[p>>s]){var u=n(c,p-c);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),c=p+t}}return Mr(e),r},toWireType:function(e,n){"string"!=typeof n&&bt("Cannot pass non-string to C++ string type "+r);var i=a(n),c=Tr(4+i+t);return q[c>>2]=i>>s,o(n,c+4,i+t),null!==e&&e.push(Mr,c),c},argPackAdvance:8,readValueFromPointer:Nt,destructorFunction:function(e){Mr(e)}})}function sr(e,t){mt(e,{isVoid:!0,name:t=Et(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})}function cr(){je()}var dr=[];function pr(e,t){var r;for(x(Array.isArray(dr)),x(t%16==0),dr.length=0,t>>=2;r=Y[e++];){x(100===r||102===r||105===r);var n=r<105;n&&1&t&&t++,dr.push(n?J[t++>>1]:Z[t]),++t}return dr}function ur(e,t,r){var n=pr(t,r);return We.hasOwnProperty(e)||je("No EM_ASM constant found at address "+e),We[e].apply(null,n)}function lr(e,t,r){Y.copyWithin(e,t,t+r)}function Er(e){try{return v.grow(e-G.byteLength+65535>>>16),ce(v.buffer),1}catch(t){h("emscripten_realloc_buffer: Attempted to grow heap from "+G.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}function Or(e){var t=Y.length;x((e>>>=0)>t);var r=2147483648;if(e>r)return h("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var n=1;n<=4;n*=2){var o=t*(1+.2/n);o=Math.min(o,e+100663296);var i=Math.min(r,se(Math.max(e,o),65536));if(Er(i))return!0}return h("Failed to grow the heap from "+t+" bytes to "+i+" bytes, not enough memory!"),!1}function fr(){return I()}ut(),yt=o.BindingError=wt(Error,"BindingError"),Pt=o.InternalError=wt(Error,"InternalError"),Ut(),Jt=o.UnboundTypeError=wt(Error,"UnboundTypeError");var _r,gr={__cxa_allocate_exception:Ze,__cxa_begin_catch:et,__cxa_end_catch:ot,__cxa_find_matching_catch_2:at,__cxa_find_matching_catch_3:st,__cxa_free_exception:rt,__cxa_throw:ct,__resumeException:it,_embind_register_bigint:dt,_embind_register_bool:St,_embind_register_emval:Ht,_embind_register_float:Qt,_embind_register_function:tr,_embind_register_integer:nr,_embind_register_memory_view:or,_embind_register_std_string:ir,_embind_register_std_wstring:ar,_embind_register_void:sr,abort:cr,emscripten_asm_const_int:ur,emscripten_memcpy_big:lr,emscripten_resize_heap:Or,getTempRet0:fr,invoke_ii:Ar,invoke_iii:Fr,invoke_v:jr,invoke_vii:Ir,invoke_viii:vr},Tr=(Le(),o.___wasm_call_ctors=Xe("__wasm_call_ctors"),o._getCreds=Xe("getCreds"),o._getOauthToken=Xe("getOauthToken"),o._getEndpoint=Xe("getEndpoint"),o._callback=Xe("callback"),o._initialize_internal=Xe("initialize_internal"),o._initialize=Xe("initialize"),o._initializeWithToken=Xe("initializeWithToken"),o._malloc=Xe("malloc")),hr=o.___getTypeName=Xe("__getTypeName"),Dr=(o.___embind_register_native_and_builtin_types=Xe("__embind_register_native_and_builtin_types"),o.___errno_location=Xe("__errno_location"),o._fflush=Xe("fflush"),o.stackSave=Xe("stackSave")),wr=o.stackRestore=Xe("stackRestore"),yr=o.stackAlloc=Xe("stackAlloc"),br=o._emscripten_stack_init=function(){return(br=o._emscripten_stack_init=o.asm.emscripten_stack_init).apply(null,arguments)},Pr=(o._emscripten_stack_get_free=function(){return(o._emscripten_stack_get_free=o.asm.emscripten_stack_get_free).apply(null,arguments)},o._emscripten_stack_get_end=function(){return(Pr=o._emscripten_stack_get_end=o.asm.emscripten_stack_get_end).apply(null,arguments)}),Rr=o._setThrew=Xe("setThrew"),Mr=o._free=Xe("free"),mr=o.___cxa_can_catch=Xe("__cxa_can_catch"),Sr=o.___cxa_is_pointer_type=Xe("__cxa_is_pointer_type");function Ar(e,t){var r=Dr();try{return pe.get(e)(t)}catch(e){if(wr(r),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function Fr(e,t,r){var n=Dr();try{return pe.get(e)(t,r)}catch(e){if(wr(n),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function Ir(e,t,r){var n=Dr();try{pe.get(e)(t,r)}catch(e){if(wr(n),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function vr(e,t,r,n){var o=Dr();try{pe.get(e)(t,r,n)}catch(e){if(wr(o),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function jr(e){var t=Dr();try{pe.get(e)()}catch(e){if(wr(t),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function Ur(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Object.getOwnPropertyDescriptor(o,"intArrayFromString")||(o.intArrayFromString=function(){je("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"intArrayToString")||(o.intArrayToString=function(){je("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),o.ccall=H,Object.getOwnPropertyDescriptor(o,"cwrap")||(o.cwrap=function(){je("'cwrap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setValue")||(o.setValue=function(){je("'setValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getValue")||(o.getValue=function(){je("'getValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"allocate")||(o.allocate=function(){je("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF8ArrayToString")||(o.UTF8ArrayToString=function(){je("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF8ToString")||(o.UTF8ToString=function(){je("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF8Array")||(o.stringToUTF8Array=function(){je("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF8")||(o.stringToUTF8=function(){je("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"lengthBytesUTF8")||(o.lengthBytesUTF8=function(){je("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackTrace")||(o.stackTrace=function(){je("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnPreRun")||(o.addOnPreRun=function(){je("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnInit")||(o.addOnInit=function(){je("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnPreMain")||(o.addOnPreMain=function(){je("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnExit")||(o.addOnExit=function(){je("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnPostRun")||(o.addOnPostRun=function(){je("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeStringToMemory")||(o.writeStringToMemory=function(){je("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeArrayToMemory")||(o.writeArrayToMemory=function(){je("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeAsciiToMemory")||(o.writeAsciiToMemory=function(){je("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addRunDependency")||(o.addRunDependency=function(){je("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"removeRunDependency")||(o.removeRunDependency=function(){je("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createFolder")||(o.FS_createFolder=function(){je("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"FS_createPath")||(o.FS_createPath=function(){je("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createDataFile")||(o.FS_createDataFile=function(){je("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createPreloadedFile")||(o.FS_createPreloadedFile=function(){je("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createLazyFile")||(o.FS_createLazyFile=function(){je("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createLink")||(o.FS_createLink=function(){je("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"FS_createDevice")||(o.FS_createDevice=function(){je("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_unlink")||(o.FS_unlink=function(){je("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"getLEB")||(o.getLEB=function(){je("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getFunctionTables")||(o.getFunctionTables=function(){je("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"alignFunctionTables")||(o.alignFunctionTables=function(){je("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerFunctions")||(o.registerFunctions=function(){je("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),o.addFunction=m,o.removeFunction=M,Object.getOwnPropertyDescriptor(o,"getFuncWrapper")||(o.getFuncWrapper=function(){je("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"prettyPrint")||(o.prettyPrint=function(){je("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"dynCall")||(o.dynCall=function(){je("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getCompilerSetting")||(o.getCompilerSetting=function(){je("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"print")||(o.print=function(){je("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"printErr")||(o.printErr=function(){je("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getTempRet0")||(o.getTempRet0=function(){je("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setTempRet0")||(o.setTempRet0=function(){je("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"callMain")||(o.callMain=function(){je("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"abort")||(o.abort=function(){je("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"keepRuntimeAlive")||(o.keepRuntimeAlive=function(){je("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"zeroMemory")||(o.zeroMemory=function(){je("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToNewUTF8")||(o.stringToNewUTF8=function(){je("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setFileTime")||(o.setFileTime=function(){je("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscripten_realloc_buffer")||(o.emscripten_realloc_buffer=function(){je("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ENV")||(o.ENV=function(){je("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ERRNO_CODES")||(o.ERRNO_CODES=function(){je("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ERRNO_MESSAGES")||(o.ERRNO_MESSAGES=function(){je("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setErrNo")||(o.setErrNo=function(){je("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetPton4")||(o.inetPton4=function(){je("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetNtop4")||(o.inetNtop4=function(){je("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetPton6")||(o.inetPton6=function(){je("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetNtop6")||(o.inetNtop6=function(){je("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readSockaddr")||(o.readSockaddr=function(){je("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeSockaddr")||(o.writeSockaddr=function(){je("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"DNS")||(o.DNS=function(){je("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getHostByName")||(o.getHostByName=function(){je("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GAI_ERRNO_MESSAGES")||(o.GAI_ERRNO_MESSAGES=function(){je("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"Protocols")||(o.Protocols=function(){je("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"Sockets")||(o.Sockets=function(){je("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getRandomDevice")||(o.getRandomDevice=function(){je("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"traverseStack")||(o.traverseStack=function(){je("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UNWIND_CACHE")||(o.UNWIND_CACHE=function(){je("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"withBuiltinMalloc")||(o.withBuiltinMalloc=function(){je("'withBuiltinMalloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readAsmConstArgsArray")||(o.readAsmConstArgsArray=function(){je("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readAsmConstArgs")||(o.readAsmConstArgs=function(){je("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"mainThreadEM_ASM")||(o.mainThreadEM_ASM=function(){je("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"jstoi_q")||(o.jstoi_q=function(){je("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"jstoi_s")||(o.jstoi_s=function(){je("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getExecutableName")||(o.getExecutableName=function(){je("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"listenOnce")||(o.listenOnce=function(){je("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"autoResumeAudioContext")||(o.autoResumeAudioContext=function(){je("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"dynCallLegacy")||(o.dynCallLegacy=function(){je("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getDynCaller")||(o.getDynCaller=function(){je("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"dynCall")||(o.dynCall=function(){je("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"callRuntimeCallbacks")||(o.callRuntimeCallbacks=function(){je("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"handleException")||(o.handleException=function(){je("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runtimeKeepalivePush")||(o.runtimeKeepalivePush=function(){je("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runtimeKeepalivePop")||(o.runtimeKeepalivePop=function(){je("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"callUserCallback")||(o.callUserCallback=function(){je("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"maybeExit")||(o.maybeExit=function(){je("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"safeSetTimeout")||(o.safeSetTimeout=function(){je("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"asmjsMangle")||(o.asmjsMangle=function(){je("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"asyncLoad")||(o.asyncLoad=function(){je("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"alignMemory")||(o.alignMemory=function(){je("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"mmapAlloc")||(o.mmapAlloc=function(){je("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"reallyNegative")||(o.reallyNegative=function(){je("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"unSign")||(o.unSign=function(){je("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"reSign")||(o.reSign=function(){je("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"formatString")||(o.formatString=function(){je("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PATH")||(o.PATH=function(){je("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PATH_FS")||(o.PATH_FS=function(){je("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SYSCALLS")||(o.SYSCALLS=function(){je("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"syscallMmap2")||(o.syscallMmap2=function(){je("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"syscallMunmap")||(o.syscallMunmap=function(){je("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getSocketFromFD")||(o.getSocketFromFD=function(){je("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getSocketAddress")||(o.getSocketAddress=function(){je("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"JSEvents")||(o.JSEvents=function(){je("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerKeyEventCallback")||(o.registerKeyEventCallback=function(){je("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"specialHTMLTargets")||(o.specialHTMLTargets=function(){je("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"maybeCStringToJsString")||(o.maybeCStringToJsString=function(){je("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"findEventTarget")||(o.findEventTarget=function(){je("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"findCanvasEventTarget")||(o.findCanvasEventTarget=function(){je("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getBoundingClientRect")||(o.getBoundingClientRect=function(){je("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillMouseEventData")||(o.fillMouseEventData=function(){je("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerMouseEventCallback")||(o.registerMouseEventCallback=function(){je("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerWheelEventCallback")||(o.registerWheelEventCallback=function(){je("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerUiEventCallback")||(o.registerUiEventCallback=function(){je("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerFocusEventCallback")||(o.registerFocusEventCallback=function(){je("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillDeviceOrientationEventData")||(o.fillDeviceOrientationEventData=function(){je("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerDeviceOrientationEventCallback")||(o.registerDeviceOrientationEventCallback=function(){je("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillDeviceMotionEventData")||(o.fillDeviceMotionEventData=function(){je("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerDeviceMotionEventCallback")||(o.registerDeviceMotionEventCallback=function(){je("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"screenOrientation")||(o.screenOrientation=function(){je("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillOrientationChangeEventData")||(o.fillOrientationChangeEventData=function(){je("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerOrientationChangeEventCallback")||(o.registerOrientationChangeEventCallback=function(){je("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillFullscreenChangeEventData")||(o.fillFullscreenChangeEventData=function(){je("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerFullscreenChangeEventCallback")||(o.registerFullscreenChangeEventCallback=function(){je("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerRestoreOldStyle")||(o.registerRestoreOldStyle=function(){je("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"hideEverythingExceptGivenElement")||(o.hideEverythingExceptGivenElement=function(){je("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"restoreHiddenElements")||(o.restoreHiddenElements=function(){je("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setLetterbox")||(o.setLetterbox=function(){je("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"currentFullscreenStrategy")||(o.currentFullscreenStrategy=function(){je("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"restoreOldWindowedStyle")||(o.restoreOldWindowedStyle=function(){je("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"softFullscreenResizeWebGLRenderTarget")||(o.softFullscreenResizeWebGLRenderTarget=function(){je("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"doRequestFullscreen")||(o.doRequestFullscreen=function(){je("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillPointerlockChangeEventData")||(o.fillPointerlockChangeEventData=function(){je("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerPointerlockChangeEventCallback")||(o.registerPointerlockChangeEventCallback=function(){je("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerPointerlockErrorEventCallback")||(o.registerPointerlockErrorEventCallback=function(){je("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"requestPointerLock")||(o.requestPointerLock=function(){je("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillVisibilityChangeEventData")||(o.fillVisibilityChangeEventData=function(){je("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerVisibilityChangeEventCallback")||(o.registerVisibilityChangeEventCallback=function(){je("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerTouchEventCallback")||(o.registerTouchEventCallback=function(){je("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillGamepadEventData")||(o.fillGamepadEventData=function(){je("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerGamepadEventCallback")||(o.registerGamepadEventCallback=function(){je("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerBeforeUnloadEventCallback")||(o.registerBeforeUnloadEventCallback=function(){je("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillBatteryEventData")||(o.fillBatteryEventData=function(){je("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"battery")||(o.battery=function(){je("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerBatteryEventCallback")||(o.registerBatteryEventCallback=function(){je("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setCanvasElementSize")||(o.setCanvasElementSize=function(){je("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getCanvasElementSize")||(o.getCanvasElementSize=function(){je("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"polyfillSetImmediate")||(o.polyfillSetImmediate=function(){je("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"demangle")||(o.demangle=function(){je("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"demangleAll")||(o.demangleAll=function(){je("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"jsStackTrace")||(o.jsStackTrace=function(){je("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackTrace")||(o.stackTrace=function(){je("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getEnvStrings")||(o.getEnvStrings=function(){je("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"checkWasiClock")||(o.checkWasiClock=function(){je("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"flush_NO_FILESYSTEM")||(o.flush_NO_FILESYSTEM=function(){je("'flush_NO_FILESYSTEM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToI64")||(o.writeI53ToI64=function(){je("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToI64Clamped")||(o.writeI53ToI64Clamped=function(){je("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToI64Signaling")||(o.writeI53ToI64Signaling=function(){je("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToU64Clamped")||(o.writeI53ToU64Clamped=function(){je("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToU64Signaling")||(o.writeI53ToU64Signaling=function(){je("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readI53FromI64")||(o.readI53FromI64=function(){je("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readI53FromU64")||(o.readI53FromU64=function(){je("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"convertI32PairToI53")||(o.convertI32PairToI53=function(){je("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"convertU32PairToI53")||(o.convertU32PairToI53=function(){je("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"uncaughtExceptionCount")||(o.uncaughtExceptionCount=function(){je("'uncaughtExceptionCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exceptionLast")||(o.exceptionLast=function(){je("'exceptionLast' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exceptionCaught")||(o.exceptionCaught=function(){je("'exceptionCaught' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ExceptionInfo")||(o.ExceptionInfo=function(){je("'ExceptionInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"CatchInfo")||(o.CatchInfo=function(){je("'CatchInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exception_addRef")||(o.exception_addRef=function(){je("'exception_addRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exception_decRef")||(o.exception_decRef=function(){je("'exception_decRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"Browser")||(o.Browser=function(){je("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"funcWrappers")||(o.funcWrappers=function(){je("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getFuncWrapper")||(o.getFuncWrapper=function(){je("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setMainLoop")||(o.setMainLoop=function(){je("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"wget")||(o.wget=function(){je("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"FS")||(o.FS=function(){je("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"MEMFS")||(o.MEMFS=function(){je("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"TTY")||(o.TTY=function(){je("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PIPEFS")||(o.PIPEFS=function(){je("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SOCKFS")||(o.SOCKFS=function(){je("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"_setNetworkCallback")||(o._setNetworkCallback=function(){je("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"tempFixedLengthArray")||(o.tempFixedLengthArray=function(){je("'tempFixedLengthArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"miniTempWebGLFloatBuffers")||(o.miniTempWebGLFloatBuffers=function(){je("'miniTempWebGLFloatBuffers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"heapObjectForWebGLType")||(o.heapObjectForWebGLType=function(){je("'heapObjectForWebGLType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"heapAccessShiftForWebGLHeap")||(o.heapAccessShiftForWebGLHeap=function(){je("'heapAccessShiftForWebGLHeap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GL")||(o.GL=function(){je("'GL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGet")||(o.emscriptenWebGLGet=function(){je("'emscriptenWebGLGet' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"computeUnpackAlignedImageSize")||(o.computeUnpackAlignedImageSize=function(){je("'computeUnpackAlignedImageSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGetTexPixelData")||(o.emscriptenWebGLGetTexPixelData=function(){je("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGetUniform")||(o.emscriptenWebGLGetUniform=function(){je("'emscriptenWebGLGetUniform' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"webglGetUniformLocation")||(o.webglGetUniformLocation=function(){je("'webglGetUniformLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"webglPrepareUniformLocationsBeforeFirstUse")||(o.webglPrepareUniformLocationsBeforeFirstUse=function(){je("'webglPrepareUniformLocationsBeforeFirstUse' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"webglGetLeftBracePos")||(o.webglGetLeftBracePos=function(){je("'webglGetLeftBracePos' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGetVertexAttrib")||(o.emscriptenWebGLGetVertexAttrib=function(){je("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeGLArray")||(o.writeGLArray=function(){je("'writeGLArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"AL")||(o.AL=function(){je("'AL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_unicode")||(o.SDL_unicode=function(){je("'SDL_unicode' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_ttfContext")||(o.SDL_ttfContext=function(){je("'SDL_ttfContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_audio")||(o.SDL_audio=function(){je("'SDL_audio' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL")||(o.SDL=function(){je("'SDL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_gfx")||(o.SDL_gfx=function(){je("'SDL_gfx' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLUT")||(o.GLUT=function(){je("'GLUT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"EGL")||(o.EGL=function(){je("'EGL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLFW_Window")||(o.GLFW_Window=function(){je("'GLFW_Window' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLFW")||(o.GLFW=function(){je("'GLFW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLEW")||(o.GLEW=function(){je("'GLEW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"IDBStore")||(o.IDBStore=function(){je("'IDBStore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runAndAbortIfError")||(o.runAndAbortIfError=function(){je("'runAndAbortIfError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_handle_array")||(o.emval_handle_array=function(){je("'emval_handle_array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_free_list")||(o.emval_free_list=function(){je("'emval_free_list' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_symbols")||(o.emval_symbols=function(){je("'emval_symbols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_emval")||(o.init_emval=function(){je("'init_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"count_emval_handles")||(o.count_emval_handles=function(){je("'count_emval_handles' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"get_first_emval")||(o.get_first_emval=function(){je("'get_first_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getStringOrSymbol")||(o.getStringOrSymbol=function(){je("'getStringOrSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"requireHandle")||(o.requireHandle=function(){je("'requireHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_newers")||(o.emval_newers=function(){je("'emval_newers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"craftEmvalAllocator")||(o.craftEmvalAllocator=function(){je("'craftEmvalAllocator' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_get_global")||(o.emval_get_global=function(){je("'emval_get_global' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_methodCallers")||(o.emval_methodCallers=function(){je("'emval_methodCallers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"InternalError")||(o.InternalError=function(){je("'InternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"BindingError")||(o.BindingError=function(){je("'BindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UnboundTypeError")||(o.UnboundTypeError=function(){je("'UnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PureVirtualError")||(o.PureVirtualError=function(){je("'PureVirtualError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_embind")||(o.init_embind=function(){je("'init_embind' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwInternalError")||(o.throwInternalError=function(){je("'throwInternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwBindingError")||(o.throwBindingError=function(){je("'throwBindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwUnboundTypeError")||(o.throwUnboundTypeError=function(){je("'throwUnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ensureOverloadTable")||(o.ensureOverloadTable=function(){je("'ensureOverloadTable' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exposePublicSymbol")||(o.exposePublicSymbol=function(){je("'exposePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"replacePublicSymbol")||(o.replacePublicSymbol=function(){je("'replacePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"extendError")||(o.extendError=function(){je("'extendError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"createNamedFunction")||(o.createNamedFunction=function(){je("'createNamedFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registeredInstances")||(o.registeredInstances=function(){je("'registeredInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getBasestPointer")||(o.getBasestPointer=function(){je("'getBasestPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerInheritedInstance")||(o.registerInheritedInstance=function(){je("'registerInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"unregisterInheritedInstance")||(o.unregisterInheritedInstance=function(){je("'unregisterInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getInheritedInstance")||(o.getInheritedInstance=function(){je("'getInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getInheritedInstanceCount")||(o.getInheritedInstanceCount=function(){je("'getInheritedInstanceCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getLiveInheritedInstances")||(o.getLiveInheritedInstances=function(){je("'getLiveInheritedInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registeredTypes")||(o.registeredTypes=function(){je("'registeredTypes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"awaitingDependencies")||(o.awaitingDependencies=function(){je("'awaitingDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"typeDependencies")||(o.typeDependencies=function(){je("'typeDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registeredPointers")||(o.registeredPointers=function(){je("'registeredPointers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerType")||(o.registerType=function(){je("'registerType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"whenDependentTypesAreResolved")||(o.whenDependentTypesAreResolved=function(){je("'whenDependentTypesAreResolved' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"embind_charCodes")||(o.embind_charCodes=function(){je("'embind_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"embind_init_charCodes")||(o.embind_init_charCodes=function(){je("'embind_init_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readLatin1String")||(o.readLatin1String=function(){je("'readLatin1String' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getTypeName")||(o.getTypeName=function(){je("'getTypeName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"heap32VectorToArray")||(o.heap32VectorToArray=function(){je("'heap32VectorToArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"requireRegisteredType")||(o.requireRegisteredType=function(){je("'requireRegisteredType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getShiftFromSize")||(o.getShiftFromSize=function(){je("'getShiftFromSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"integerReadValueFromPointer")||(o.integerReadValueFromPointer=function(){je("'integerReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"enumReadValueFromPointer")||(o.enumReadValueFromPointer=function(){je("'enumReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"floatReadValueFromPointer")||(o.floatReadValueFromPointer=function(){je("'floatReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"simpleReadValueFromPointer")||(o.simpleReadValueFromPointer=function(){je("'simpleReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runDestructors")||(o.runDestructors=function(){je("'runDestructors' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"new_")||(o.new_=function(){je("'new_' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"craftInvokerFunction")||(o.craftInvokerFunction=function(){je("'craftInvokerFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"embind__requireFunction")||(o.embind__requireFunction=function(){je("'embind__requireFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"tupleRegistrations")||(o.tupleRegistrations=function(){je("'tupleRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"structRegistrations")||(o.structRegistrations=function(){je("'structRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"genericPointerToWireType")||(o.genericPointerToWireType=function(){je("'genericPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"constNoSmartPtrRawPointerToWireType")||(o.constNoSmartPtrRawPointerToWireType=function(){je("'constNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"nonConstNoSmartPtrRawPointerToWireType")||(o.nonConstNoSmartPtrRawPointerToWireType=function(){je("'nonConstNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_RegisteredPointer")||(o.init_RegisteredPointer=function(){je("'init_RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer")||(o.RegisteredPointer=function(){je("'RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_getPointee")||(o.RegisteredPointer_getPointee=function(){je("'RegisteredPointer_getPointee' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_destructor")||(o.RegisteredPointer_destructor=function(){je("'RegisteredPointer_destructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_deleteObject")||(o.RegisteredPointer_deleteObject=function(){je("'RegisteredPointer_deleteObject' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_fromWireType")||(o.RegisteredPointer_fromWireType=function(){je("'RegisteredPointer_fromWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runDestructor")||(o.runDestructor=function(){je("'runDestructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"releaseClassHandle")||(o.releaseClassHandle=function(){je("'releaseClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"finalizationGroup")||(o.finalizationGroup=function(){je("'finalizationGroup' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"detachFinalizer_deps")||(o.detachFinalizer_deps=function(){je("'detachFinalizer_deps' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"detachFinalizer")||(o.detachFinalizer=function(){je("'detachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"attachFinalizer")||(o.attachFinalizer=function(){je("'attachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"makeClassHandle")||(o.makeClassHandle=function(){je("'makeClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_ClassHandle")||(o.init_ClassHandle=function(){je("'init_ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle")||(o.ClassHandle=function(){je("'ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_isAliasOf")||(o.ClassHandle_isAliasOf=function(){je("'ClassHandle_isAliasOf' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwInstanceAlreadyDeleted")||(o.throwInstanceAlreadyDeleted=function(){je("'throwInstanceAlreadyDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_clone")||(o.ClassHandle_clone=function(){je("'ClassHandle_clone' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_delete")||(o.ClassHandle_delete=function(){je("'ClassHandle_delete' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"deletionQueue")||(o.deletionQueue=function(){je("'deletionQueue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_isDeleted")||(o.ClassHandle_isDeleted=function(){je("'ClassHandle_isDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_deleteLater")||(o.ClassHandle_deleteLater=function(){je("'ClassHandle_deleteLater' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"flushPendingDeletes")||(o.flushPendingDeletes=function(){je("'flushPendingDeletes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"delayFunction")||(o.delayFunction=function(){je("'delayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setDelayFunction")||(o.setDelayFunction=function(){je("'setDelayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredClass")||(o.RegisteredClass=function(){je("'RegisteredClass' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"shallowCopyInternalPointer")||(o.shallowCopyInternalPointer=function(){je("'shallowCopyInternalPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"downcastPointer")||(o.downcastPointer=function(){je("'downcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"upcastPointer")||(o.upcastPointer=function(){je("'upcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"validateThis")||(o.validateThis=function(){je("'validateThis' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"char_0")||(o.char_0=function(){je("'char_0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"char_9")||(o.char_9=function(){je("'char_9' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"makeLegalFunctionName")||(o.makeLegalFunctionName=function(){je("'makeLegalFunctionName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"warnOnce")||(o.warnOnce=function(){je("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackSave")||(o.stackSave=function(){je("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackRestore")||(o.stackRestore=function(){je("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackAlloc")||(o.stackAlloc=function(){je("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"AsciiToString")||(o.AsciiToString=function(){je("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToAscii")||(o.stringToAscii=function(){je("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF16ToString")||(o.UTF16ToString=function(){je("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF16")||(o.stringToUTF16=function(){je("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"lengthBytesUTF16")||(o.lengthBytesUTF16=function(){je("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF32ToString")||(o.UTF32ToString=function(){je("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF32")||(o.stringToUTF32=function(){je("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"lengthBytesUTF32")||(o.lengthBytesUTF32=function(){je("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"allocateUTF8")||(o.allocateUTF8=function(){je("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"allocateUTF8OnStack")||(o.allocateUTF8OnStack=function(){je("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),o.writeStackCookie=le,o.checkStackCookie=Ee,Object.getOwnPropertyDescriptor(o,"ALLOC_NORMAL")||Object.defineProperty(o,"ALLOC_NORMAL",{configurable:!0,get:function(){je("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(o,"ALLOC_STACK")||Object.defineProperty(o,"ALLOC_STACK",{configurable:!0,get:function(){je("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}});function xr(){br(),le()}function Nr(e){function t(){_r||(_r=!0,o.calledRun=!0,U||(ye(),r(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),x(!o._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),be()))}e=e||s,me>0||(xr(),we(),me>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t(),Ee()))}if(Ae=function e(){_r||Nr(),_r||(Ae=e)},o.run=Nr,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Nr(),t.ready}}();"object"==typeof exports&&"object"==typeof module?module.exports=AcuantInitializerModule:"function"==typeof define&&define.amd?define([],(function(){return AcuantInitializerModule})):"object"==typeof exports&&(exports.AcuantInitializerModule=AcuantInitializerModule); \ No newline at end of file diff --git a/public/acuant/11.9.2/AcuantInitializerService.wasm b/public/acuant/11.9.2/AcuantInitializerService.wasm new file mode 100755 index 00000000000..a11449fafd8 Binary files /dev/null and b/public/acuant/11.9.2/AcuantInitializerService.wasm differ diff --git a/public/acuant/11.9.2/AcuantInitializerWorker.min.js b/public/acuant/11.9.2/AcuantInitializerWorker.min.js new file mode 100644 index 00000000000..dd7f1fd9278 --- /dev/null +++ b/public/acuant/11.9.2/AcuantInitializerWorker.min.js @@ -0,0 +1 @@ +"use strict";importScripts("AcuantInitializerService.min.js"),AcuantInitializerModule().then((i=>{let e=i.addFunction(n,"vi");function n(i){postMessage({func:"initialize",status:i})}onmessage=t=>{if(t&&t.data)if("initialize"===t.data.func){let a=t.data.data;a.creds&&a.endpoint?i.ccall("initialize",null,["string","string","number"],[a.creds,a.endpoint,e]):(console.error("missing params"),n(6))}else if("initializeWithToken"===t.data.func){let a=t.data.data;a.token&&a.endpoint?i.ccall("initializeWithToken",null,["string","string","number"],[a.token,a.endpoint,e]):(console.error("missing params"),n(6))}else console.error("called with no func specified"),n(7)},postMessage({initializerWorker:"started"})})); \ No newline at end of file diff --git a/public/acuant/11.9.2/AcuantJavascriptWebSdk.min.js b/public/acuant/11.9.2/AcuantJavascriptWebSdk.min.js new file mode 100644 index 00000000000..74f4a92d413 --- /dev/null +++ b/public/acuant/11.9.2/AcuantJavascriptWebSdk.min.js @@ -0,0 +1 @@ +var AcuantConfig=function(){"use strict";return{acuantVersion:"11.9.2"}}();let config={};"undefined"!=typeof acuantConfig&&0!==Object.keys(acuantConfig).length&&acuantConfig.constructor===Object&&(config=acuantConfig),document.addEventListener("DOMContentLoaded",(function(){void 0===AcuantJavascriptWebSdk&&loadAcuantSdk(),document.removeEventListener("DOMContentLoaded",this)}));var AcuantJavascriptWebSdk=void 0;function loadAcuantSdk(){AcuantJavascriptWebSdk=function(e){let t={ACUANT_IMAGE_WORKER:"AcuantImageWorker",ACUANT_METRICS_WORKER:"AcuantMetricsWorker",SEQUENCE_BREAK_CODE:"sequence-break",START_FAIL_CODE:"start-fail",REPEAT_FAIL_CODE:"repeat-fail",HEIC_NOT_SUPPORTED_CODE:"heic-not-supported",BARCODE_READER_ID:"acuant-barcode-reader",singleWorkerModel:!1,startInitializer:function(n,a=0){if(!n)return void M("startInitializer did not have a user callback set");if(y)return;L=1==a,T(i,n);let r=null;e&&e.cdnPath&&e.cdnPath.initializerUrl?r=e.cdnPath.initializerUrl:e.path&&(r=e.path),y=new Worker(O(r,"AcuantInitializerWorker.min.js",a)),y.onmessage=w,function(){if(document.getElementById(t.BARCODE_READER_ID))return;const e=document.createElement("div");e.id=t.BARCODE_READER_ID,e.style.display="none",document.body.appendChild(e)}()},endInitializer:function(){y&&(y.terminate(),y.onmessage=null,g=!1,y=null)},startImageWorker:function(e){e?S?e():(T(a,e),I(L?1:0)):M("startImageWorker did not have a user callback set")},startMetricsWorker:function(e){e?R?e():(T(r,e),b(L?1:0)):M("startMetricsWorker did not have a user callback set")},endImageWorker:function(){S.terminate(),S.onmessage=null,P=!1,S=null},endMetricsWorker:function(){R.terminate(),R.onmessage=null,C=!1,R=null},start:function(e,t=!1){if(!e)return void M("start did not have a user callback set");const i=L?1:0;this.singleWorkerModel=t,T(n,e),this.singleWorkerModel?S||I(i):(S||I(i),R||b(i))},end:function(){S&&this.endImageWorker(),R&&this.endMetricsWorker()},startWorkers:function(e,t=[this.ACUANT_IMAGE_WORKER,this.ACUANT_METRICS_WORKER],i=0){e?(T(n,e),t.includes(this.ACUANT_IMAGE_WORKER)&&!S&&I(i),t.includes(this.ACUANT_METRICS_WORKER)&&!R&&b(i)):M("startWorkers did not have a user callback set")},endWorkers:function(e=[this.ACUANT_IMAGE_WORKER,this.ACUANT_METRICS_WORKER]){e.includes(this.ACUANT_IMAGE_WORKER)&&S&&(S.terminate(),S.onmessage=null,P=!1,S=null),e.includes(this.ACUANT_METRICS_WORKER)&&R&&(R.terminate(),R.onmessage=null,C=!1,R=null)},initialize:function(e,t,i,n=0){i?(T(o,i),y?B(y,"initialize",{creds:e,endpoint:t}):this.startInitializer((()=>{B(y,"initialize",{creds:e,endpoint:t})}),n)):M("initialize did not have a user callback set")},initializeWithToken:function(e,t,i,n=0){i?(T(o,i),y?B(y,"initializeWithToken",{token:e,endpoint:t}):this.startInitializer((()=>{B(y,"initializeWithToken",{token:e,endpoint:t})}),n)):M("initializeWithToken did not have a user callback set")},crop:function(e,t,i,n){h?n?P&&null!=e?(T(l,n),B(S,"crop",{imgData:e.data,width:t,height:i})):n.onFail():M("crop did not have a user callback set"):M("SDK was not initialized")},detect:function(e,t,i,n){h?n?P&&null!=e?(T(s,n),B(S,"detect",{imgData:e.data,width:t,height:i})):n.onFail():M("detect did not have a user callback set"):M("SDK was not initialized")},metrics:function(e,t,i,n){h?n?C&&null!=e?(T(m,n),B(R,"metrics",{imgData:e.data,width:t,height:i})):n.onFail():M("metrics did not have a user callback set"):M("SDK was not initialized")},moire:function(e,t,i,n){h?n?C&&null!=e?(T(c,n),B(R,"moire",{imgData:e.data,width:t,height:i})):n.onFail():M("moire did not have a user callback set"):M("SDK was not initialized")},sign:function(e,t){h?t?P&&e?(T(p,t),B(S,"sign",{imgData:e})):t.onFail():M("sign did not have a user callback set"):M("SDK was not initialized")},verify:function(e,t){h?t?P&&e?(T(u,t),B(S,"verify",{imgData:e})):t.onFail():M("verify did not have a user callback set"):M("SDK was not initialized")},getCvmlVersion:function(e){h?e?P?(T(d,e),B(S,d)):e.onFail():M("verify did not have a user callback set"):M("SDK was not initialized")},addMetadata:function(e,{make:t=navigator.platform,model:i=navigator.userAgent,software:n="Acuant JavascriptWeb SDK "+AcuantConfig.acuantVersion,imageDescription:a=null,dateTimeOriginal:r,userComment:o="=".repeat(100)}){if(!h)return void M("SDK was not initialized");let l={},s={};l[piexif.ImageIFD.Make]=t,l[piexif.ImageIFD.Model]=i,l[piexif.ImageIFD.Software]=n,a&&(l[piexif.ImageIFD.ImageDescription]=a),s[piexif.ExifIFD.DateTimeOriginal]=r,s[piexif.ExifIFD.UserComment]=o;let m={"0th":l,Exif:s},c=piexif.dump(m);return piexif.insert(c,e)},setUnexpectedErrorCallback:function(e){T(f,e)}};const i="initStart",n="workersStart",a="imageWorkerStart",r="metricsWorkerStart",o="init",l="crop",s="detect",m="metrics",c="moire",p="sign",u="verify",d="getCvmlVersion",f="unexpectedError";let h=!1,y=null,g=!1,S=null,P=!1,R=null,C=!1,A=0,k={},D={},L=!1;function I(t=0){let i=null;e&&e.cdnPath&&e.cdnPath.imageUrl?i=e.cdnPath.imageUrl:e.path&&(i=e.path),A++,S=new Worker(O(i,"AcuantImageWorker.min.js",t)),S.onmessage=E,S.onerror=function(){M("imageWorker has failed")}}function b(t=0){let i=null;e&&e.cdnPath&&e.cdnPath.metricsUrl?i=e.cdnPath.metricsUrl:e.path&&(i=e.path),A++,R=new Worker(O(i,"AcuantMetricsWorker.min.js",t)),R.onmessage=x,R.onerror=function(){M("metricsWorker has failed")}}function w(e){if(h=!1,e){let n=e.data;if(g)if(n&&"initialize"===n.func){let e=n.status,i=k[o];t.endInitializer(),i?1==e?(h=!0,i.onSuccess()):i.onFail(e,function(e){switch(e){case 401:return"Server returned a 401 (missing credentials).";case 403:return"Server returned a 403 (invalid credentials).";case 400:return"Server returned a 400.";case 2:return"Token Validation Failed (Recieved token, but token was null/corrupt).";case 3:return"Token Validation Failed (Recieved token, but token was missing part of body).";case 4:return"Token Validation Failed (Recieved token, but token body was missing fields).";case 5:return"Token Validation Failed (Recieved token, but token body failed validation).";case 6:return"At least one param was null/invalid.";case 7:return"Incorrectly formatted message to worker.";default:return"Unexpected error code."}}(e)):M("initialize did not have a user callback set")}else M("initworker sent message without correct function tagging");else{g=!0;let e=k[i];e&&e()}}else M("initworker sent message without anything in the body")}function E(e){if(e){let t=e.data;if(P)if(t&&"detect"===t.func){const e=k[s];e?t.type&&t.x1&&t.y1&&t.x2&&t.y2&&t.x3&&t.y3&&t.x4&&t.y4?function(e,t,i,n,a,r,o,l,s,m){if(m)if(-1==e)m.onFail();else{let c=function(e,t,i,n,a,r,o,l){let s={x:e,y:t},m={x:i,y:n},c={x:a,y:r},p={x:o,y:l},u=G(s,m),d=G(m,c),f=G(c,p),h=G(p,s),y=(u+f)/2,g=(d+h)/2;return y>g?{width:y,height:g}:{width:g,height:y}}(t,i,n,a,r,o,l,s),p=function(e,t){let i=!1,n=5,a=1.42,r=1.5887;if(2==t){let t=(100+n)/100*a;e>=(100-n)/100*a&&e<=t&&(i=!0)}else if(1==t){let t=(100+n)/100*r;e>=(100-n)/100*r&&e<=t&&(i=!0)}return i}(c.width/c.height,e),u=F(c.width,c.height,2==e),d=function(e){let t=[-1,-1,-1,-1];e&&4===e.length&&(v(t,e[0],e[2]),v(t,e[1],e[3]));return t}([{x:t,y:i},{x:n,y:a},{x:r,y:o},{x:l,y:s}]);m.onSuccess({type:e,dimensions:c,dpi:u,isCorrectAspectRatio:p,points:d})}}(t.type,t.x1,t.y1,t.x2,t.y2,t.x3,t.y3,t.x4,t.y4,e):e.onFail():M("detect did not have a user callback set")}else if(t&&"crop"===t.func){const e=k[l];e?t.imgData&&t.width&&t.height&&t.type?function(e,t,i,n,a){a&&(null!=e&&t>=0&&i>=0&&n>=0?(D={image:{data:e,width:t,height:i},cardType:n,dpi:F(t,i,2==n)},a.onSuccess(D)):a.onFail())}(t.imgData,t.width,t.height,t.type,e):t.error?e.onFail(t.error):e.onFail():M("crop did not have a user callback set")}else if(t&&"sign"===t.func){const e=k[p];e?t.imgData?function(e,t){t&&(e?t.onSuccess(e):t.onFail())}(t.imgData,e):t.error?e.onFail(t.error):e.onFail():M("sign did not have a user callback set")}else if(t&&"verify"===t.func){const e=k[u];e?t.result||!1===t.result?function(e,t){t&&(e||!1===e?t.onSuccess(e):t.onFail())}(t.result,e):e.onFail():M("verify did not have a user callback set")}else if(t&&t.func===d){let e=k[d];e?function(e,t){e?t.onSuccess(e):t.onFail()}(t.cvmlVersion,e):M("getCvmlVersion did not have a user callback set")}else M("imageworker sent message without correct function tagging");else P=!0,_()}else M("imageworker sent message without anything in the body")}function x(e){if(e){let t=e.data;if(C)if(t&&"metrics"===t.func){const e=k[m];e?t.sharpness&&t.glare?function(e,t,i){if(i)if(t>=0&&e>=0){let n=Math.floor(100*e),a=Math.floor(100*t);i.onSuccess(n,a)}else i.onFail()}(t.sharpness,t.glare,e):t.error?e.onFail(t.error):e.onFail():M("metrics did not have a user callback set")}else if("moire"===t.func){const e=k[c];e?t.moire&&t.moireraw?function(e,t,i){if(i)if(e>=0&&t>=0){let n=Math.floor(100*e),a=Math.floor(100*t);i.onSuccess(n,a)}else i.onFail()}(t.moire,t.moireraw,e):t.error?e.onFail(t.error):e.onFail():M("moire did not have a user callback set")}else M("metricsworker sent message without correct function tagging");else C=!0,_()}else M("metricsworker sent message without anything in the body")}function v(e,t,i){return t.xi.x&&t.y>i.y?(e[0]=i,e[2]=t):t.x>i.x&&t.yt?e:t,a=i?4.92:3.37;return Math.round(n/a)}function T(e,t){k[e]=t}function M(e){let t=k[f];t?e?t(e):t():console.error("Error: ",e)}function O(e,t,i){let n;return null!=e&&e.length>0&&0==i?(n="/"===e.charAt(e.length-1)?e:e+"/",n+=t):n=0!=i?e:t,n}function B(e,t,i,n=!1){let a={func:t,data:i};n&&i&&i.imgData&&i.imgData.buffer?e.postMessage(a,[a.data.imgData.buffer]):e.postMessage(a)}function _(){const e=k[n],t=k[a],i=k[r];--A,0==A&&(e?(T(n,null),e()):t?(T(a,null),t()):i&&(T(r,null),i()))}return t}(config),"function"==typeof onAcuantSdkLoaded&&onAcuantSdkLoaded()}!function(){"use strict";let e={};function t(e){return m(">"+p("B",e.length),e)}function i(e){return m(">"+p("H",e.length),e)}function n(e){return m(">"+p("L",e.length),e)}function a(e,a,r){let o,l,s,c,u="",d="";if("Byte"==a)o=e.length,o<=4?d=t(e)+p("\0",4-o):(d=m(">L",[r]),u=t(e));else if("Short"==a)o=e.length,o<=2?d=i(e)+p("\0\0",2-o):(d=m(">L",[r]),u=i(e));else if("Long"==a)o=e.length,o<=1?d=n(e):(d=m(">L",[r]),u=n(e));else if("Ascii"==a)l=e+"\0",o=l.length,o>4?(d=m(">L",[r]),u=l):d=l+p("\0",4-o);else if("Rational"==a){if("number"==typeof e[0])o=1,s=e[0],c=e[1],l=m(">L",[s])+m(">L",[c]);else{o=e.length,l="";for(var f=0;fL",[s])+m(">L",[c])}d=m(">L",[r]),u=l}else if("SRational"==a){if("number"==typeof e[0])o=1,s=e[0],c=e[1],l=m(">l",[s])+m(">l",[c]);else{o=e.length,l="";for(f=0;fl",[s])+m(">l",[c])}d=m(">L",[r]),u=l}else"Undefined"==a&&(o=e.length,o>4?(d=m(">L",[r]),u=e):d=e+p("\0",4-o));return[m(">L",[o]),d,u]}function r(e,t,i){let n,r=Object.keys(e).length,o=m(">H",[r]);n=["0th","1st"].indexOf(t)>-1?2+12*r+4:2+12*r;let l="",s="";for(var c in e){if("string"==typeof c&&(c=parseInt(c)),"0th"==t&&[34665,34853].indexOf(c)>-1)continue;if("Exif"==t&&40965==c)continue;if("1st"==t&&[513,514].indexOf(c)>-1)continue;let r=e[c],o=m(">H",[c]),p=f[t][c].type,u=m(">H",[d[p]]);"number"==typeof r&&(r=[r]);let h=a(r,p,8+n+i+s.length);l+=o+u+h[0]+h[1],s+=h[2]}return[o+l,s]}function o(e){let t,i;if("ÿØ"==e.slice(0,2))t=u(e),i=function(e){let t;for(let i=0;i-1)this.tiftag=e;else{if("Exif"!=e.slice(0,4))throw new Error("Given file is neither JPEG nor TIFF.");this.tiftag=e.slice(6)}}if(e.version="1.0.4",e.remove=function(e){let t=!1;if("ÿØ"==e.slice(0,2));else{if("data:image/jpeg;base64,"!=e.slice(0,23)&&"data:image/jpg;base64,"!=e.slice(0,22))throw new Error("Given data is not jpeg.");e=s(e.split(",")[1]),t=!0}let i=u(e).filter((function(e){return!("ÿá"==e.slice(0,2)&&"Exif\0\0"==e.slice(4,10))})).join("");return t&&(i="data:image/jpeg;base64,"+l(i)),i},e.insert=function(e,t){let i=!1;if("Exif\0\0"!=e.slice(0,6))throw new Error("Given data is not exif.");if("ÿØ"==t.slice(0,2));else{if("data:image/jpeg;base64,"!=t.slice(0,23)&&"data:image/jpg;base64,"!=t.slice(0,22))throw new Error("Given data is not jpeg.");t=s(t.split(",")[1]),i=!0}let n="ÿá"+m(">H",[e.length+2])+e,a=function(e,t){let i=!1,n=[];e.forEach((function(a,r){"ÿá"==a.slice(0,2)&&"Exif\0\0"==a.slice(4,10)&&(i?n.unshift(r):(e[r]=t,i=!0))})),n.forEach((function(t){e.splice(t,1)})),!i&&t&&(e=[e[0],t].concat(e.slice(1)));return e.join("")}(u(t),n);return i&&(a="data:image/jpeg;base64,"+l(a)),a},e.load=function(e){let t;if("string"!=typeof e)throw new Error("'load' gots invalid type argument.");if("ÿØ"==e.slice(0,2))t=e;else if("data:image/jpeg;base64,"==e.slice(0,23)||"data:image/jpg;base64,"==e.slice(0,22))t=s(e.split(",")[1]);else{if("Exif"!=e.slice(0,4))throw new Error("'load' gots invalid file data.");t=e.slice(6)}let i={"0th":{},Exif:{},GPS:{},Interop:{},"1st":{},thumbnail:null},n=new o(t);if(null===n.tiftag)return i;"II"==n.tiftag.slice(0,2)?n.endian_mark="<":n.endian_mark=">";let a=c(n.endian_mark+"L",n.tiftag.slice(4,8))[0];i["0th"]=n.get_ifd(a,"0th");let r=i["0th"].first_ifd_pointer;if(delete i["0th"].first_ifd_pointer,34665 in i["0th"]&&(a=i["0th"][34665],i.Exif=n.get_ifd(a,"Exif")),34853 in i["0th"]&&(a=i["0th"][34853],i.GPS=n.get_ifd(a,"GPS")),40965 in i.Exif&&(a=i.Exif[40965],i.Interop=n.get_ifd(a,"Interop")),"\0\0\0\0"!=r&&(a=c(n.endian_mark+"L",r)[0],i["1st"]=n.get_ifd(a,"1st"),513 in i["1st"]&&514 in i["1st"])){let e=i["1st"][513]+i["1st"][514],t=n.tiftag.slice(i["1st"][513],e);i.thumbnail=t}return i},e.dump=function(t){let i=(n=t,JSON.parse(JSON.stringify(n)));var n;let a,o,l,s,c,p=!1,f=!1,h=!1,y=!1;a="0th"in i?i["0th"]:{},"Exif"in i&&Object.keys(i.Exif).length||"Interop"in i&&Object.keys(i.Interop).length?(a[34665]=1,p=!0,o=i.Exif,"Interop"in i&&Object.keys(i.Interop).length?(o[40965]=1,h=!0,l=i.Interop):Object.keys(o).indexOf(e.ExifIFD.InteroperabilityTag.toString())>-1&&delete o[40965]):Object.keys(a).indexOf(e.ImageIFD.ExifTag.toString())>-1&&delete a[34665],"GPS"in i&&Object.keys(i.GPS).length?(a[e.ImageIFD.GPSTag]=1,f=!0,s=i.GPS):Object.keys(a).indexOf(e.ImageIFD.GPSTag.toString())>-1&&delete a[e.ImageIFD.GPSTag],"1st"in i&&"thumbnail"in i&&null!=i.thumbnail&&(y=!0,i["1st"][513]=1,i["1st"][514]=1,c=i["1st"]);let g,S,P,R,C,A=r(a,"0th",0),k=A[0].length+12*p+12*f+4+A[1].length,D="",L=0,I="",b=0,w="",E=0,x="";(p&&(g=r(o,"Exif",k),L=g[0].length+12*h+g[1].length),f&&(S=r(s,"GPS",k+L),I=S.join(""),b=I.length),h)&&(P=r(l,"Interop",k+L+b),w=P.join(""),E=w.length);if(y&&(R=r(c,"1st",k+L+b+E),C=function(e){let t=u(e);for(;"ÿà"<=t[1].slice(0,2)&&t[1].slice(0,2)<="ÿï";)t=[t[0]].concat(t.slice(2));return t.join("")}(i.thumbnail),C.length>64e3))throw new Error("Given thumbnail is too large. max 64kB");let v="",G="",F="",T="\0\0\0\0";if(p){var M=m(">L",[O=8+k]);v=m(">H",[34665])+m(">H",[d.Long])+m(">L",[1])+M}if(f){M=m(">L",[O=8+k+L]);G=m(">H",[34853])+m(">H",[d.Long])+m(">L",[1])+M}if(h){M=m(">L",[O=8+k+L+b]);F=m(">H",[40965])+m(">H",[d.Long])+m(">L",[1])+M}if(y){var O;T=m(">L",[O=8+k+L+b+E]);let e="\0\0\0\0"+m(">L",[O+R[0].length+24+4+R[1].length]),t="\0\0\0\0"+m(">L",[C.length]);x=R[0]+e+t+"\0\0\0\0"+R[1]+C}let B=A[0]+v+G+T+A[1];return p&&(D=g[0]+F+g[1]),"Exif\0\0MM\0*\0\0\0\b"+B+D+I+w+x},o.prototype={get_ifd:function(e,t){let i,n={},a=c(this.endian_mark+"H",this.tiftag.slice(e,e+2))[0],r=e+2;i=["0th","1st"].indexOf(t)>-1?"Image":t;for(let t=0;t4?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("B",a),this.tiftag.slice(t,t+a))):i=c(this.endian_mark+p("B",a),r.slice(0,a));else if(2==n)a>4?(t=c(this.endian_mark+"L",r)[0],i=this.tiftag.slice(t,t+a-1)):i=r.slice(0,a-1);else if(3==n)a>2?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("H",a),this.tiftag.slice(t,t+2*a))):i=c(this.endian_mark+p("H",a),r.slice(0,2*a));else if(4==n)a>1?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("L",a),this.tiftag.slice(t,t+4*a))):i=c(this.endian_mark+p("L",a),r);else if(5==n)if(t=c(this.endian_mark+"L",r)[0],a>1){i=[];for(var o=0;o4?(t=c(this.endian_mark+"L",r)[0],i=this.tiftag.slice(t,t+a)):i=r.slice(0,a);else if(9==n)a>1?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("l",a),this.tiftag.slice(t,t+4*a))):i=c(this.endian_mark+p("l",a),r);else{if(10!=n)throw new Error("Exif might be wrong. Got incorrect value type to decode. type:"+n);if(t=c(this.endian_mark+"L",r)[0],a>1){i=[];for(o=0;o>2,r=(3&t)<<4|i>>4,o=(15&i)<<2|n>>6,l=63&n,isNaN(i)?o=l=64:isNaN(n)&&(l=64),s=s+c.charAt(a)+c.charAt(r)+c.charAt(o)+c.charAt(l);return s};if("undefined"!=typeof window&&"function"==typeof window.atob)var s=window.atob;if(void 0===s)s=function(e){let t,i,n,a,r,o,l,s="",m=0,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");m>4,i=(15&r)<<4|o>>2,n=(3&o)<<6|l,s+=String.fromCharCode(t),64!=o&&(s+=String.fromCharCode(i)),64!=l&&(s+=String.fromCharCode(n));return s};function m(e,t){if(!(t instanceof Array))throw new Error("'pack' error. Got invalid type argument.");if(e.length-1!=t.length)throw new Error("'pack' error. "+(e.length-1)+" marks, "+t.length+" elements.");let i;if("<"==e[0])i=!0;else{if(">"!=e[0])throw new Error("");i=!1}let n="",a=1,r=null,o=null,l=null;for(;o=e[a];){if("b"==o.toLowerCase()){if(r=t[a-1],"b"==o&&r<0&&(r+=256),r>255||r<0)throw new Error("'pack' error.");l=String.fromCharCode(r)}else if("H"==o){if(r=t[a-1],r>65535||r<0)throw new Error("'pack' error.");l=String.fromCharCode(Math.floor(r%65536/256))+String.fromCharCode(r%256),i&&(l=l.split("").reverse().join(""))}else{if("l"!=o.toLowerCase())throw new Error("'pack' error.");if(r=t[a-1],"l"==o&&r<0&&(r+=4294967296),r>4294967295||r<0)throw new Error("'pack' error.");l=String.fromCharCode(Math.floor(r/16777216))+String.fromCharCode(Math.floor(r%16777216/65536))+String.fromCharCode(Math.floor(r%65536/256))+String.fromCharCode(r%256),i&&(l=l.split("").reverse().join(""))}n+=l,a+=1}return n}function c(e,t){if("string"!=typeof t)throw new Error("'unpack' error. Got invalid type argument.");let i,n=0;for(let t=1;t"!=e[0])throw new Error("'unpack' error.");i=!1}let a=[],r=0,o=1,l=null,s=null,m=null,c="";for(;s=e[o];){if("b"==s.toLowerCase())m=1,c=t.slice(r,r+m),l=c.charCodeAt(0),"b"==s&&l>=128&&(l-=256);else if("H"==s)m=2,c=t.slice(r,r+m),i&&(c=c.split("").reverse().join("")),l=256*c.charCodeAt(0)+c.charCodeAt(1);else{if("l"!=s.toLowerCase())throw new Error("'unpack' error. "+s);m=4,c=t.slice(r,r+m),i&&(c=c.split("").reverse().join("")),l=16777216*c.charCodeAt(0)+65536*c.charCodeAt(1)+256*c.charCodeAt(2)+c.charCodeAt(3),"l"==s&&l>=2147483648&&(l-=4294967296)}a.push(l),r+=m,o+=1}return a}function p(e,t){let i="";for(let n=0;nH",e.slice(t+2,t+4))[0]+2;i.push(e.slice(t,n)),t=n}if(t>=e.length)throw new Error("Wrong JPEG data.")}return i}var d={Byte:1,Ascii:2,Short:3,Long:4,Rational:5,Undefined:7,SLong:9,SRational:10},f={Image:{11:{name:"ProcessingSoftware",type:"Ascii"},254:{name:"NewSubfileType",type:"Long"},255:{name:"SubfileType",type:"Short"},256:{name:"ImageWidth",type:"Long"},257:{name:"ImageLength",type:"Long"},258:{name:"BitsPerSample",type:"Short"},259:{name:"Compression",type:"Short"},262:{name:"PhotometricInterpretation",type:"Short"},263:{name:"Threshholding",type:"Short"},264:{name:"CellWidth",type:"Short"},265:{name:"CellLength",type:"Short"},266:{name:"FillOrder",type:"Short"},269:{name:"DocumentName",type:"Ascii"},270:{name:"ImageDescription",type:"Ascii"},271:{name:"Make",type:"Ascii"},272:{name:"Model",type:"Ascii"},273:{name:"StripOffsets",type:"Long"},274:{name:"Orientation",type:"Short"},277:{name:"SamplesPerPixel",type:"Short"},278:{name:"RowsPerStrip",type:"Long"},279:{name:"StripByteCounts",type:"Long"},282:{name:"XResolution",type:"Rational"},283:{name:"YResolution",type:"Rational"},284:{name:"PlanarConfiguration",type:"Short"},290:{name:"GrayResponseUnit",type:"Short"},291:{name:"GrayResponseCurve",type:"Short"},292:{name:"T4Options",type:"Long"},293:{name:"T6Options",type:"Long"},296:{name:"ResolutionUnit",type:"Short"},301:{name:"TransferFunction",type:"Short"},305:{name:"Software",type:"Ascii"},306:{name:"DateTime",type:"Ascii"},315:{name:"Artist",type:"Ascii"},316:{name:"HostComputer",type:"Ascii"},317:{name:"Predictor",type:"Short"},318:{name:"WhitePoint",type:"Rational"},319:{name:"PrimaryChromaticities",type:"Rational"},320:{name:"ColorMap",type:"Short"},321:{name:"HalftoneHints",type:"Short"},322:{name:"TileWidth",type:"Short"},323:{name:"TileLength",type:"Short"},324:{name:"TileOffsets",type:"Short"},325:{name:"TileByteCounts",type:"Short"},330:{name:"SubIFDs",type:"Long"},332:{name:"InkSet",type:"Short"},333:{name:"InkNames",type:"Ascii"},334:{name:"NumberOfInks",type:"Short"},336:{name:"DotRange",type:"Byte"},337:{name:"TargetPrinter",type:"Ascii"},338:{name:"ExtraSamples",type:"Short"},339:{name:"SampleFormat",type:"Short"},340:{name:"SMinSampleValue",type:"Short"},341:{name:"SMaxSampleValue",type:"Short"},342:{name:"TransferRange",type:"Short"},343:{name:"ClipPath",type:"Byte"},344:{name:"XClipPathUnits",type:"Long"},345:{name:"YClipPathUnits",type:"Long"},346:{name:"Indexed",type:"Short"},347:{name:"JPEGTables",type:"Undefined"},351:{name:"OPIProxy",type:"Short"},512:{name:"JPEGProc",type:"Long"},513:{name:"JPEGInterchangeFormat",type:"Long"},514:{name:"JPEGInterchangeFormatLength",type:"Long"},515:{name:"JPEGRestartInterval",type:"Short"},517:{name:"JPEGLosslessPredictors",type:"Short"},518:{name:"JPEGPointTransforms",type:"Short"},519:{name:"JPEGQTables",type:"Long"},520:{name:"JPEGDCTables",type:"Long"},521:{name:"JPEGACTables",type:"Long"},529:{name:"YCbCrCoefficients",type:"Rational"},530:{name:"YCbCrSubSampling",type:"Short"},531:{name:"YCbCrPositioning",type:"Short"},532:{name:"ReferenceBlackWhite",type:"Rational"},700:{name:"XMLPacket",type:"Byte"},18246:{name:"Rating",type:"Short"},18249:{name:"RatingPercent",type:"Short"},32781:{name:"ImageID",type:"Ascii"},33421:{name:"CFARepeatPatternDim",type:"Short"},33422:{name:"CFAPattern",type:"Byte"},33423:{name:"BatteryLevel",type:"Rational"},33432:{name:"Copyright",type:"Ascii"},33434:{name:"ExposureTime",type:"Rational"},34377:{name:"ImageResources",type:"Byte"},34665:{name:"ExifTag",type:"Long"},34675:{name:"InterColorProfile",type:"Undefined"},34853:{name:"GPSTag",type:"Long"},34857:{name:"Interlace",type:"Short"},34858:{name:"TimeZoneOffset",type:"Long"},34859:{name:"SelfTimerMode",type:"Short"},37387:{name:"FlashEnergy",type:"Rational"},37388:{name:"SpatialFrequencyResponse",type:"Undefined"},37389:{name:"Noise",type:"Undefined"},37390:{name:"FocalPlaneXResolution",type:"Rational"},37391:{name:"FocalPlaneYResolution",type:"Rational"},37392:{name:"FocalPlaneResolutionUnit",type:"Short"},37393:{name:"ImageNumber",type:"Long"},37394:{name:"SecurityClassification",type:"Ascii"},37395:{name:"ImageHistory",type:"Ascii"},37397:{name:"ExposureIndex",type:"Rational"},37398:{name:"TIFFEPStandardID",type:"Byte"},37399:{name:"SensingMethod",type:"Short"},40091:{name:"XPTitle",type:"Byte"},40092:{name:"XPComment",type:"Byte"},40093:{name:"XPAuthor",type:"Byte"},40094:{name:"XPKeywords",type:"Byte"},40095:{name:"XPSubject",type:"Byte"},50341:{name:"PrintImageMatching",type:"Undefined"},50706:{name:"DNGVersion",type:"Byte"},50707:{name:"DNGBackwardVersion",type:"Byte"},50708:{name:"UniqueCameraModel",type:"Ascii"},50709:{name:"LocalizedCameraModel",type:"Byte"},50710:{name:"CFAPlaneColor",type:"Byte"},50711:{name:"CFALayout",type:"Short"},50712:{name:"LinearizationTable",type:"Short"},50713:{name:"BlackLevelRepeatDim",type:"Short"},50714:{name:"BlackLevel",type:"Rational"},50715:{name:"BlackLevelDeltaH",type:"SRational"},50716:{name:"BlackLevelDeltaV",type:"SRational"},50717:{name:"WhiteLevel",type:"Short"},50718:{name:"DefaultScale",type:"Rational"},50719:{name:"DefaultCropOrigin",type:"Short"},50720:{name:"DefaultCropSize",type:"Short"},50721:{name:"ColorMatrix1",type:"SRational"},50722:{name:"ColorMatrix2",type:"SRational"},50723:{name:"CameraCalibration1",type:"SRational"},50724:{name:"CameraCalibration2",type:"SRational"},50725:{name:"ReductionMatrix1",type:"SRational"},50726:{name:"ReductionMatrix2",type:"SRational"},50727:{name:"AnalogBalance",type:"Rational"},50728:{name:"AsShotNeutral",type:"Short"},50729:{name:"AsShotWhiteXY",type:"Rational"},50730:{name:"BaselineExposure",type:"SRational"},50731:{name:"BaselineNoise",type:"Rational"},50732:{name:"BaselineSharpness",type:"Rational"},50733:{name:"BayerGreenSplit",type:"Long"},50734:{name:"LinearResponseLimit",type:"Rational"},50735:{name:"CameraSerialNumber",type:"Ascii"},50736:{name:"LensInfo",type:"Rational"},50737:{name:"ChromaBlurRadius",type:"Rational"},50738:{name:"AntiAliasStrength",type:"Rational"},50739:{name:"ShadowScale",type:"SRational"},50740:{name:"DNGPrivateData",type:"Byte"},50741:{name:"MakerNoteSafety",type:"Short"},50778:{name:"CalibrationIlluminant1",type:"Short"},50779:{name:"CalibrationIlluminant2",type:"Short"},50780:{name:"BestQualityScale",type:"Rational"},50781:{name:"RawDataUniqueID",type:"Byte"},50827:{name:"OriginalRawFileName",type:"Byte"},50828:{name:"OriginalRawFileData",type:"Undefined"},50829:{name:"ActiveArea",type:"Short"},50830:{name:"MaskedAreas",type:"Short"},50831:{name:"AsShotICCProfile",type:"Undefined"},50832:{name:"AsShotPreProfileMatrix",type:"SRational"},50833:{name:"CurrentICCProfile",type:"Undefined"},50834:{name:"CurrentPreProfileMatrix",type:"SRational"},50879:{name:"ColorimetricReference",type:"Short"},50931:{name:"CameraCalibrationSignature",type:"Byte"},50932:{name:"ProfileCalibrationSignature",type:"Byte"},50934:{name:"AsShotProfileName",type:"Byte"},50935:{name:"NoiseReductionApplied",type:"Rational"},50936:{name:"ProfileName",type:"Byte"},50937:{name:"ProfileHueSatMapDims",type:"Long"},50938:{name:"ProfileHueSatMapData1",type:"Float"},50939:{name:"ProfileHueSatMapData2",type:"Float"},50940:{name:"ProfileToneCurve",type:"Float"},50941:{name:"ProfileEmbedPolicy",type:"Long"},50942:{name:"ProfileCopyright",type:"Byte"},50964:{name:"ForwardMatrix1",type:"SRational"},50965:{name:"ForwardMatrix2",type:"SRational"},50966:{name:"PreviewApplicationName",type:"Byte"},50967:{name:"PreviewApplicationVersion",type:"Byte"},50968:{name:"PreviewSettingsName",type:"Byte"},50969:{name:"PreviewSettingsDigest",type:"Byte"},50970:{name:"PreviewColorSpace",type:"Long"},50971:{name:"PreviewDateTime",type:"Ascii"},50972:{name:"RawImageDigest",type:"Undefined"},50973:{name:"OriginalRawFileDigest",type:"Undefined"},50974:{name:"SubTileBlockSize",type:"Long"},50975:{name:"RowInterleaveFactor",type:"Long"},50981:{name:"ProfileLookTableDims",type:"Long"},50982:{name:"ProfileLookTableData",type:"Float"},51008:{name:"OpcodeList1",type:"Undefined"},51009:{name:"OpcodeList2",type:"Undefined"},51022:{name:"OpcodeList3",type:"Undefined"}},Exif:{33434:{name:"ExposureTime",type:"Rational"},33437:{name:"FNumber",type:"Rational"},34850:{name:"ExposureProgram",type:"Short"},34852:{name:"SpectralSensitivity",type:"Ascii"},34855:{name:"ISOSpeedRatings",type:"Short"},34856:{name:"OECF",type:"Undefined"},34864:{name:"SensitivityType",type:"Short"},34865:{name:"StandardOutputSensitivity",type:"Long"},34866:{name:"RecommendedExposureIndex",type:"Long"},34867:{name:"ISOSpeed",type:"Long"},34868:{name:"ISOSpeedLatitudeyyy",type:"Long"},34869:{name:"ISOSpeedLatitudezzz",type:"Long"},36864:{name:"ExifVersion",type:"Undefined"},36867:{name:"DateTimeOriginal",type:"Ascii"},36868:{name:"DateTimeDigitized",type:"Ascii"},37121:{name:"ComponentsConfiguration",type:"Undefined"},37122:{name:"CompressedBitsPerPixel",type:"Rational"},37377:{name:"ShutterSpeedValue",type:"SRational"},37378:{name:"ApertureValue",type:"Rational"},37379:{name:"BrightnessValue",type:"SRational"},37380:{name:"ExposureBiasValue",type:"SRational"},37381:{name:"MaxApertureValue",type:"Rational"},37382:{name:"SubjectDistance",type:"Rational"},37383:{name:"MeteringMode",type:"Short"},37384:{name:"LightSource",type:"Short"},37385:{name:"Flash",type:"Short"},37386:{name:"FocalLength",type:"Rational"},37396:{name:"SubjectArea",type:"Short"},37500:{name:"MakerNote",type:"Undefined"},37510:{name:"UserComment",type:"Ascii"},37520:{name:"SubSecTime",type:"Ascii"},37521:{name:"SubSecTimeOriginal",type:"Ascii"},37522:{name:"SubSecTimeDigitized",type:"Ascii"},40960:{name:"FlashpixVersion",type:"Undefined"},40961:{name:"ColorSpace",type:"Short"},40962:{name:"PixelXDimension",type:"Long"},40963:{name:"PixelYDimension",type:"Long"},40964:{name:"RelatedSoundFile",type:"Ascii"},40965:{name:"InteroperabilityTag",type:"Long"},41483:{name:"FlashEnergy",type:"Rational"},41484:{name:"SpatialFrequencyResponse",type:"Undefined"},41486:{name:"FocalPlaneXResolution",type:"Rational"},41487:{name:"FocalPlaneYResolution",type:"Rational"},41488:{name:"FocalPlaneResolutionUnit",type:"Short"},41492:{name:"SubjectLocation",type:"Short"},41493:{name:"ExposureIndex",type:"Rational"},41495:{name:"SensingMethod",type:"Short"},41728:{name:"FileSource",type:"Undefined"},41729:{name:"SceneType",type:"Undefined"},41730:{name:"CFAPattern",type:"Undefined"},41985:{name:"CustomRendered",type:"Short"},41986:{name:"ExposureMode",type:"Short"},41987:{name:"WhiteBalance",type:"Short"},41988:{name:"DigitalZoomRatio",type:"Rational"},41989:{name:"FocalLengthIn35mmFilm",type:"Short"},41990:{name:"SceneCaptureType",type:"Short"},41991:{name:"GainControl",type:"Short"},41992:{name:"Contrast",type:"Short"},41993:{name:"Saturation",type:"Short"},41994:{name:"Sharpness",type:"Short"},41995:{name:"DeviceSettingDescription",type:"Undefined"},41996:{name:"SubjectDistanceRange",type:"Short"},42016:{name:"ImageUniqueID",type:"Ascii"},42032:{name:"CameraOwnerName",type:"Ascii"},42033:{name:"BodySerialNumber",type:"Ascii"},42034:{name:"LensSpecification",type:"Rational"},42035:{name:"LensMake",type:"Ascii"},42036:{name:"LensModel",type:"Ascii"},42037:{name:"LensSerialNumber",type:"Ascii"},42240:{name:"Gamma",type:"Rational"}},GPS:{0:{name:"GPSVersionID",type:"Byte"},1:{name:"GPSLatitudeRef",type:"Ascii"},2:{name:"GPSLatitude",type:"Rational"},3:{name:"GPSLongitudeRef",type:"Ascii"},4:{name:"GPSLongitude",type:"Rational"},5:{name:"GPSAltitudeRef",type:"Byte"},6:{name:"GPSAltitude",type:"Rational"},7:{name:"GPSTimeStamp",type:"Rational"},8:{name:"GPSSatellites",type:"Ascii"},9:{name:"GPSStatus",type:"Ascii"},10:{name:"GPSMeasureMode",type:"Ascii"},11:{name:"GPSDOP",type:"Rational"},12:{name:"GPSSpeedRef",type:"Ascii"},13:{name:"GPSSpeed",type:"Rational"},14:{name:"GPSTrackRef",type:"Ascii"},15:{name:"GPSTrack",type:"Rational"},16:{name:"GPSImgDirectionRef",type:"Ascii"},17:{name:"GPSImgDirection",type:"Rational"},18:{name:"GPSMapDatum",type:"Ascii"},19:{name:"GPSDestLatitudeRef",type:"Ascii"},20:{name:"GPSDestLatitude",type:"Rational"},21:{name:"GPSDestLongitudeRef",type:"Ascii"},22:{name:"GPSDestLongitude",type:"Rational"},23:{name:"GPSDestBearingRef",type:"Ascii"},24:{name:"GPSDestBearing",type:"Rational"},25:{name:"GPSDestDistanceRef",type:"Ascii"},26:{name:"GPSDestDistance",type:"Rational"},27:{name:"GPSProcessingMethod",type:"Undefined"},28:{name:"GPSAreaInformation",type:"Undefined"},29:{name:"GPSDateStamp",type:"Ascii"},30:{name:"GPSDifferential",type:"Short"},31:{name:"GPSHPositioningError",type:"Rational"}},Interop:{1:{name:"InteroperabilityIndex",type:"Ascii"}}};f["0th"]=f.Image,f["1st"]=f.Image,e.TAGS=f,e.ImageIFD={ProcessingSoftware:11,NewSubfileType:254,SubfileType:255,ImageWidth:256,ImageLength:257,BitsPerSample:258,Compression:259,PhotometricInterpretation:262,Threshholding:263,CellWidth:264,CellLength:265,FillOrder:266,DocumentName:269,ImageDescription:270,Make:271,Model:272,StripOffsets:273,Orientation:274,SamplesPerPixel:277,RowsPerStrip:278,StripByteCounts:279,XResolution:282,YResolution:283,PlanarConfiguration:284,GrayResponseUnit:290,GrayResponseCurve:291,T4Options:292,T6Options:293,ResolutionUnit:296,TransferFunction:301,Software:305,DateTime:306,Artist:315,HostComputer:316,Predictor:317,WhitePoint:318,PrimaryChromaticities:319,ColorMap:320,HalftoneHints:321,TileWidth:322,TileLength:323,TileOffsets:324,TileByteCounts:325,SubIFDs:330,InkSet:332,InkNames:333,NumberOfInks:334,DotRange:336,TargetPrinter:337,ExtraSamples:338,SampleFormat:339,SMinSampleValue:340,SMaxSampleValue:341,TransferRange:342,ClipPath:343,XClipPathUnits:344,YClipPathUnits:345,Indexed:346,JPEGTables:347,OPIProxy:351,JPEGProc:512,JPEGInterchangeFormat:513,JPEGInterchangeFormatLength:514,JPEGRestartInterval:515,JPEGLosslessPredictors:517,JPEGPointTransforms:518,JPEGQTables:519,JPEGDCTables:520,JPEGACTables:521,YCbCrCoefficients:529,YCbCrSubSampling:530,YCbCrPositioning:531,ReferenceBlackWhite:532,XMLPacket:700,Rating:18246,RatingPercent:18249,ImageID:32781,CFARepeatPatternDim:33421,CFAPattern:33422,BatteryLevel:33423,Copyright:33432,ExposureTime:33434,ImageResources:34377,ExifTag:34665,InterColorProfile:34675,GPSTag:34853,Interlace:34857,TimeZoneOffset:34858,SelfTimerMode:34859,FlashEnergy:37387,SpatialFrequencyResponse:37388,Noise:37389,FocalPlaneXResolution:37390,FocalPlaneYResolution:37391,FocalPlaneResolutionUnit:37392,ImageNumber:37393,SecurityClassification:37394,ImageHistory:37395,ExposureIndex:37397,TIFFEPStandardID:37398,SensingMethod:37399,XPTitle:40091,XPComment:40092,XPAuthor:40093,XPKeywords:40094,XPSubject:40095,PrintImageMatching:50341,DNGVersion:50706,DNGBackwardVersion:50707,UniqueCameraModel:50708,LocalizedCameraModel:50709,CFAPlaneColor:50710,CFALayout:50711,LinearizationTable:50712,BlackLevelRepeatDim:50713,BlackLevel:50714,BlackLevelDeltaH:50715,BlackLevelDeltaV:50716,WhiteLevel:50717,DefaultScale:50718,DefaultCropOrigin:50719,DefaultCropSize:50720,ColorMatrix1:50721,ColorMatrix2:50722,CameraCalibration1:50723,CameraCalibration2:50724,ReductionMatrix1:50725,ReductionMatrix2:50726,AnalogBalance:50727,AsShotNeutral:50728,AsShotWhiteXY:50729,BaselineExposure:50730,BaselineNoise:50731,BaselineSharpness:50732,BayerGreenSplit:50733,LinearResponseLimit:50734,CameraSerialNumber:50735,LensInfo:50736,ChromaBlurRadius:50737,AntiAliasStrength:50738,ShadowScale:50739,DNGPrivateData:50740,MakerNoteSafety:50741,CalibrationIlluminant1:50778,CalibrationIlluminant2:50779,BestQualityScale:50780,RawDataUniqueID:50781,OriginalRawFileName:50827,OriginalRawFileData:50828,ActiveArea:50829,MaskedAreas:50830,AsShotICCProfile:50831,AsShotPreProfileMatrix:50832,CurrentICCProfile:50833,CurrentPreProfileMatrix:50834,ColorimetricReference:50879,CameraCalibrationSignature:50931,ProfileCalibrationSignature:50932,AsShotProfileName:50934,NoiseReductionApplied:50935,ProfileName:50936,ProfileHueSatMapDims:50937,ProfileHueSatMapData1:50938,ProfileHueSatMapData2:50939,ProfileToneCurve:50940,ProfileEmbedPolicy:50941,ProfileCopyright:50942,ForwardMatrix1:50964,ForwardMatrix2:50965,PreviewApplicationName:50966,PreviewApplicationVersion:50967,PreviewSettingsName:50968,PreviewSettingsDigest:50969,PreviewColorSpace:50970,PreviewDateTime:50971,RawImageDigest:50972,OriginalRawFileDigest:50973,SubTileBlockSize:50974,RowInterleaveFactor:50975,ProfileLookTableDims:50981,ProfileLookTableData:50982,OpcodeList1:51008,OpcodeList2:51009,OpcodeList3:51022,NoiseProfile:51041},e.ExifIFD={ExposureTime:33434,FNumber:33437,ExposureProgram:34850,SpectralSensitivity:34852,ISOSpeedRatings:34855,OECF:34856,SensitivityType:34864,StandardOutputSensitivity:34865,RecommendedExposureIndex:34866,ISOSpeed:34867,ISOSpeedLatitudeyyy:34868,ISOSpeedLatitudezzz:34869,ExifVersion:36864,DateTimeOriginal:36867,DateTimeDigitized:36868,ComponentsConfiguration:37121,CompressedBitsPerPixel:37122,ShutterSpeedValue:37377,ApertureValue:37378,BrightnessValue:37379,ExposureBiasValue:37380,MaxApertureValue:37381,SubjectDistance:37382,MeteringMode:37383,LightSource:37384,Flash:37385,FocalLength:37386,SubjectArea:37396,MakerNote:37500,UserComment:37510,SubSecTime:37520,SubSecTimeOriginal:37521,SubSecTimeDigitized:37522,FlashpixVersion:40960,ColorSpace:40961,PixelXDimension:40962,PixelYDimension:40963,RelatedSoundFile:40964,InteroperabilityTag:40965,FlashEnergy:41483,SpatialFrequencyResponse:41484,FocalPlaneXResolution:41486,FocalPlaneYResolution:41487,FocalPlaneResolutionUnit:41488,SubjectLocation:41492,ExposureIndex:41493,SensingMethod:41495,FileSource:41728,SceneType:41729,CFAPattern:41730,CustomRendered:41985,ExposureMode:41986,WhiteBalance:41987,DigitalZoomRatio:41988,FocalLengthIn35mmFilm:41989,SceneCaptureType:41990,GainControl:41991,Contrast:41992,Saturation:41993,Sharpness:41994,DeviceSettingDescription:41995,SubjectDistanceRange:41996,ImageUniqueID:42016,CameraOwnerName:42032,BodySerialNumber:42033,LensSpecification:42034,LensMake:42035,LensModel:42036,LensSerialNumber:42037,Gamma:42240},e.GPSIFD={GPSVersionID:0,GPSLatitudeRef:1,GPSLatitude:2,GPSLongitudeRef:3,GPSLongitude:4,GPSAltitudeRef:5,GPSAltitude:6,GPSTimeStamp:7,GPSSatellites:8,GPSStatus:9,GPSMeasureMode:10,GPSDOP:11,GPSSpeedRef:12,GPSSpeed:13,GPSTrackRef:14,GPSTrack:15,GPSImgDirectionRef:16,GPSImgDirection:17,GPSMapDatum:18,GPSDestLatitudeRef:19,GPSDestLatitude:20,GPSDestLongitudeRef:21,GPSDestLongitude:22,GPSDestBearingRef:23,GPSDestBearing:24,GPSDestDistanceRef:25,GPSDestDistance:26,GPSProcessingMethod:27,GPSAreaInformation:28,GPSDateStamp:29,GPSDifferential:30,GPSHPositioningError:31},e.InteropIFD={InteroperabilityIndex:1},e.GPSHelper={degToDmsRational:function(e){let t=Math.abs(e),i=t%1*60,n=i%1*60;return[[Math.floor(t),1],[Math.floor(i),1],[Math.round(100*n),100]]},dmsRationalToDeg:function(e,t){let i="S"===t||"W"===t?-1:1;return(e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600)*i}},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=e),exports.piexif=e):window.piexif=e}(); \ No newline at end of file diff --git a/public/acuant/11.9.2/AcuantMetricsService.min.js b/public/acuant/11.9.2/AcuantMetricsService.min.js new file mode 100644 index 00000000000..21c0e1dffdc --- /dev/null +++ b/public/acuant/11.9.2/AcuantMetricsService.min.js @@ -0,0 +1 @@ +var AcuantMetricsModule=function(){var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(e=e||__filename),function(t){var r,n,o;t=t||{},r||(r=void 0!==t?t:{}),r.ready=new Promise((function(e,t){n=e,o=t})),Object.getOwnPropertyDescriptor(r.ready,"_acuantMetrics")||(Object.defineProperty(r.ready,"_acuantMetrics",{configurable:!0,get:function(){Oe("You are getting _acuantMetrics on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_acuantMetrics",{configurable:!0,set:function(){Oe("You are setting _acuantMetrics on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_acuantMoire")||(Object.defineProperty(r.ready,"_acuantMoire",{configurable:!0,get:function(){Oe("You are getting _acuantMoire on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_acuantMoire",{configurable:!0,set:function(){Oe("You are setting _acuantMoire on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_emscripten_stack_get_end")||(Object.defineProperty(r.ready,"_emscripten_stack_get_end",{configurable:!0,get:function(){Oe("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_emscripten_stack_get_end",{configurable:!0,set:function(){Oe("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_emscripten_stack_get_free")||(Object.defineProperty(r.ready,"_emscripten_stack_get_free",{configurable:!0,get:function(){Oe("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_emscripten_stack_get_free",{configurable:!0,set:function(){Oe("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_emscripten_stack_init")||(Object.defineProperty(r.ready,"_emscripten_stack_init",{configurable:!0,get:function(){Oe("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_emscripten_stack_init",{configurable:!0,set:function(){Oe("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_stackSave")||(Object.defineProperty(r.ready,"_stackSave",{configurable:!0,get:function(){Oe("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_stackSave",{configurable:!0,set:function(){Oe("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_stackRestore")||(Object.defineProperty(r.ready,"_stackRestore",{configurable:!0,get:function(){Oe("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_stackRestore",{configurable:!0,set:function(){Oe("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_stackAlloc")||(Object.defineProperty(r.ready,"_stackAlloc",{configurable:!0,get:function(){Oe("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_stackAlloc",{configurable:!0,set:function(){Oe("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___wasm_call_ctors")||(Object.defineProperty(r.ready,"___wasm_call_ctors",{configurable:!0,get:function(){Oe("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___wasm_call_ctors",{configurable:!0,set:function(){Oe("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_fflush")||(Object.defineProperty(r.ready,"_fflush",{configurable:!0,get:function(){Oe("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_fflush",{configurable:!0,set:function(){Oe("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___errno_location")||(Object.defineProperty(r.ready,"___errno_location",{configurable:!0,get:function(){Oe("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___errno_location",{configurable:!0,set:function(){Oe("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_malloc")||(Object.defineProperty(r.ready,"_malloc",{configurable:!0,get:function(){Oe("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_malloc",{configurable:!0,set:function(){Oe("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_free")||(Object.defineProperty(r.ready,"_free",{configurable:!0,get:function(){Oe("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_free",{configurable:!0,set:function(){Oe("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___cxa_is_pointer_type")||(Object.defineProperty(r.ready,"___cxa_is_pointer_type",{configurable:!0,get:function(){Oe("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___cxa_is_pointer_type",{configurable:!0,set:function(){Oe("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___cxa_can_catch")||(Object.defineProperty(r.ready,"___cxa_can_catch",{configurable:!0,get:function(){Oe("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___cxa_can_catch",{configurable:!0,set:function(){Oe("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_setThrew")||(Object.defineProperty(r.ready,"_setThrew",{configurable:!0,get:function(){Oe("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_setThrew",{configurable:!0,set:function(){Oe("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___getTypeName")||(Object.defineProperty(r.ready,"___getTypeName",{configurable:!0,get:function(){Oe("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___getTypeName",{configurable:!0,set:function(){Oe("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(r.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get:function(){Oe("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set:function(){Oe("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"onRuntimeInitialized")||(Object.defineProperty(r.ready,"onRuntimeInitialized",{configurable:!0,get:function(){Oe("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"onRuntimeInitialized",{configurable:!0,set:function(){Oe("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var i,a={};for(i in r)r.hasOwnProperty(i)&&(a[i]=r[i]);var s="./this.program",c="object"==typeof window,d="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=!c&&!u&&!d;if(r.ENVIRONMENT)throw Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var l,E,f,O,h,g="";if(u){if("object"!=typeof process||"function"!=typeof require)throw Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=d?require("path").dirname(g)+"/":__dirname+"/",l=function(e,t){return O||(O=require("fs")),h||(h=require("path")),e=h.normalize(e),O.readFileSync(e,t?null:"utf8")},f=function(e){return(e=l(e,!0)).buffer||(e=new Uint8Array(e)),R(e.buffer),e},E=function(e,t,r){O||(O=require("fs")),h||(h=require("path")),e=h.normalize(e),O.readFile(e,(function(e,n){e?r(e):t(n.buffer)}))},1=n);)++r;if(16o?n+=String.fromCharCode(o):(o-=65536,n+=String.fromCharCode(55296|o>>10,56320|1023&o))}}else n+=String.fromCharCode(o)}return n}function S(e,t){return e?v(N,e,t):""}function A(e,t,r,n){if(!(0=a)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(127>=a){if(r>=n)break;t[r++]=a}else{if(2047>=a){if(r+1>=n)break;t[r++]=192|a>>6}else{if(65535>=a){if(r+2>=n)break;t[r++]=224|a>>12}else{if(r+3>=n)break;1114111>18,t[r++]=128|a>>12&63}t[r++]=128|a>>6&63}t[r++]=128|63&a}}return t[r]=0,r-o}function F(e,t,r){R("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),A(e,N,t,r)}function I(e){for(var t=0,r=0;r=n&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),127>=n?++t:t=2047>=n?t+2:65535>=n?t+3:t+4}return t}var j,U,N,x,k,H,C,X,Q,L="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function W(e,t){R(0==e%2,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var r=e>>1,n=r+t/2;!(r>=n)&&k[r];)++r;if(32<(r<<=1)-e&&L)return L.decode(N.subarray(e,r));for(r="",n=0;!(n>=t/2);++n){var o=x[e+2*n>>1];if(0==o)break;r+=String.fromCharCode(o)}return r}function B(e,t,r){if(R(0==t%2,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),R("number"==typeof r,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),2>r)return 0;var n=t;r=(r-=2)<2*e.length?r/2:e.length;for(var o=0;o>1]=e.charCodeAt(o),t+=2;return x[t>>1]=0,t-n}function G(e){return 2*e.length}function Y(e,t){R(0==e%4,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var r=0,n="";!(r>=t/4);){var o=H[e+4*r>>2];if(0==o)break;++r,65536<=o?(o-=65536,n+=String.fromCharCode(55296|o>>10,56320|1023&o)):n+=String.fromCharCode(o)}return n}function V(e,t,r){if(R(0==t%4,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),R("number"==typeof r,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),4>r)return 0;var n=t;r=n+r-4;for(var o=0;o=i)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++o);if(H[t>>2]=i,(t+=4)+4>r)break}return H[t>>2]=0,t-n}function z(e){for(var t=0,r=0;r=n&&++r,t+=4}return t}function Z(e,t){R(0<=e.length,"writeArrayToMemory array must have a length (should be an array or typed array)"),U.set(e,t)}function q(){var e=b.buffer;j=e,r.HEAP8=U=new Int8Array(e),r.HEAP16=x=new Int16Array(e),r.HEAP32=H=new Int32Array(e),r.HEAPU8=N=new Uint8Array(e),r.HEAPU16=k=new Uint16Array(e),r.HEAPU32=C=new Uint32Array(e),r.HEAPF32=X=new Float32Array(e),r.HEAPF64=Q=new Float64Array(e)}r.TOTAL_STACK&&R(5242880===r.TOTAL_STACK,"the stack size can no longer be determined at runtime");var K,J=r.INITIAL_MEMORY||16777216;function $(){var e=rr();R(0==(3&e)),C[1+(e>>2)]=34821223,C[2+(e>>2)]=2310721022,H[0]=1668509029}function ee(){if(!M){var e=rr(),t=C[1+(e>>2)];e=C[2+(e>>2)],34821223==t&&2310721022==e||Oe("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+e.toString(16)+" "+t.toString(16)),1668509029!==H[0]&&Oe("Runtime error: The application has corrupted its heap memory area (address zero)!")}}Object.getOwnPropertyDescriptor(r,"INITIAL_MEMORY")||Object.defineProperty(r,"INITIAL_MEMORY",{configurable:!0,get:function(){Oe("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),R(5242880<=J,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+J+"! (TOTAL_STACK=5242880)"),R("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),R(!r.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),R(16777216==J,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically");var te=new Int16Array(1),re=new Int8Array(te.buffer);if(te[0]=25459,115!==re[0]||99!==re[1])throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)";var ne=[],oe=[],ie=[],ae=!1;function se(){var e=r.preRun.shift();ne.unshift(e)}R(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),R(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),R(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),R(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var ce,de,ue,pe=0,le=null,Ee=null,fe={};function Oe(e){r.onAbort&&r.onAbort(e),T(e),M=!0,e="abort("+e+") at ";e:{var t=Error();if(!t.stack){try{throw Error()}catch(e){t=e}if(!t.stack){t="(no stack trace available)";break e}}t=t.stack.toString()}throw r.extraStackTrace&&(t+="\n"+r.extraStackTrace()),t=De(t),e=new WebAssembly.RuntimeError(e+t),o(e),e}function he(){return ce.startsWith("data:application/octet-stream;base64,")}function ge(e){return function(){var t=r.asm;return R(ae,"native function `"+e+"` called before runtime initialization"),R(!0,"native function `"+e+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),t[e]||R(t[e],"exported native function `"+e+"` not found"),t[e].apply(null,arguments)}}if(r.preloadedImages={},r.preloadedAudios={},ce="AcuantMetricsService.wasm",!he()){var _e=ce;ce=r.locateFile?r.locateFile(_e,g):g+_e}function Te(){var e=ce;try{if(e==ce&&y)return new Uint8Array(y);if(f)return f(e);throw"both async and sync fetching of the wasm failed"}catch(e){Oe(e)}}function we(e){for(;0>2]=e},this.C=function(){return H[this.g+4>>2]},this.Aa=function(e){H[this.g+8>>2]=e},this.pa=function(){return H[this.g+8>>2]},this.Ba=function(){H[this.g>>2]=0},this.Y=function(e){U[this.g+12>>0]=e?1:0},this.oa=function(){return 0!=U[this.g+12>>0]},this.Z=function(e){U[this.g+13>>0]=e?1:0},this.ha=function(){return 0!=U[this.g+13>>0]},this.sa=function(e,t){this.Ca(e),this.Aa(t),this.Ba(),this.Y(!1),this.Z(!1)},this.la=function(){H[this.g>>2]=H[this.g>>2]+1},this.xa=function(){var e=H[this.g>>2];return H[this.g>>2]=e-1,R(0>2]=e},this.J=function(){return H[this.g>>2]},this.F=function(e){H[this.g+4>>2]=e},this.I=function(){return this.g+4},this.na=function(){return H[this.g+4>>2]},this.qa=function(){if(ur(this.M().C()))return H[this.J()>>2];var e=this.na();return 0!==e?e:this.J()},this.M=function(){return new ye(this.J())},void 0===e?(this.g=er(8),this.F(0)):this.g=e}var be=[],Me=0,Re=0;function me(e){try{return tr(new ye(e).g)}catch(e){T("exception during cxa_free_exception: "+e)}}function ve(e,t){for(var r=0,n=e.length-1;0<=n;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e}function Se(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=ve(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e}function Ae(e){var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],e||t?(t&&(t=t.substr(0,t.length-1)),e+t):"."}function Fe(e){if("/"===e)return"/";var t=(e=(e=Se(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)}function Ie(){for(var e="",t=!1,r=arguments.length-1;-1<=r&&!t;r--){if("string"!=typeof(t=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!t)return"";e=t+"/"+e,t="/"===t.charAt(0)}return(t?"/":"")+(e=ve(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."}var je=[];function Ue(e,t){je[e]={input:[],output:[],D:t},st(e,Ne)}var Ne={open:function(e){var t=je[e.node.rdev];if(!t)throw new Ve(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.D.flush(e.tty)},flush:function(e){e.tty.D.flush(e.tty)},read:function(e,t,r,n){if(!e.tty||!e.tty.D.ga)throw new Ve(60);for(var o=0,i=0;i=t||(t=Math.max(t,r*(1048576>r?2:1.125)>>>0),0!=r&&(t=Math.max(t,256)),r=e.h,e.h=new Uint8Array(t),0=e.node.l)return 0;if(R(0<=(e=Math.min(e.node.l-o,n))),8t)throw new Ve(28);return t},$:function(e,t,r){He.da(e.node,t+r),e.node.l=Math.max(e.node.l,t+r)},ia:function(e,t,r,n,o,i){if(0!==t)throw new Ve(28);if(32768!=(61440&e.node.mode))throw new Ve(43);if(e=e.node.h,2&i||e.buffer!==j){if((0>>0)%Ge.length}function Je(e,t){var r;if(r=(r=rt(e,"x"))?r:e.i.lookup?0:2)throw new Ve(r,e);for(r=Ge[Ke(e.id,t)];r;r=r.va){var n=r.name;if(r.parent.id===e.id&&n===t)return r}return e.i.lookup(e,t)}function $e(e,t,r,n){return R("object"==typeof e),t=Ke((e=new Zt(e,t,r,n)).parent.id,e.name),e.va=Ge[t],Ge[t]=e}var et={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090};function tt(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t}function rt(e,t){return Ye?0:!t.includes("r")||292&e.mode?t.includes("w")&&!(146&e.mode)||t.includes("x")&&!(73&e.mode)?2:0:2}function nt(e,t){try{return Je(e,t),20}catch(e){}return rt(e,"wx")}function ot(e,t){Tt||((Tt=function(){}).prototype={});var r,n=new Tt;for(r in e)n[r]=e[r];return e=n,t=function(e){for(e=e||0;e<=4096;e++)if(!We[e])return e;throw new Ve(33)}(t),e.fd=t,We[t]=e}var it,at={open:function(e){e.j=Le[e.node.rdev].j,e.j.open&&e.j.open(e)},B:function(){throw new Ve(70)}};function st(e,t){Le[e]={j:t}}function ct(e,t){if("string"==typeof e)throw e;var r="/"===t,n=!t;if(r&&Qe)throw new Ve(10);if(!r&&!n){var o=Ze(t,{fa:!1});if(t=o.path,(o=o.node).O)throw new Ve(10);if(16384!=(61440&o.mode))throw new Ve(54)}t={type:e,Ma:{},ja:t,ua:[]},(e=e.u(t)).u=t,t.root=e,r?Qe=e:o&&(o.O=t,o.u&&o.u.ua.push(t))}function dt(e,t,r){var n=Ze(e,{parent:!0}).node;if(!(e=Fe(e))||"."===e||".."===e)throw new Ve(28);var o=nt(n,e);if(o)throw new Ve(o);if(!n.i.N)throw new Ve(63);return n.i.N(n,e,t,r)}function ut(e){return dt(e,16895,0)}function pt(e,t,r){void 0===r&&(r=t,t=438),dt(e,8192|t,r)}function lt(e,t){if(!Ie(e))throw new Ve(44);var r=Ze(t,{parent:!0}).node;if(!r)throw new Ve(44);var n=nt(r,t=Fe(t));if(n)throw new Ve(n);if(!r.i.symlink)throw new Ve(63);r.i.symlink(r,t,e)}function Et(e){if(!(e=Ze(e).node))throw new Ve(44);if(!e.i.readlink)throw new Ve(28);return Ie(qe(e.parent),e.i.readlink(e))}function ft(e,t,n,o){if(""===e)throw new Ve(44);if("string"==typeof t){var i=et[t];if(void 0===i)throw Error("Unknown file open mode: "+t);t=i}if(n=64&t?4095&(void 0===n?438:n)|32768:0,"object"==typeof e)var a=e;else{e=Se(e);try{a=Ze(e,{ea:!(131072&t)}).node}catch(e){}}if(i=!1,64&t)if(a){if(128&t)throw new Ve(20)}else a=dt(e,n,0),i=!0;if(!a)throw new Ve(44);if(8192==(61440&a.mode)&&(t&=-513),65536&t&&16384!=(61440&a.mode))throw new Ve(54);if(!i&&(n=a?40960==(61440&a.mode)?32:16384==(61440&a.mode)&&("r"!==tt(t)||512&t)?31:rt(a,tt(t)):44))throw new Ve(n);if(512&t){if(!(n="string"==typeof(n=a)?Ze(n,{ea:!0}).node:n).i.s)throw new Ve(63);if(16384==(61440&n.mode))throw new Ve(31);if(32768!=(61440&n.mode))throw new Ve(28);if(i=rt(n,"w"))throw new Ve(i);n.i.s(n,{size:0,timestamp:Date.now()})}return t&=-131713,(o=ot({node:a,path:qe(a),flags:t,seekable:!0,position:0,j:a.j,Ha:[],error:!1},o)).j.open&&o.j.open(o),!r.logReadFiles||1&t||(wt||(wt={}),e in wt||(wt[e]=1)),o}function Ot(e,t,r){if(null===e.fd)throw new Ve(8);if(!e.seekable||!e.j.B)throw new Ve(70);if(0!=r&&1!=r&&2!=r)throw new Ve(28);e.position=e.j.B(e,t,r),e.Ha=[]}function ht(){Ve||((Ve=function(e,t){this.node=t,this.za=function(e){for(var t in this.A=e,Xe)if(Xe[t]===e){this.code=t;break}},this.za(e),this.message=Ce[e],this.stack&&(Object.defineProperty(this,"stack",{value:Error().stack,writable:!0}),this.stack=De(this.stack))}).prototype=Error(),Ve.prototype.constructor=Ve,[44].forEach((function(e){ze[e]=new Ve(e),ze[e].stack=""})))}function gt(e,t,r){e=Se("/dev/"+e);var n=function(e,t){var r=0;return e&&(r|=365),t&&(r|=146),r}(!!t,!!r);_t||(_t=64);var o=_t++<<8|0;st(o,{open:function(e){e.seekable=!1},close:function(){r&&r.buffer&&r.buffer.length&&r(10)},read:function(e,r,n,o){for(var i=0,a=0;a>2]}function bt(e){if(!(e=We[e]))throw new Ve(8);return e}function Mt(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Rt=void 0;function mt(e){for(var t="";N[e];)t+=Rt[N[e++]];return t}var vt={},St={},At={};function Ft(e){var t=Error,r=function(e,t){if(void 0===e)e="_unknown";else{var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);e=48<=r&&57>=r?"_"+e:e}return new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}(e,(function(t){this.name=e,this.message=t,void 0!==(t=Error(t).stack)&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var It=void 0;function jt(e){throw new It(e)}function Ut(e,t,r){if(r=r||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=t.name;if(e||jt('type "'+n+'" must have a positive integer typeid pointer'),St.hasOwnProperty(e)){if(r.ra)return;jt("Cannot register type '"+n+"' twice")}St[e]=t,delete At[e],vt.hasOwnProperty(e)&&(t=vt[e],delete vt[e],t.forEach((function(e){e()})))}var Nt=[],xt=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function kt(e){return this.fromWireType(C[e>>2])}function Ht(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Ct(e,t){switch(t){case 2:return function(e){return this.fromWireType(X[e>>2])};case 3:return function(e){return this.fromWireType(Q[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Xt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return N[e]};case 1:return r?function(e){return x[e>>1]}:function(e){return k[e>>1]};case 2:return r?function(e){return H[e>>2]}:function(e){return C[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Qt,Lt={};function Wt(){if(!Qt){var e,t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:s||"./this.program"};for(e in Lt)void 0===Lt[e]?delete t[e]:t[e]=Lt[e];var r=[];for(e in t)r.push(e+"="+t[e]);Qt=r}return Qt}function Bt(e){return 0==e%4&&(0!=e%100||0==e%400)}function Gt(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}var Yt=[31,29,31,30,31,30,31,31,30,31,30,31],Vt=[31,28,31,30,31,30,31,31,30,31,30,31];function zt(e,t){for(e=new Date(e.getTime());0n-e.getDate())){e.setDate(e.getDate()+t);break}t-=n-e.getDate()+1,e.setDate(1),11>r?e.setMonth(r+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return e}function Zt(e,t,r,n){e||(e=this),this.parent=e,this.u=e.u,this.O=null,this.id=Be++,this.name=t,this.mode=r,this.i={},this.j={},this.rdev=n}Object.defineProperties(Zt.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}}}),ht(),Ge=Array(4096),ct(He,"/"),ut("/tmp"),ut("/home"),ut("/home/web_user"),function(){ut("/dev"),st(259,{read:function(){return 0},write:function(e,t,r,n){return n}}),pt("/dev/null",259),Ue(1280,xe),Ue(1536,ke),pt("/dev/tty",1280),pt("/dev/tty1",1536);var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(u)try{var t=require("crypto");return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){Oe("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();gt("random",e),gt("urandom",e),ut("/dev/shm"),ut("/dev/shm/tmp")}(),function(){ut("/proc");var e=ut("/proc/self");ut("/proc/self/fd"),ct({u:function(){var t=$e(e,"fd",16895,73);return t.i={lookup:function(e,t){var r=We[+t];if(!r)throw new Ve(8);return(e={parent:null,u:{ja:"fake"},i:{readlink:function(){return r.path}}}).parent=e}},t}},"/proc/self/fd")}(),Xe={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};for(var qt=Array(256),Kt=0;256>Kt;++Kt)qt[Kt]=String.fromCharCode(Kt);function Jt(e,t){var r=Array(I(e)+1);return e=A(e,r,0,r.length),t&&(r.length=e),r}Rt=qt,It=r.BindingError=Ft("BindingError"),r.InternalError=Ft("InternalError"),r.count_emval_handles=function(){for(var e=0,t=5;to?-28:ft(n.path,n.flags,0,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:return o=Pt(),n.flags|=o,0;case 12:return o=Pt(),x[o+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return H[nr()>>2]=28,-1;default:return-28}}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),-e.A}},__sys_ioctl:function(e,t,r){yt=r;try{var n=bt(e);switch(t){case 21509:case 21505:return n.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=Pt();return H[o>>2]=0;case 21520:return n.tty?-28:-59;case 21531:if(e=o=Pt(),!n.j.ta)throw new Ve(59);return n.j.ta(n,t,e);case 21523:case 21524:return n.tty?0:-59;default:Oe("bad ioctl syscall "+t)}}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),-e.A}},__sys_open:function(e,t,r){yt=r;try{return ft(S(e),t,r?Pt():0).fd}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),-e.A}},_embind_register_bigint:function(){},_embind_register_bool:function(e,t,r,n,o){var i=Mt(r);Ut(e,{name:t=mt(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:o},argPackAdvance:8,readValueFromPointer:function(e){if(1===r)var n=U;else if(2===r)n=x;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);n=H}return this.fromWireType(n[e>>i])},H:null})},_embind_register_emval:function(e,t){Ut(e,{name:t=mt(t),fromWireType:function(e){var t=xt[e].value;return 4>>s}}var c=t.includes("unsigned");Ut(e,{name:t,fromWireType:i,toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Ht(r)+'" to '+this.name);if(ro)throw new TypeError('Passing a number "'+Ht(r)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+n+", "+o+"]!");return c?r>>>0:0|r},argPackAdvance:8,readValueFromPointer:Xt(t,a,0!==n),H:null})},_embind_register_memory_view:function(e,t,r){function n(e){var t=C;return new o(j,t[(e>>=2)+1],t[e])}var o=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];Ut(e,{name:r=mt(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ra:!0})},_embind_register_std_string:function(e,t){var r="std::string"===(t=mt(t));Ut(e,{name:t,fromWireType:function(e){var t=C[e>>2];if(r)for(var n=e+4,o=0;o<=t;++o){var i=e+4+o;if(o==t||0==N[i]){if(n=S(n,i-n),void 0===a)var a=n;else a+=String.fromCharCode(0),a+=n;n=i+1}}else{for(a=Array(t),o=0;o>2]=o,r&&n)F(t,i+4,o+1);else if(n)for(n=0;n>2],i=a(),c=e+4,d=0;d<=o;++d){var u=e+4+d*t;d!=o&&0!=i[u>>s]||(c=n(c,u-c),void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),c=u+t)}return tr(e),r},toWireType:function(e,n){"string"!=typeof n&&jt("Cannot pass non-string to C++ string type "+r);var a=i(n),c=er(4+a+t);return C[c>>2]=a>>s,o(n,c+4,a+t),null!==e&&e.push(tr,c),c},argPackAdvance:8,readValueFromPointer:kt,H:function(e){tr(e)}})},_embind_register_void:function(e,t){Ut(e,{La:!0,name:t=mt(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},abort:function(){Oe()},emscripten_memcpy_big:function(e,t,r){N.copyWithin(e,t,t+r)},emscripten_resize_heap:function(e){var t=N.length;if(R((e>>>=0)>t),2147483648=r;r*=2){var n=t*(1+.2/r);n=Math.min(n,e+100663296),0<(n=Math.max(e,n))%65536&&(n+=65536-n%65536);e:{var o=n=Math.min(2147483648,n);try{b.grow(o-j.byteLength+65535>>>16),q();var i=1;break e}catch(e){T("emscripten_realloc_buffer: Attempted to grow heap from "+j.byteLength+" bytes to "+o+" bytes, but got error: "+e)}i=void 0}if(i)return!0}return T("Failed to grow the heap from "+t+" bytes to "+n+" bytes, not enough memory!"),!1},environ_get:function(e,t){var r=0;return Wt().forEach((function(n,o){var i=t+r;for(o=H[e+4*o>>2]=i,i=0;i>0]=n.charCodeAt(i);U[o>>0]=0,r+=n.length+1})),0},environ_sizes_get:function(e,t){var r=Wt();H[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),H[t>>2]=n,0},fd_close:function(e){try{var t=bt(e);if(null===t.fd)throw new Ve(8);t.V&&(t.V=null);try{t.j.close&&t.j.close(t)}catch(e){throw e}finally{We[t.fd]=null}return t.fd=null,0}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},fd_read:function(e,t,r,n){try{e:{for(var o=bt(e),i=e=0;i>2],s=o,c=H[t+8*i>>2],d=a,u=void 0,p=U;if(0>d||0>u)throw new Ve(28);if(null===s.fd)throw new Ve(8);if(1==(2097155&s.flags))throw new Ve(8);if(16384==(61440&s.node.mode))throw new Ve(31);if(!s.j.read)throw new Ve(28);var l=void 0!==u;if(l){if(!s.seekable)throw new Ve(70)}else u=s.position;var E=s.j.read(s,p,c,d,u);l||(s.position+=E);var f=E;if(0>f){var O=-1;break e}if(e+=f,f>2]=O,0}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},fd_seek:function(e,t,r,n,o){try{var i=bt(e);return-9007199254740992>=(e=4294967296*r+(t>>>0))||9007199254740992<=e?-61:(Ot(i,e,n),ue=[i.position>>>0,(de=i.position,1<=+Math.abs(de)?0>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],H[o>>2]=ue[0],H[o+4>>2]=ue[1],i.V&&0===e&&0===n&&(i.V=null),0)}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},fd_write:function(e,t,r,n){try{e:{for(var o=bt(e),i=e=0;i>2],c=H[t+(8*i+4)>>2],d=void 0,u=U;if(0>c||0>d)throw new Ve(28);if(null===a.fd)throw new Ve(8);if(0==(2097155&a.flags))throw new Ve(8);if(16384==(61440&a.node.mode))throw new Ve(31);if(!a.j.write)throw new Ve(28);a.seekable&&1024&a.flags&&Ot(a,0,2);var p=void 0!==d;if(p){if(!a.seekable)throw new Ve(70)}else d=a.position;var l=a.j.write(a,u,s,c,d,void 0);p||(a.position+=l);var E=l;if(0>E){var f=-1;break e}e+=E}f=e}return H[n>>2]=f,0}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},getTempRet0:function(){return P},invoke_ddd:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_diii:function(e,t,r,n){var o=or();try{return K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fii:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiii:function(e,t,r,n){var o=or();try{return K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiii:function(e,t,r,n,o){var i=or();try{return K.get(e)(t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d){var u=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d)}catch(e){if(ir(u),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u){var p=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u)}catch(e){if(ir(p),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiiiiiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p,l,E,f,O,h){var g=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u,p,l,E,f,O,h)}catch(e){if(ir(g),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_i:function(e){var t=or();try{return K.get(e)()}catch(e){if(ir(t),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_id:function(e,t){var r=or();try{return K.get(e)(t)}catch(e){if(ir(r),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_ii:function(e,t){var r=or();try{return K.get(e)(t)}catch(e){if(ir(r),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iif:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iii:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiii:function(e,t,r,n){var o=or();try{return K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiidi:function(e,t,r,n,o,i){var a=or();try{return K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiii:function(e,t,r,n,o){var i=or();try{return K.get(e)(t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiid:function(e,t,r,n,o,i){var a=or();try{return K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiii:function(e,t,r,n,o,i){var a=or();try{return K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiii:function(e,t,r,n,o,i,a){var s=or();try{return K.get(e)(t,r,n,o,i,a)}catch(e){if(ir(s),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiii:function(e,t,r,n,o,i,a,s){var c=or();try{return K.get(e)(t,r,n,o,i,a,s)}catch(e){if(ir(c),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u){var p=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u)}catch(e){if(ir(p),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p){var l=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u,p)}catch(e){if(ir(l),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p,l){var E=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u,p,l)}catch(e){if(ir(E),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_jiiii:function(e,t,r,n,o){var i=or();try{return lr(e,t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_v:function(e){var t=or();try{K.get(e)()}catch(e){if(ir(t),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_vi:function(e,t){var r=or();try{K.get(e)(t)}catch(e){if(ir(r),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_vid:function(e,t,r){var n=or();try{K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_vii:function(e,t,r){var n=or();try{K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viid:function(e,t,r,n){var o=or();try{K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viif:function(e,t,r,n){var o=or();try{K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viii:function(e,t,r,n){var o=or();try{K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiii:function(e,t,r,n,o){var i=or();try{K.get(e)(t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiii:function(e,t,r,n,o,i){var a=or();try{K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiii:function(e,t,r,n,o,i,a){var s=or();try{K.get(e)(t,r,n,o,i,a)}catch(e){if(ir(s),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiii:function(e,t,r,n,o,i,a,s){var c=or();try{K.get(e)(t,r,n,o,i,a,s)}catch(e){if(ir(c),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiii:function(e,t,r,n,o,i,a,s,c,d){var u=or();try{K.get(e)(t,r,n,o,i,a,s,c,d)}catch(e){if(ir(u),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u){var p=or();try{K.get(e)(t,r,n,o,i,a,s,c,d,u)}catch(e){if(ir(p),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p){var l=or();try{K.get(e)(t,r,n,o,i,a,s,c,d,u,p)}catch(e){if(ir(l),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p,l,E,f,O){var h=or();try{K.get(e)(t,r,n,o,i,a,s,c,d,u,p,l,E,f,O)}catch(e){if(ir(h),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},llvm_eh_typeid_for:function(e){return e},setTempRet0:function(e){P=e},strftime_l:function(e,t,r,n){return function(e,t,r,n){function o(e,t,r){for(e="number"==typeof e?e.toString():e||"";e.lengthe?-1:0=a(r,e)?0>=a(t,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var d=H[n+40>>2];for(var u in n={Fa:H[n>>2],Ea:H[n+4>>2],P:H[n+8>>2],L:H[n+12>>2],G:H[n+16>>2],m:H[n+20>>2],R:H[n+24>>2],S:H[n+28>>2],Na:H[n+32>>2],Da:H[n+36>>2],Ga:d?S(d):""},r=S(r),d={"%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"})r=r.replace(new RegExp(u,"g"),d[u]);var p="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),l="January February March April May June July August September October November December".split(" ");for(u in d={"%a":function(e){return p[e.R].substring(0,3)},"%A":function(e){return p[e.R]},"%b":function(e){return l[e.G].substring(0,3)},"%B":function(e){return l[e.G]},"%C":function(e){return i((e.m+1900)/100|0,2)},"%d":function(e){return i(e.L,2)},"%e":function(e){return o(e.L,2," ")},"%g":function(e){return c(e).toString().substring(2)},"%G":function(e){return c(e)},"%H":function(e){return i(e.P,2)},"%I":function(e){return 0==(e=e.P)?e=12:12e.P?"AM":"PM"},"%S":function(e){return i(e.Fa,2)},"%t":function(){return"\t"},"%u":function(e){return e.R||7},"%U":function(e){var t=new Date(e.m+1900,0,1),r=0===t.getDay()?t:zt(t,7-t.getDay());return 0>a(r,e=new Date(e.m+1900,e.G,e.L))?i(Math.ceil((31-r.getDate()+(Gt(Bt(e.getFullYear())?Yt:Vt,e.getMonth()-1)-31)+e.getDate())/7),2):0===a(r,t)?"01":"00"},"%V":function(e){var t=new Date(e.m+1901,0,4),r=s(new Date(e.m+1900,0,4));t=s(t);var n=zt(new Date(e.m+1900,0,1),e.S);return 0>a(n,r)?"53":0>=a(t,n)?"01":i(Math.ceil((r.getFullYear()a(r,e=new Date(e.m+1900,e.G,e.L))?i(Math.ceil((31-r.getDate()+(Gt(Bt(e.getFullYear())?Yt:Vt,e.getMonth()-1)-31)+e.getDate())/7),2):0===a(r,t)?"01":"00"},"%y":function(e){return(e.m+1900).toString().substring(2)},"%Y":function(e){return e.m+1900},"%z":function(e){var t=0<=(e=e.Da);return e=Math.abs(e)/60,(t?"+":"-")+String("0000"+(e/60*100+e%60)).slice(-4)},"%Z":function(e){return e.Ga},"%%":function(){return"%"}})r.includes(u)&&(r=r.replace(new RegExp(u,"g"),d[u](n)));return(u=Jt(r,!1)).length>t?0:(Z(u,e),u.length-1)}(e,t,r,n)}};!function(){function e(e){r.asm=e.exports,R(b=r.asm.memory,"memory not found in wasm exports"),q(),R(K=r.asm.__indirect_function_table,"table not found in wasm exports"),oe.unshift(r.asm.__wasm_call_ctors),pe--,r.monitorRunDependencies&&r.monitorRunDependencies(pe),R(fe["wasm-instantiate"]),delete fe["wasm-instantiate"],0==pe&&(null!==le&&(clearInterval(le),le=null),Ee&&(e=Ee,Ee=null,e()))}function t(t){R(r===a,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),a=null,e(t.instance)}function n(e){return function(){if(!y&&(c||d)){if("function"==typeof fetch&&!ce.startsWith("file://"))return fetch(ce,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ce+"'";return e.arrayBuffer()})).catch((function(){return Te()}));if(E)return new Promise((function(e,t){E(ce,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Te()}))}().then((function(e){return WebAssembly.instantiate(e,i)})).then((function(e){return e})).then(e,(function(e){T("failed to asynchronously prepare wasm: "+e),ce.startsWith("file://")&&T("warning: Loading from a file URI ("+ce+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),Oe(e)}))}var i={env:$t,wasi_snapshot_preview1:$t};pe++,r.monitorRunDependencies&&r.monitorRunDependencies(pe),R(!fe["wasm-instantiate"]),fe["wasm-instantiate"]=1,null===le&&"undefined"!=typeof setInterval&&(le=setInterval((function(){if(M)clearInterval(le),le=null;else{var e,t=!1;for(e in fe)t||(t=!0,T("still waiting on run dependencies:")),T("dependency: "+e);t&&T("(end of list)")}}),1e4));var a=r;if(r.instantiateWasm)try{return r.instantiateWasm(i,e)}catch(e){return T("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||he()||ce.startsWith("file://")||"function"!=typeof fetch?n(t):fetch(ce,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,i).then(t,(function(e){return T("wasm streaming compile failed: "+e),T("falling back to ArrayBuffer instantiation"),n(t)}))}))).catch(o)}(),r.___wasm_call_ctors=ge("__wasm_call_ctors"),r._acuantMetrics=ge("acuantMetrics"),r._acuantMoire=ge("acuantMoire");var er=r._malloc=ge("malloc"),tr=r._free=ge("free");r._fflush=ge("fflush"),r.___getTypeName=ge("__getTypeName"),r.___embind_register_native_and_builtin_types=ge("__embind_register_native_and_builtin_types");var rr=r._emscripten_stack_get_end=function(){return(rr=r._emscripten_stack_get_end=r.asm.emscripten_stack_get_end).apply(null,arguments)},nr=r.___errno_location=ge("__errno_location"),or=r.stackSave=ge("stackSave"),ir=r.stackRestore=ge("stackRestore"),ar=r.stackAlloc=ge("stackAlloc"),sr=r._emscripten_stack_init=function(){return(sr=r._emscripten_stack_init=r.asm.emscripten_stack_init).apply(null,arguments)};r._emscripten_stack_get_free=function(){return(r._emscripten_stack_get_free=r.asm.emscripten_stack_get_free).apply(null,arguments)};var cr=r._setThrew=ge("setThrew"),dr=r.___cxa_can_catch=ge("__cxa_can_catch"),ur=r.___cxa_is_pointer_type=ge("__cxa_is_pointer_type");r.dynCall_jiji=ge("dynCall_jiji");var pr,lr=r.dynCall_jiiii=ge("dynCall_jiiii");function Er(){function e(){if(!pr&&(pr=!0,r.calledRun=!0,!M)){if(ee(),R(!ae),ae=!0,!r.noFSInit&&!it){R(!it,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),it=!0,ht(),r.stdin=r.stdin,r.stdout=r.stdout,r.stderr=r.stderr,r.stdin?gt("stdin",r.stdin):lt("/dev/tty","/dev/stdin"),r.stdout?gt("stdout",null,r.stdout):lt("/dev/tty","/dev/stdout"),r.stderr?gt("stderr",null,r.stderr):lt("/dev/tty1","/dev/stderr");var e=ft("/dev/stdin",0),t=ft("/dev/stdout",1),o=ft("/dev/stderr",1);R(0===e.fd,"invalid handle for stdin ("+e.fd+")"),R(1===t.fd,"invalid handle for stdout ("+t.fd+")"),R(2===o.fd,"invalid handle for stderr ("+o.fd+")")}if(Ye=!1,we(oe),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),R(!r._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),ee(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),ie.unshift(e);we(ie)}}if(!(0>0];case"i16":return x[e>>1];case"i32":case"i64":return H[e>>2];case"float":return X[e>>2];case"double":return Q[e>>3];default:Oe("invalid type for getValue: "+t)}return null},Object.getOwnPropertyDescriptor(r,"allocate")||(r.allocate=function(){Oe("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF8ArrayToString")||(r.UTF8ArrayToString=function(){Oe("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF8ToString")||(r.UTF8ToString=function(){Oe("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF8Array")||(r.stringToUTF8Array=function(){Oe("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF8")||(r.stringToUTF8=function(){Oe("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"lengthBytesUTF8")||(r.lengthBytesUTF8=function(){Oe("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackTrace")||(r.stackTrace=function(){Oe("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnPreRun")||(r.addOnPreRun=function(){Oe("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnInit")||(r.addOnInit=function(){Oe("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnPreMain")||(r.addOnPreMain=function(){Oe("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnExit")||(r.addOnExit=function(){Oe("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnPostRun")||(r.addOnPostRun=function(){Oe("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeStringToMemory")||(r.writeStringToMemory=function(){Oe("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeArrayToMemory")||(r.writeArrayToMemory=function(){Oe("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeAsciiToMemory")||(r.writeAsciiToMemory=function(){Oe("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addRunDependency")||(r.addRunDependency=function(){Oe("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"removeRunDependency")||(r.removeRunDependency=function(){Oe("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createFolder")||(r.FS_createFolder=function(){Oe("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"FS_createPath")||(r.FS_createPath=function(){Oe("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createDataFile")||(r.FS_createDataFile=function(){Oe("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createPreloadedFile")||(r.FS_createPreloadedFile=function(){Oe("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createLazyFile")||(r.FS_createLazyFile=function(){Oe("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createLink")||(r.FS_createLink=function(){Oe("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"FS_createDevice")||(r.FS_createDevice=function(){Oe("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_unlink")||(r.FS_unlink=function(){Oe("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"getLEB")||(r.getLEB=function(){Oe("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getFunctionTables")||(r.getFunctionTables=function(){Oe("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"alignFunctionTables")||(r.alignFunctionTables=function(){Oe("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerFunctions")||(r.registerFunctions=function(){Oe("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addFunction")||(r.addFunction=function(){Oe("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"removeFunction")||(r.removeFunction=function(){Oe("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getFuncWrapper")||(r.getFuncWrapper=function(){Oe("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"prettyPrint")||(r.prettyPrint=function(){Oe("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"dynCall")||(r.dynCall=function(){Oe("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getCompilerSetting")||(r.getCompilerSetting=function(){Oe("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"print")||(r.print=function(){Oe("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"printErr")||(r.printErr=function(){Oe("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getTempRet0")||(r.getTempRet0=function(){Oe("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setTempRet0")||(r.setTempRet0=function(){Oe("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"callMain")||(r.callMain=function(){Oe("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"abort")||(r.abort=function(){Oe("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"keepRuntimeAlive")||(r.keepRuntimeAlive=function(){Oe("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"zeroMemory")||(r.zeroMemory=function(){Oe("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToNewUTF8")||(r.stringToNewUTF8=function(){Oe("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setFileTime")||(r.setFileTime=function(){Oe("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscripten_realloc_buffer")||(r.emscripten_realloc_buffer=function(){Oe("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ENV")||(r.ENV=function(){Oe("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ERRNO_CODES")||(r.ERRNO_CODES=function(){Oe("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ERRNO_MESSAGES")||(r.ERRNO_MESSAGES=function(){Oe("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setErrNo")||(r.setErrNo=function(){Oe("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetPton4")||(r.inetPton4=function(){Oe("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetNtop4")||(r.inetNtop4=function(){Oe("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetPton6")||(r.inetPton6=function(){Oe("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetNtop6")||(r.inetNtop6=function(){Oe("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readSockaddr")||(r.readSockaddr=function(){Oe("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeSockaddr")||(r.writeSockaddr=function(){Oe("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"DNS")||(r.DNS=function(){Oe("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getHostByName")||(r.getHostByName=function(){Oe("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GAI_ERRNO_MESSAGES")||(r.GAI_ERRNO_MESSAGES=function(){Oe("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"Protocols")||(r.Protocols=function(){Oe("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"Sockets")||(r.Sockets=function(){Oe("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getRandomDevice")||(r.getRandomDevice=function(){Oe("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"traverseStack")||(r.traverseStack=function(){Oe("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UNWIND_CACHE")||(r.UNWIND_CACHE=function(){Oe("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"withBuiltinMalloc")||(r.withBuiltinMalloc=function(){Oe("'withBuiltinMalloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readAsmConstArgsArray")||(r.readAsmConstArgsArray=function(){Oe("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readAsmConstArgs")||(r.readAsmConstArgs=function(){Oe("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"mainThreadEM_ASM")||(r.mainThreadEM_ASM=function(){Oe("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"jstoi_q")||(r.jstoi_q=function(){Oe("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"jstoi_s")||(r.jstoi_s=function(){Oe("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getExecutableName")||(r.getExecutableName=function(){Oe("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"listenOnce")||(r.listenOnce=function(){Oe("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"autoResumeAudioContext")||(r.autoResumeAudioContext=function(){Oe("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"dynCallLegacy")||(r.dynCallLegacy=function(){Oe("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getDynCaller")||(r.getDynCaller=function(){Oe("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"dynCall")||(r.dynCall=function(){Oe("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"callRuntimeCallbacks")||(r.callRuntimeCallbacks=function(){Oe("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"handleException")||(r.handleException=function(){Oe("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runtimeKeepalivePush")||(r.runtimeKeepalivePush=function(){Oe("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runtimeKeepalivePop")||(r.runtimeKeepalivePop=function(){Oe("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"callUserCallback")||(r.callUserCallback=function(){Oe("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"maybeExit")||(r.maybeExit=function(){Oe("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"safeSetTimeout")||(r.safeSetTimeout=function(){Oe("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"asmjsMangle")||(r.asmjsMangle=function(){Oe("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"asyncLoad")||(r.asyncLoad=function(){Oe("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"alignMemory")||(r.alignMemory=function(){Oe("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"mmapAlloc")||(r.mmapAlloc=function(){Oe("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"reallyNegative")||(r.reallyNegative=function(){Oe("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"unSign")||(r.unSign=function(){Oe("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"reSign")||(r.reSign=function(){Oe("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"formatString")||(r.formatString=function(){Oe("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PATH")||(r.PATH=function(){Oe("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PATH_FS")||(r.PATH_FS=function(){Oe("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SYSCALLS")||(r.SYSCALLS=function(){Oe("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"syscallMmap2")||(r.syscallMmap2=function(){Oe("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"syscallMunmap")||(r.syscallMunmap=function(){Oe("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getSocketFromFD")||(r.getSocketFromFD=function(){Oe("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getSocketAddress")||(r.getSocketAddress=function(){Oe("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"JSEvents")||(r.JSEvents=function(){Oe("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerKeyEventCallback")||(r.registerKeyEventCallback=function(){Oe("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"specialHTMLTargets")||(r.specialHTMLTargets=function(){Oe("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"maybeCStringToJsString")||(r.maybeCStringToJsString=function(){Oe("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"findEventTarget")||(r.findEventTarget=function(){Oe("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"findCanvasEventTarget")||(r.findCanvasEventTarget=function(){Oe("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getBoundingClientRect")||(r.getBoundingClientRect=function(){Oe("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillMouseEventData")||(r.fillMouseEventData=function(){Oe("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerMouseEventCallback")||(r.registerMouseEventCallback=function(){Oe("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerWheelEventCallback")||(r.registerWheelEventCallback=function(){Oe("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerUiEventCallback")||(r.registerUiEventCallback=function(){Oe("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerFocusEventCallback")||(r.registerFocusEventCallback=function(){Oe("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillDeviceOrientationEventData")||(r.fillDeviceOrientationEventData=function(){Oe("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerDeviceOrientationEventCallback")||(r.registerDeviceOrientationEventCallback=function(){Oe("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillDeviceMotionEventData")||(r.fillDeviceMotionEventData=function(){Oe("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerDeviceMotionEventCallback")||(r.registerDeviceMotionEventCallback=function(){Oe("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"screenOrientation")||(r.screenOrientation=function(){Oe("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillOrientationChangeEventData")||(r.fillOrientationChangeEventData=function(){Oe("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerOrientationChangeEventCallback")||(r.registerOrientationChangeEventCallback=function(){Oe("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillFullscreenChangeEventData")||(r.fillFullscreenChangeEventData=function(){Oe("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerFullscreenChangeEventCallback")||(r.registerFullscreenChangeEventCallback=function(){Oe("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerRestoreOldStyle")||(r.registerRestoreOldStyle=function(){Oe("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"hideEverythingExceptGivenElement")||(r.hideEverythingExceptGivenElement=function(){Oe("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"restoreHiddenElements")||(r.restoreHiddenElements=function(){Oe("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setLetterbox")||(r.setLetterbox=function(){Oe("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"currentFullscreenStrategy")||(r.currentFullscreenStrategy=function(){Oe("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"restoreOldWindowedStyle")||(r.restoreOldWindowedStyle=function(){Oe("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"softFullscreenResizeWebGLRenderTarget")||(r.softFullscreenResizeWebGLRenderTarget=function(){Oe("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"doRequestFullscreen")||(r.doRequestFullscreen=function(){Oe("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillPointerlockChangeEventData")||(r.fillPointerlockChangeEventData=function(){Oe("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerPointerlockChangeEventCallback")||(r.registerPointerlockChangeEventCallback=function(){Oe("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerPointerlockErrorEventCallback")||(r.registerPointerlockErrorEventCallback=function(){Oe("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"requestPointerLock")||(r.requestPointerLock=function(){Oe("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillVisibilityChangeEventData")||(r.fillVisibilityChangeEventData=function(){Oe("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerVisibilityChangeEventCallback")||(r.registerVisibilityChangeEventCallback=function(){Oe("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerTouchEventCallback")||(r.registerTouchEventCallback=function(){Oe("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillGamepadEventData")||(r.fillGamepadEventData=function(){Oe("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerGamepadEventCallback")||(r.registerGamepadEventCallback=function(){Oe("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerBeforeUnloadEventCallback")||(r.registerBeforeUnloadEventCallback=function(){Oe("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillBatteryEventData")||(r.fillBatteryEventData=function(){Oe("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"battery")||(r.battery=function(){Oe("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerBatteryEventCallback")||(r.registerBatteryEventCallback=function(){Oe("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setCanvasElementSize")||(r.setCanvasElementSize=function(){Oe("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getCanvasElementSize")||(r.getCanvasElementSize=function(){Oe("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"polyfillSetImmediate")||(r.polyfillSetImmediate=function(){Oe("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"demangle")||(r.demangle=function(){Oe("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"demangleAll")||(r.demangleAll=function(){Oe("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"jsStackTrace")||(r.jsStackTrace=function(){Oe("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackTrace")||(r.stackTrace=function(){Oe("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getEnvStrings")||(r.getEnvStrings=function(){Oe("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"checkWasiClock")||(r.checkWasiClock=function(){Oe("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToI64")||(r.writeI53ToI64=function(){Oe("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToI64Clamped")||(r.writeI53ToI64Clamped=function(){Oe("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToI64Signaling")||(r.writeI53ToI64Signaling=function(){Oe("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToU64Clamped")||(r.writeI53ToU64Clamped=function(){Oe("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToU64Signaling")||(r.writeI53ToU64Signaling=function(){Oe("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readI53FromI64")||(r.readI53FromI64=function(){Oe("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readI53FromU64")||(r.readI53FromU64=function(){Oe("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"convertI32PairToI53")||(r.convertI32PairToI53=function(){Oe("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"convertU32PairToI53")||(r.convertU32PairToI53=function(){Oe("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"uncaughtExceptionCount")||(r.uncaughtExceptionCount=function(){Oe("'uncaughtExceptionCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exceptionLast")||(r.exceptionLast=function(){Oe("'exceptionLast' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exceptionCaught")||(r.exceptionCaught=function(){Oe("'exceptionCaught' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ExceptionInfo")||(r.ExceptionInfo=function(){Oe("'ExceptionInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"CatchInfo")||(r.CatchInfo=function(){Oe("'CatchInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exception_addRef")||(r.exception_addRef=function(){Oe("'exception_addRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exception_decRef")||(r.exception_decRef=function(){Oe("'exception_decRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"Browser")||(r.Browser=function(){Oe("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"funcWrappers")||(r.funcWrappers=function(){Oe("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getFuncWrapper")||(r.getFuncWrapper=function(){Oe("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setMainLoop")||(r.setMainLoop=function(){Oe("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"wget")||(r.wget=function(){Oe("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"FS")||(r.FS=function(){Oe("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"MEMFS")||(r.MEMFS=function(){Oe("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"TTY")||(r.TTY=function(){Oe("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PIPEFS")||(r.PIPEFS=function(){Oe("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SOCKFS")||(r.SOCKFS=function(){Oe("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"_setNetworkCallback")||(r._setNetworkCallback=function(){Oe("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"tempFixedLengthArray")||(r.tempFixedLengthArray=function(){Oe("'tempFixedLengthArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"miniTempWebGLFloatBuffers")||(r.miniTempWebGLFloatBuffers=function(){Oe("'miniTempWebGLFloatBuffers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"heapObjectForWebGLType")||(r.heapObjectForWebGLType=function(){Oe("'heapObjectForWebGLType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"heapAccessShiftForWebGLHeap")||(r.heapAccessShiftForWebGLHeap=function(){Oe("'heapAccessShiftForWebGLHeap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GL")||(r.GL=function(){Oe("'GL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGet")||(r.emscriptenWebGLGet=function(){Oe("'emscriptenWebGLGet' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"computeUnpackAlignedImageSize")||(r.computeUnpackAlignedImageSize=function(){Oe("'computeUnpackAlignedImageSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGetTexPixelData")||(r.emscriptenWebGLGetTexPixelData=function(){Oe("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGetUniform")||(r.emscriptenWebGLGetUniform=function(){Oe("'emscriptenWebGLGetUniform' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"webglGetUniformLocation")||(r.webglGetUniformLocation=function(){Oe("'webglGetUniformLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"webglPrepareUniformLocationsBeforeFirstUse")||(r.webglPrepareUniformLocationsBeforeFirstUse=function(){Oe("'webglPrepareUniformLocationsBeforeFirstUse' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"webglGetLeftBracePos")||(r.webglGetLeftBracePos=function(){Oe("'webglGetLeftBracePos' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGetVertexAttrib")||(r.emscriptenWebGLGetVertexAttrib=function(){Oe("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeGLArray")||(r.writeGLArray=function(){Oe("'writeGLArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"AL")||(r.AL=function(){Oe("'AL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_unicode")||(r.SDL_unicode=function(){Oe("'SDL_unicode' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_ttfContext")||(r.SDL_ttfContext=function(){Oe("'SDL_ttfContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_audio")||(r.SDL_audio=function(){Oe("'SDL_audio' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL")||(r.SDL=function(){Oe("'SDL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_gfx")||(r.SDL_gfx=function(){Oe("'SDL_gfx' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLUT")||(r.GLUT=function(){Oe("'GLUT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"EGL")||(r.EGL=function(){Oe("'EGL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLFW_Window")||(r.GLFW_Window=function(){Oe("'GLFW_Window' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLFW")||(r.GLFW=function(){Oe("'GLFW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLEW")||(r.GLEW=function(){Oe("'GLEW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"IDBStore")||(r.IDBStore=function(){Oe("'IDBStore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runAndAbortIfError")||(r.runAndAbortIfError=function(){Oe("'runAndAbortIfError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_handle_array")||(r.emval_handle_array=function(){Oe("'emval_handle_array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_free_list")||(r.emval_free_list=function(){Oe("'emval_free_list' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_symbols")||(r.emval_symbols=function(){Oe("'emval_symbols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_emval")||(r.init_emval=function(){Oe("'init_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"count_emval_handles")||(r.count_emval_handles=function(){Oe("'count_emval_handles' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"get_first_emval")||(r.get_first_emval=function(){Oe("'get_first_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getStringOrSymbol")||(r.getStringOrSymbol=function(){Oe("'getStringOrSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"requireHandle")||(r.requireHandle=function(){Oe("'requireHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_newers")||(r.emval_newers=function(){Oe("'emval_newers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"craftEmvalAllocator")||(r.craftEmvalAllocator=function(){Oe("'craftEmvalAllocator' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_get_global")||(r.emval_get_global=function(){Oe("'emval_get_global' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_methodCallers")||(r.emval_methodCallers=function(){Oe("'emval_methodCallers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"InternalError")||(r.InternalError=function(){Oe("'InternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"BindingError")||(r.BindingError=function(){Oe("'BindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UnboundTypeError")||(r.UnboundTypeError=function(){Oe("'UnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PureVirtualError")||(r.PureVirtualError=function(){Oe("'PureVirtualError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_embind")||(r.init_embind=function(){Oe("'init_embind' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwInternalError")||(r.throwInternalError=function(){Oe("'throwInternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwBindingError")||(r.throwBindingError=function(){Oe("'throwBindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwUnboundTypeError")||(r.throwUnboundTypeError=function(){Oe("'throwUnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ensureOverloadTable")||(r.ensureOverloadTable=function(){Oe("'ensureOverloadTable' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exposePublicSymbol")||(r.exposePublicSymbol=function(){Oe("'exposePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"replacePublicSymbol")||(r.replacePublicSymbol=function(){Oe("'replacePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"extendError")||(r.extendError=function(){Oe("'extendError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"createNamedFunction")||(r.createNamedFunction=function(){Oe("'createNamedFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registeredInstances")||(r.registeredInstances=function(){Oe("'registeredInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getBasestPointer")||(r.getBasestPointer=function(){Oe("'getBasestPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerInheritedInstance")||(r.registerInheritedInstance=function(){Oe("'registerInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"unregisterInheritedInstance")||(r.unregisterInheritedInstance=function(){Oe("'unregisterInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getInheritedInstance")||(r.getInheritedInstance=function(){Oe("'getInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getInheritedInstanceCount")||(r.getInheritedInstanceCount=function(){Oe("'getInheritedInstanceCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getLiveInheritedInstances")||(r.getLiveInheritedInstances=function(){Oe("'getLiveInheritedInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registeredTypes")||(r.registeredTypes=function(){Oe("'registeredTypes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"awaitingDependencies")||(r.awaitingDependencies=function(){Oe("'awaitingDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"typeDependencies")||(r.typeDependencies=function(){Oe("'typeDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registeredPointers")||(r.registeredPointers=function(){Oe("'registeredPointers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerType")||(r.registerType=function(){Oe("'registerType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"whenDependentTypesAreResolved")||(r.whenDependentTypesAreResolved=function(){Oe("'whenDependentTypesAreResolved' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"embind_charCodes")||(r.embind_charCodes=function(){Oe("'embind_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"embind_init_charCodes")||(r.embind_init_charCodes=function(){Oe("'embind_init_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readLatin1String")||(r.readLatin1String=function(){Oe("'readLatin1String' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getTypeName")||(r.getTypeName=function(){Oe("'getTypeName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"heap32VectorToArray")||(r.heap32VectorToArray=function(){Oe("'heap32VectorToArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"requireRegisteredType")||(r.requireRegisteredType=function(){Oe("'requireRegisteredType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getShiftFromSize")||(r.getShiftFromSize=function(){Oe("'getShiftFromSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"integerReadValueFromPointer")||(r.integerReadValueFromPointer=function(){Oe("'integerReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"enumReadValueFromPointer")||(r.enumReadValueFromPointer=function(){Oe("'enumReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"floatReadValueFromPointer")||(r.floatReadValueFromPointer=function(){Oe("'floatReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"simpleReadValueFromPointer")||(r.simpleReadValueFromPointer=function(){Oe("'simpleReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runDestructors")||(r.runDestructors=function(){Oe("'runDestructors' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"new_")||(r.new_=function(){Oe("'new_' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"craftInvokerFunction")||(r.craftInvokerFunction=function(){Oe("'craftInvokerFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"embind__requireFunction")||(r.embind__requireFunction=function(){Oe("'embind__requireFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"tupleRegistrations")||(r.tupleRegistrations=function(){Oe("'tupleRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"structRegistrations")||(r.structRegistrations=function(){Oe("'structRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"genericPointerToWireType")||(r.genericPointerToWireType=function(){Oe("'genericPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"constNoSmartPtrRawPointerToWireType")||(r.constNoSmartPtrRawPointerToWireType=function(){Oe("'constNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"nonConstNoSmartPtrRawPointerToWireType")||(r.nonConstNoSmartPtrRawPointerToWireType=function(){Oe("'nonConstNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_RegisteredPointer")||(r.init_RegisteredPointer=function(){Oe("'init_RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer")||(r.RegisteredPointer=function(){Oe("'RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_getPointee")||(r.RegisteredPointer_getPointee=function(){Oe("'RegisteredPointer_getPointee' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_destructor")||(r.RegisteredPointer_destructor=function(){Oe("'RegisteredPointer_destructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_deleteObject")||(r.RegisteredPointer_deleteObject=function(){Oe("'RegisteredPointer_deleteObject' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_fromWireType")||(r.RegisteredPointer_fromWireType=function(){Oe("'RegisteredPointer_fromWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runDestructor")||(r.runDestructor=function(){Oe("'runDestructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"releaseClassHandle")||(r.releaseClassHandle=function(){Oe("'releaseClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"finalizationGroup")||(r.finalizationGroup=function(){Oe("'finalizationGroup' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"detachFinalizer_deps")||(r.detachFinalizer_deps=function(){Oe("'detachFinalizer_deps' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"detachFinalizer")||(r.detachFinalizer=function(){Oe("'detachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"attachFinalizer")||(r.attachFinalizer=function(){Oe("'attachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"makeClassHandle")||(r.makeClassHandle=function(){Oe("'makeClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_ClassHandle")||(r.init_ClassHandle=function(){Oe("'init_ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle")||(r.ClassHandle=function(){Oe("'ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_isAliasOf")||(r.ClassHandle_isAliasOf=function(){Oe("'ClassHandle_isAliasOf' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwInstanceAlreadyDeleted")||(r.throwInstanceAlreadyDeleted=function(){Oe("'throwInstanceAlreadyDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_clone")||(r.ClassHandle_clone=function(){Oe("'ClassHandle_clone' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_delete")||(r.ClassHandle_delete=function(){Oe("'ClassHandle_delete' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"deletionQueue")||(r.deletionQueue=function(){Oe("'deletionQueue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_isDeleted")||(r.ClassHandle_isDeleted=function(){Oe("'ClassHandle_isDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_deleteLater")||(r.ClassHandle_deleteLater=function(){Oe("'ClassHandle_deleteLater' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"flushPendingDeletes")||(r.flushPendingDeletes=function(){Oe("'flushPendingDeletes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"delayFunction")||(r.delayFunction=function(){Oe("'delayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setDelayFunction")||(r.setDelayFunction=function(){Oe("'setDelayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredClass")||(r.RegisteredClass=function(){Oe("'RegisteredClass' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"shallowCopyInternalPointer")||(r.shallowCopyInternalPointer=function(){Oe("'shallowCopyInternalPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"downcastPointer")||(r.downcastPointer=function(){Oe("'downcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"upcastPointer")||(r.upcastPointer=function(){Oe("'upcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"validateThis")||(r.validateThis=function(){Oe("'validateThis' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"char_0")||(r.char_0=function(){Oe("'char_0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"char_9")||(r.char_9=function(){Oe("'char_9' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"makeLegalFunctionName")||(r.makeLegalFunctionName=function(){Oe("'makeLegalFunctionName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"warnOnce")||(r.warnOnce=function(){Oe("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackSave")||(r.stackSave=function(){Oe("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackRestore")||(r.stackRestore=function(){Oe("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackAlloc")||(r.stackAlloc=function(){Oe("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"AsciiToString")||(r.AsciiToString=function(){Oe("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToAscii")||(r.stringToAscii=function(){Oe("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF16ToString")||(r.UTF16ToString=function(){Oe("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF16")||(r.stringToUTF16=function(){Oe("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"lengthBytesUTF16")||(r.lengthBytesUTF16=function(){Oe("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF32ToString")||(r.UTF32ToString=function(){Oe("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF32")||(r.stringToUTF32=function(){Oe("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"lengthBytesUTF32")||(r.lengthBytesUTF32=function(){Oe("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"allocateUTF8")||(r.allocateUTF8=function(){Oe("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"allocateUTF8OnStack")||(r.allocateUTF8OnStack=function(){Oe("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),r.writeStackCookie=$,r.checkStackCookie=ee,Object.getOwnPropertyDescriptor(r,"ALLOC_NORMAL")||Object.defineProperty(r,"ALLOC_NORMAL",{configurable:!0,get:function(){Oe("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(r,"ALLOC_STACK")||Object.defineProperty(r,"ALLOC_STACK",{configurable:!0,get:function(){Oe("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Ee=function e(){pr||Er(),pr||(Ee=e)},r.run=Er,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);0{function r(e,r){let t={func:"metrics"};e>=0&&r>=0?(t.sharpness=e,t.glare=r):t.error=e<-.5&&e>-1.5?"Runtime error":e<-1.5&&e>-2.5?"Metrics did not return OK":"Unknown Error Occured",postMessage(t)}function t(e,r){let t={func:"moire"};e>=0&&r>=0?(t.moire=e,t.moireraw=r):t.error=e<-.5&&e>-1.5?"Runtime error":e<-1.5&&e>-2.5?"Moire did not return OK":"Unknown Error Occured",postMessage(t)}function n(r){null!=r&&(e._free(r),r=null)}function i(r){let t=e._malloc(r.length*r.BYTES_PER_ELEMENT);return e.HEAPU8.set(r,t),t}onmessage=a=>{if(a&&a.data)if("metrics"===a.data.func){let t=a.data.data;if(t.imgData&&t.width&&t.height){let a=i(t.imgData);const o=e.ccall("acuantMetrics","number",["number","number","number"],[a,t.width,t.height]);let s=[];for(let r=0;r<2;r++)s[r]=e.getValue(o+4*r,"float");n(a),r(s[0],s[1])}else console.error("missing params"),r(-1,-1)}else if("moire"===a.data.func){let r=a.data.data;if(r.imgData&&r.width&&r.height){let a=i(r.imgData);const o=e.ccall("acuantMoire","number",["number","number","number"],[a,r.width,r.height]);let s=[];for(let r=0;r<2;r++)s[r]=e.getValue(o+4*r,"float");n(a),t(s[0],s[1])}else console.error("missing params"),t(-1,-1)}else console.error("called with no func specified")},postMessage({metricsWorker:"started"})})); \ No newline at end of file diff --git a/public/acuant/11.9.2/AcuantPassiveLiveness.min.js b/public/acuant/11.9.2/AcuantPassiveLiveness.min.js new file mode 100644 index 00000000000..02345fb3037 --- /dev/null +++ b/public/acuant/11.9.2/AcuantPassiveLiveness.min.js @@ -0,0 +1,261 @@ +!function(e){function t(t){for(var n,a,s=t[0],i=t[1],o=0,l=[];oe(),raf:e=>requestAnimationFrame(e),ael:(e,t,n,r)=>e.addEventListener(t,n,r),rel:(e,t,n,r)=>e.removeEventListener(t,n,r),ce:(e,t)=>new CustomEvent(e,t)},l=e=>Promise.resolve(e),c=(()=>{try{return new CSSStyleSheet,"function"==typeof(new CSSStyleSheet).replace}catch(e){}return!1})(),h=(e,t,n,r)=>{n&&n.map(([n,r,a])=>{const s=e,i=p(t,a),o=d(n);u.ael(s,r,i,o),(t.$rmListeners$=t.$rmListeners$||[]).push(()=>u.rel(s,r,i,o))})},p=(e,t)=>n=>{try{256&e.$flags$?e.$lazyInstance$[t](n):(e.$queuedListeners$=e.$queuedListeners$||[]).push([t,n])}catch(e){ae(e)}},d=e=>0!=(2&e),f=new WeakMap,m=e=>{const t=e.$cmpMeta$,n=e.$hostElement$,r=t.$flags$,a=(t.$tagName$,()=>{}),s=((e,t,n,r)=>{let a=g(t),s=oe.get(a);if(e=11===e.nodeType?e:o,s)if("string"==typeof s){e=e.head||e;let t,n=f.get(e);n||f.set(e,n=new Set),n.has(a)||(t=o.createElement("style"),t.innerHTML=s,e.insertBefore(t,e.querySelector("link")),n&&n.add(a))}else e.adoptedStyleSheets.includes(s)||(e.adoptedStyleSheets=[...e.adoptedStyleSheets,s]);return a})(n.shadowRoot?n.shadowRoot:n.getRootNode(),t);10&r&&(n["s-sc"]=s,n.classList.add(s+"-h")),a()},g=(e,t)=>"sc-"+e.$tagName$,y={},b=e=>"object"===(e=typeof e)||"function"===e,v=(e,t,...n)=>{let r=null,a=!1,s=!1,i=[];const o=t=>{for(let n=0;ne[t]).join(" "))}if("function"==typeof e)return e(null===t?{}:t,i,k);const u=x(e,null);return u.$attrs$=t,i.length>0&&(u.$children$=i),u},x=(e,t)=>{const n={$flags$:0,$tag$:e,$text$:t,$elm$:null,$children$:null,$attrs$:null};return n},w={},k={forEach:(e,t)=>e.map(S).forEach(t),map:(e,t)=>e.map(S).map(t).map(I)},S=e=>({vattrs:e.$attrs$,vchildren:e.$children$,vkey:e.$key$,vname:e.$name$,vtag:e.$tag$,vtext:e.$text$}),I=e=>{if("function"==typeof e.vtag){const t=Object.assign({},e.vattrs);return e.vkey&&(t.key=e.vkey),e.vname&&(t.name=e.vname),v(e.vtag,t,...e.vchildren||[])}const t=x(e.vtag,e.vtext);return t.$attrs$=e.vattrs,t.$children$=e.vchildren,t.$key$=e.vkey,t.$name$=e.vname,t},A=(e,t,n,r,a,s)=>{if(n!==r){let o=re(e,t),l=t.toLowerCase();if("class"===t){const t=e.classList,a=N(n),s=N(r);t.remove(...a.filter(e=>e&&!s.includes(e))),t.add(...s.filter(e=>e&&!a.includes(e)))}else if("style"===t){for(const t in n)r&&null!=r[t]||(t.includes("-")?e.style.removeProperty(t):e.style[t]="");for(const t in r)n&&r[t]===n[t]||(t.includes("-")?e.style.setProperty(t,r[t]):e.style[t]=r[t])}else if("ref"===t)r&&r(e);else if(o||"o"!==t[0]||"n"!==t[1]){const i=b(r);if((o||i&&null!==r)&&!a)try{if(e.tagName.includes("-"))e[t]=r;else{let a=null==r?"":r;"list"===t?o=!1:null!=n&&e[t]==a||(e[t]=a)}}catch(e){}null==r||!1===r?!1===r&&""!==e.getAttribute(t)||e.removeAttribute(t):(!o||4&s||a)&&!i&&(r=!0===r?"":r,e.setAttribute(t,r))}else t="-"===t[2]?t.slice(3):re(i,l)?l.slice(2):l[2]+t.slice(3),n&&u.rel(e,t,n,!1),r&&u.ael(e,t,r,!1)}},E=/\s/,N=e=>e?e.split(E):[],C=(e,t,n,r)=>{const a=11===t.$elm$.nodeType&&t.$elm$.host?t.$elm$.host:t.$elm$,s=e&&e.$attrs$||y,i=t.$attrs$||y;for(r in s)r in i||A(a,r,s[r],void 0,n,t.$flags$);for(r in i)A(a,r,s[r],i[r],n,t.$flags$)},T=(e,t,n,a)=>{let s,i,u=t.$children$[n],l=0;if(null!==u.$text$)s=u.$elm$=o.createTextNode(u.$text$);else if(s=u.$elm$=o.createElement(u.$tag$),C(null,u,!1),null!=r&&s["s-si"]!==r&&s.classList.add(s["s-si"]=r),u.$children$)for(l=0;l{let o,u=e;for(u.shadowRoot&&u.tagName===a&&(u=u.shadowRoot);s<=i;++s)r[s]&&(o=T(null,n,s),o&&(r[s].$elm$=o,u.insertBefore(o,t)))},_=(e,t,n,r,a)=>{for(;t<=n;++t)(r=e[t])&&(a=r.$elm$,D(r),a.remove())},F=(e,t)=>e.$tag$===t.$tag$,M=(e,t)=>{const n=t.$elm$=e.$elm$,r=e.$children$,a=t.$children$,s=t.$text$;null===s?(C(e,t,!1),null!==r&&null!==a?((e,t,n,r)=>{let a,s=0,i=0,o=t.length-1,u=t[0],l=t[o],c=r.length-1,h=r[0],p=r[c];for(;s<=o&&i<=c;)null==u?u=t[++s]:null==l?l=t[--o]:null==h?h=r[++i]:null==p?p=r[--c]:F(u,h)?(M(u,h),u=t[++s],h=r[++i]):F(l,p)?(M(l,p),l=t[--o],p=r[--c]):F(u,p)?(M(u,p),e.insertBefore(u.$elm$,l.$elm$.nextSibling),u=t[++s],p=r[--c]):F(l,h)?(M(l,h),e.insertBefore(l.$elm$,u.$elm$),l=t[--o],h=r[++i]):(a=T(t&&t[i],n,i),h=r[++i],a&&u.$elm$.parentNode.insertBefore(a,u.$elm$));s>o?R(e,null==r[c+1]?null:r[c+1].$elm$,n,r,i,c):i>c&&_(t,s,o)})(n,r,t,a):null!==a?(null!==e.$text$&&(n.textContent=""),R(n,null,t,a,0,a.length-1)):null!==r&&_(r,0,r.length-1)):e.$text$!==s&&(n.data=s)},D=e=>{e.$attrs$&&e.$attrs$.ref&&e.$attrs$.ref(null),e.$children$&&e.$children$.map(D)},O=(e,t)=>{const n=e.$hostElement$,s=e.$vnode$||x(null,null),i=(o=t)&&o.$tag$===w?t:v(null,null,t);var o;a=n.tagName,i.$tag$=null,i.$flags$|=4,e.$vnode$=i,i.$elm$=s.$elm$=n.shadowRoot||n,r=n["s-sc"],M(s,i)},L=e=>ee(e).$hostElement$,P=(e,t,n)=>{const r=L(e);return{emit:e=>$(r,t,{bubbles:!!(4&n),composed:!!(2&n),cancelable:!!(1&n),detail:e})}},$=(e,t,n)=>{const r=u.ce(t,n);return e.dispatchEvent(r),r},B=(e,t)=>{t&&!e.$onRenderResolve$&&t["s-p"]&&t["s-p"].push(new Promise(t=>e.$onRenderResolve$=t))},z=(e,t)=>{if(e.$flags$|=16,4&e.$flags$)return void(e.$flags$|=512);B(e,e.$ancestorComponent$);return fe(()=>U(e,t))},U=(e,t)=>{const n=(e.$cmpMeta$.$tagName$,()=>{}),r=e.$lazyInstance$;let a;return t&&(e.$flags$|=256,e.$queuedListeners$&&(e.$queuedListeners$.map(([e,t])=>H(r,e,t)),e.$queuedListeners$=null),a=H(r,"componentWillLoad")),n(),q(a,()=>W(e,r,t))},W=async(e,t,n)=>{const r=e.$hostElement$,a=(e.$cmpMeta$.$tagName$,()=>{}),s=r["s-rc"];n&&m(e);const i=(e.$cmpMeta$.$tagName$,()=>{});V(e,t),s&&(s.map(e=>e()),r["s-rc"]=void 0),i(),a();{const t=r["s-p"],n=()=>j(e);0===t.length?n():(Promise.all(t).then(n),e.$flags$|=4,t.length=0)}},V=(e,t,n)=>{try{t=t.render(),e.$flags$&=-17,e.$flags$|=2,O(e,t)}catch(t){ae(t,e.$hostElement$)}return null},j=e=>{e.$cmpMeta$.$tagName$;const t=e.$hostElement$,n=()=>{},r=e.$lazyInstance$,a=e.$ancestorComponent$;64&e.$flags$?(H(r,"componentDidUpdate"),n()):(e.$flags$|=64,K(t),H(r,"componentDidLoad"),n(),e.$onReadyResolve$(t),a||G()),e.$onRenderResolve$&&(e.$onRenderResolve$(),e.$onRenderResolve$=void 0),512&e.$flags$&&de(()=>z(e,!1)),e.$flags$&=-517},G=e=>{K(o.documentElement),de(()=>$(i,"appload",{detail:{namespace:"fas-web-ui-component-camera"}}))},H=(e,t,n)=>{if(e&&e[t])try{return e[t](n)}catch(e){ae(e)}},q=(e,t)=>e&&e.then?e.then(t):t(),K=e=>e.classList.add("hydrated"),Y=(e,t,n,r)=>{const a=ee(e),s=a.$instanceValues$.get(t),i=a.$flags$,o=a.$lazyInstance$;var u,l;u=n,l=r.$members$[t][0],n=null==u||b(u)?u:4&l?"false"!==u&&(""===u||!!u):2&l?parseFloat(u):1&l?String(u):u,8&i&&void 0!==s||n===s||(a.$instanceValues$.set(t,n),o&&2==(18&i)&&z(a,!1))},X=(e,t,n)=>{if(t.$members$){const r=Object.entries(t.$members$),a=e.prototype;if(r.map(([e,[r]])=>{(31&r||2&n&&32&r)&&Object.defineProperty(a,e,{get(){return t=e,ee(this).$instanceValues$.get(t);var t},set(n){Y(this,e,n,t)},configurable:!0,enumerable:!0})}),1&n){const t=new Map;a.attributeChangedCallback=function(e,n,r){u.jmp(()=>{const n=t.get(e);if(this.hasOwnProperty(n))r=this[n],delete this[n];else if(a.hasOwnProperty(n)&&"number"==typeof this[n]&&this[n]==r)return;this[n]=(null!==r||"boolean"!=typeof this[n])&&r})},e.observedAttributes=r.filter(([e,t])=>15&t[0]).map(([e,n])=>{const r=n[1]||e;return t.set(r,e),r})}}return e},Q=async(e,t,n,r,a)=>{if(0==(32&t.$flags$)){{if(t.$flags$|=32,(a=ie(n)).then){const e=()=>{};a=await a,e()}a.isProxied||(X(a,n,2),a.isProxied=!0);const e=(n.$tagName$,()=>{});t.$flags$|=8;try{new a(t)}catch(e){ae(e)}t.$flags$&=-9,e()}if(a.style){let e=a.style;const t=g(n);if(!oe.has(t)){const r=(n.$tagName$,()=>{});((e,t,n)=>{let r=oe.get(e);c&&n?(r=r||new CSSStyleSheet,r.replace(t)):r=t,oe.set(e,r)})(t,e,!!(1&n.$flags$)),r()}}}const s=t.$ancestorComponent$,i=()=>z(t,!0);s&&s["s-rc"]?s["s-rc"].push(i):i()},Z=(e,t={})=>{const n=()=>{},r=[],a=t.exclude||[],s=i.customElements,l=o.head,c=l.querySelector("meta[charset]"),p=o.createElement("style"),d=[];let f,m=!0;Object.assign(u,t),u.$resourcesUrl$=new URL(t.resourcesUrl||"./",o.baseURI).href,e.map(e=>{e[1].map(t=>{const n={$flags$:t[0],$tagName$:t[1],$members$:t[2],$listeners$:t[3]};n.$members$=t[2],n.$listeners$=t[3];const i=n.$tagName$,o=class extends HTMLElement{constructor(e){super(e),ne(e=this,n),1&n.$flags$&&e.attachShadow({mode:"open"})}connectedCallback(){f&&(clearTimeout(f),f=null),m?d.push(this):u.jmp(()=>(e=>{if(0==(1&u.$flags$)){const t=ee(e),n=t.$cmpMeta$,r=(n.$tagName$,()=>{});if(1&t.$flags$)h(e,t,n.$listeners$);else{t.$flags$|=1;{let n=e;for(;n=n.parentNode||n.host;)if(n["s-p"]){B(t,t.$ancestorComponent$=n);break}}n.$members$&&Object.entries(n.$members$).map(([t,[n]])=>{if(31&n&&e.hasOwnProperty(t)){const n=e[t];delete e[t],e[t]=n}}),Q(0,t,n)}r()}})(this))}disconnectedCallback(){u.jmp(()=>(e=>{if(0==(1&u.$flags$)){const t=ee(e);t.$rmListeners$&&(t.$rmListeners$.map(e=>e()),t.$rmListeners$=void 0)}})(this))}componentOnReady(){return ee(this).$onReadyPromise$}};n.$lazyBundleId$=e[0],a.includes(i)||s.get(i)||(r.push(i),s.define(i,X(o,n,1)))})}),p.innerHTML=r+"{visibility:hidden}.hydrated{visibility:inherit}",p.setAttribute("data-styles",""),l.insertBefore(p,c?c.nextSibling:l.firstChild),m=!1,d.length?d.map(e=>e.connectedCallback()):u.jmp(()=>f=setTimeout(G,30)),n()},J=new WeakMap,ee=e=>J.get(e),te=(e,t)=>J.set(t.$lazyInstance$=e,t),ne=(e,t)=>{const n={$flags$:0,$hostElement$:e,$cmpMeta$:t,$instanceValues$:new Map};return n.$onReadyPromise$=new Promise(e=>n.$onReadyResolve$=e),e["s-p"]=[],e["s-rc"]=[],h(e,n,t.$listeners$),J.set(e,n)},re=(e,t)=>t in e,ae=(e,t)=>(0,console.error)(e,t),se=new Map,ie=(e,t,r)=>{const a=e.$tagName$.replace(/-/g,"_"),s=e.$lazyBundleId$,i=se.get(s);return i?i[a]:n(236)(`./${s}.entry.js`).then(e=>(se.set(s,e),e[a]),ae)},oe=new Map,ue=[],le=[],ce=(e,t)=>n=>{e.push(n),s||(s=!0,t&&4&u.$flags$?de(pe):u.raf(pe))},he=e=>{for(let t=0;t{he(ue),he(le),(s=ue.length>0)&&u.raf(pe)},de=e=>l().then(e),fe=ce(le,!0)},function(e,t,n){(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||function(){return this}()||Function("return this")()}).call(this,n(33))},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(52),a=Function.prototype,s=a.call,i=r&&a.bind.bind(s,s);e.exports=r?i:function(e){return function(){return s.apply(e,arguments)}}},function(e,t,n){var r=n(1),a=n(42).f,s=n(23),i=n(17),o=n(69),u=n(93),l=n(95);e.exports=function(e,t){var n,c,h,p,d,f=e.target,m=e.global,g=e.stat;if(n=m?r:g?r[f]||o(f,{}):(r[f]||{}).prototype)for(c in t){if(p=t[c],h=e.dontCallGetSet?(d=a(n,c))&&d.value:n[c],!l(m?c:f+(g?".":"#")+c,e.forced)&&void 0!==h){if(typeof p==typeof h)continue;u(p,h)}(e.sham||h&&h.sham)&&s(p,"sham",!0),i(n,c,p,e)}}},function(e,t,n){"use strict";var r,a,s,i=n(112),o=n(9),u=n(1),l=n(6),c=n(12),h=n(10),p=n(24),d=n(28),f=n(23),m=n(17),g=n(11).f,y=n(27),b=n(51),v=n(31),x=n(7),w=n(54),k=n(21),S=k.enforce,I=k.get,A=u.Int8Array,E=A&&A.prototype,N=u.Uint8ClampedArray,C=N&&N.prototype,T=A&&b(A),R=E&&b(E),_=Object.prototype,F=u.TypeError,M=x("toStringTag"),D=w("TYPED_ARRAY_TAG"),O=i&&!!v&&"Opera"!==p(u.opera),L=!1,P={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},$={BigInt64Array:8,BigUint64Array:8},B=function(e){var t=b(e);if(c(t)){var n=I(t);return n&&h(n,"TypedArrayConstructor")?n.TypedArrayConstructor:B(t)}},z=function(e){if(!c(e))return!1;var t=p(e);return h(P,t)||h($,t)};for(r in P)(s=(a=u[r])&&a.prototype)?S(s).TypedArrayConstructor=a:O=!1;for(r in $)(s=(a=u[r])&&a.prototype)&&(S(s).TypedArrayConstructor=a);if((!O||!l(T)||T===Function.prototype)&&(T=function(){throw F("Incorrect invocation")},O))for(r in P)u[r]&&v(u[r],T);if((!O||!R||R===_)&&(R=T.prototype,O))for(r in P)u[r]&&v(u[r].prototype,R);if(O&&b(C)!==R&&v(C,R),o&&!h(R,M))for(r in L=!0,g(R,M,{get:function(){return c(this)?this[D]:void 0}}),P)u[r]&&f(u[r],D,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:O,TYPED_ARRAY_TAG:L&&D,aTypedArray:function(e){if(z(e))return e;throw F("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!v||y(T,e)))return e;throw F(d(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(o){if(n)for(var a in P){var s=u[a];if(s&&h(s.prototype,e))try{delete s.prototype[e]}catch(n){try{s.prototype[e]=t}catch(e){}}}R[e]&&!n||m(R,e,n?t:O&&E[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,a;if(o){if(v){if(n)for(r in P)if((a=u[r])&&h(a,e))try{delete a[e]}catch(e){}if(T[e]&&!n)return;try{return m(T,e,n?t:O&&T[e]||t)}catch(e){}}for(r in P)!(a=u[r])||a[e]&&!n||m(a,e,t)}},getTypedArrayConstructor:B,isView:function(e){if(!c(e))return!1;var t=p(e);return"DataView"===t||h(P,t)||h($,t)},isTypedArray:z,TypedArray:T,TypedArrayPrototype:R}},function(e,t,n){var r=n(87),a=r.all;e.exports=r.IS_HTMLDDA?function(e){return"function"==typeof e||e===a}:function(e){return"function"==typeof e}},function(e,t,n){var r=n(1),a=n(34),s=n(10),i=n(54),o=n(35),u=n(88),l=a("wks"),c=r.Symbol,h=c&&c.for,p=u?c:c&&c.withoutSetter||i;e.exports=function(e){if(!s(l,e)||!o&&"string"!=typeof l[e]){var t="Symbol."+e;o&&s(c,e)?l[e]=c[e]:l[e]=u&&h?h(t):p(t)}return l[e]}},function(e,t,n){var r=n(52),a=Function.prototype.call;e.exports=r?a.bind(a):function(){return a.apply(a,arguments)}},function(e,t,n){var r=n(2);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t,n){var r=n(3),a=n(16),s=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return s(a(e),t)}},function(e,t,n){var r=n(9),a=n(89),s=n(90),i=n(13),o=n(40),u=TypeError,l=Object.defineProperty,c=Object.getOwnPropertyDescriptor;t.f=r?s?function(e,t,n){if(i(e),t=o(t),i(n),"function"==typeof e&&"prototype"===t&&"value"in n&&"writable"in n&&!n.writable){var r=c(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:"configurable"in n?n.configurable:r.configurable,enumerable:"enumerable"in n?n.enumerable:r.enumerable,writable:!1})}return l(e,t,n)}:l:function(e,t,n){if(i(e),t=o(t),i(n),a)try{return l(e,t,n)}catch(e){}if("get"in n||"set"in n)throw u("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(6),a=n(87),s=a.all;e.exports=a.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:r(e)||e===s}:function(e){return"object"==typeof e?null!==e:r(e)}},function(e,t,n){var r=n(12),a=String,s=TypeError;e.exports=function(e){if(r(e))return e;throw s(a(e)+" is not an object")}},function(e,t,n){var r=n(1),a=n(6),s=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?s(r[e]):r[e]&&r[e][t]}},function(e,t,n){var r=n(38);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(70),a=Object;e.exports=function(e){return a(r(e))}},function(e,t,n){var r=n(6),a=n(11),s=n(129),i=n(69);e.exports=function(e,t,n,o){o||(o={});var u=o.enumerable,l=void 0!==o.name?o.name:t;if(r(n)&&s(n,l,o),o.global)u?e[t]=n:i(t,n);else{try{o.unsafe?e[t]&&(u=!0):delete e[t]}catch(e){}u?e[t]=n:a.f(e,t,{value:n,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}},function(e,t,n){var r=n(45),a=n(3),s=n(73),i=n(16),o=n(15),u=n(159),l=a([].push),c=function(e){var t=1==e,n=2==e,a=3==e,c=4==e,h=6==e,p=7==e,d=5==e||h;return function(f,m,g,y){for(var b,v,x=i(f),w=s(x),k=r(m,g),S=o(w),I=0,A=y||u,E=t?A(f,S):n||p?A(f,0):void 0;S>I;I++)if((d||I in w)&&(v=k(b=w[I],I,x),e))if(t)E[I]=v;else if(v)switch(e){case 3:return!0;case 5:return b;case 6:return I;case 2:l(E,b)}else switch(e){case 4:return!1;case 7:l(E,b)}return h?-1:a||c?c:E}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},function(e,t){e.exports=!1},function(e,t,n){var r=n(6),a=n(28),s=TypeError;e.exports=function(e){if(r(e))return e;throw s(a(e)+" is not a function")}},function(e,t,n){var r,a,s,i=n(130),o=n(1),u=n(12),l=n(23),c=n(10),h=n(68),p=n(58),d=n(59),f=o.TypeError,m=o.WeakMap;if(i||h.state){var g=h.state||(h.state=new m);g.get=g.get,g.has=g.has,g.set=g.set,r=function(e,t){if(g.has(e))throw f("Object already initialized");return t.facade=e,g.set(e,t),t},a=function(e){return g.get(e)||{}},s=function(e){return g.has(e)}}else{var y=p("state");d[y]=!0,r=function(e,t){if(c(e,y))throw f("Object already initialized");return t.facade=e,l(e,y,t),t},a=function(e){return c(e,y)?e[y]:{}},s=function(e){return c(e,y)}}e.exports={set:r,get:a,has:s,enforce:function(e){return s(e)?a(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!u(t)||(n=a(t)).type!==e)throw f("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){var r=n(73),a=n(70);e.exports=function(e){return r(a(e))}},function(e,t,n){var r=n(9),a=n(11),s=n(36);e.exports=r?function(e,t,n){return a.f(e,t,s(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(67),a=n(6),s=n(37),i=n(7)("toStringTag"),o=Object,u="Arguments"==s(function(){return arguments}());e.exports=r?s:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=o(e),i))?n:u?s(t):"Object"==(r=s(t))&&a(t.callee)?"Arguments":r}},function(e,t,n){var r=n(11).f,a=n(10),s=n(7)("toStringTag");e.exports=function(e,t,n){e&&!n&&(e=e.prototype),e&&!a(e,s)&&r(e,s,{configurable:!0,value:t})}},function(e,t,n){var r=n(14);e.exports=r("navigator","userAgent")||""},function(e,t,n){var r=n(3);e.exports=r({}.isPrototypeOf)},function(e,t){var n=String;e.exports=function(e){try{return n(e)}catch(e){return"Object"}}},function(e,t,n){var r=n(30),a=Math.max,s=Math.min;e.exports=function(e,t){var n=r(e);return n<0?a(n+t,0):s(n,t)}},function(e,t,n){var r=n(135);e.exports=function(e){var t=+e;return t!=t||0===t?0:r(t)}},function(e,t,n){var r=n(3),a=n(13),s=n(136);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=r(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return a(n),s(r),t?e(n,r):n.__proto__=r,n}}():void 0)},function(e,t,n){var r,a=n(13),s=n(106),i=n(74),o=n(59),u=n(98),l=n(56),c=n(58),h=c("IE_PROTO"),p=function(){},d=function(e){return"